portainer-mcp/README_MERGED.md
Adolfo Delorenzo e27251b922 feat: add three new Portainer MCP servers
- Add portainer-environments server for environment/endpoint management
- Add portainer-docker server for Docker and Swarm container operations
- Add merged portainer server combining core + teams functionality
- Fix JSON schema issues and API compatibility
- Add comprehensive documentation for each server
- Add .gitignore and .env.example for security

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 13:00:05 -03:00

133 lines
3.7 KiB
Markdown

# Portainer Unified MCP Server
This MCP server combines **portainer-core** and **portainer-teams** functionality into a single unified server, providing comprehensive user, team, and RBAC management for Portainer Business Edition.
## Features
### User Management (from portainer-core)
- **Authentication & Session Management**
- Test connection to Portainer
- API token validation
- **User CRUD Operations**
- List all users
- Create new users with role assignment
- Update user passwords and roles
- Delete users
### Teams Management (from portainer-teams)
- **Team Operations**
- List all teams
- Create new teams with optional leaders
- Delete teams
- **Team Membership**
- Add users to teams
- Remove users from teams
- Bulk membership operations
### RBAC Management
- **Role Management**
- List available roles with descriptions
- View role priorities and permissions
- **Resource Access Control**
- List all resource controls
- Create resource-specific access controls
- Configure public/private access
- Set user and team permissions
### Settings Management
- **System Configuration**
- Get current Portainer settings
- Update security settings
- Configure user permissions
## Installation
1. Install Python dependencies:
```bash
cd /Users/adelorenzo/repos/portainer-mcp
.venv/bin/pip install mcp httpx
```
2. Configure in Claude Desktop (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"portainer": {
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/merged_mcp_server.py"],
"env": {
"PORTAINER_URL": "https://your-portainer-instance.com",
"PORTAINER_API_KEY": "your-api-key",
"MCP_MODE": "true"
}
}
}
}
```
3. Restart Claude Desktop
## Available Tools
### User Management
- `test_connection` - Test connection to Portainer
- `get_users` - List all users with their roles
- `create_user` - Create a new user (username, password, role)
- `update_user` - Update user password or role
- `delete_user` - Delete a user by ID
### Teams Management
- `get_teams` - List all teams
- `create_team` - Create a new team with optional leaders
- `add_team_members` - Add users to a team
- `remove_team_members` - Remove users from a team
- `delete_team` - Delete a team by ID
### RBAC Management
- `get_roles` - List available roles and their descriptions
- `get_resource_controls` - List all resource access controls
- `create_resource_control` - Create access control for a resource
### Settings
- `get_settings` - Get current Portainer settings
- `update_settings` - Update Portainer security settings
## Role Types
The server supports three role types:
- **Administrator** - Full system access
- **StandardUser** - Regular user access
- **ReadOnlyUser** - Read-only access
## Example Usage
### Create a user and add to team:
```
1. Use "create_user" with username: "john", password: "secure123", role: "StandardUser"
2. Use "get_users" to find John's user ID
3. Use "create_team" with name: "DevOps Team"
4. Use "get_teams" to find the team ID
5. Use "add_team_members" with the team ID and John's user ID
```
### Set up resource access control:
```
1. Use "create_resource_control" with:
- resource_id: "container_id_here"
- resource_type: "container"
- teams: [{"team_id": 1, "access_level": "read"}]
- administrators_only: false
```
## Compatibility
- Supports both old (integer) and new (string) role formats
- Works with Portainer Business Edition 2.30.x+
- Handles API version differences automatically
## Security Notes
- API key is required for all operations
- HTTPS is recommended (SSL verification disabled for development)
- Tokens should be rotated regularly
- All operations respect Portainer's RBAC system