portainer-mcp/README_ENVIRONMENTS.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

196 lines
5.6 KiB
Markdown

# Portainer Environments MCP Server
This MCP server provides comprehensive environment and endpoint management functionality for Portainer Business Edition.
## Features
### Environment Management
- **List and View Environments**
- List all environments with status and type
- Get detailed information about specific environments
- View environment statistics and Docker/Kubernetes info
- **Create Environments**
- Docker environments (local and remote)
- Kubernetes clusters
- Docker Swarm clusters
- Edge Agent environments
- Support for TLS configuration
- **Update and Delete**
- Update environment settings and URLs
- Change group assignments
- Delete environments safely
### Environment Organization
- **Environment Groups**
- Create and manage environment groups
- Organize environments by purpose or location
- Update group names and descriptions
- Delete unused groups
- **Tags Management**
- Create tags for categorizing environments
- List all available tags
- Delete unused tags
- Assign multiple tags to environments
### Access Control
- **Team Associations**
- Associate environments with teams
- Set read/write access levels
- Bulk update team permissions
### Edge Computing
- **Edge Agent Deployment**
- Generate Edge keys for remote deployments
- Get deployment scripts automatically
- Support for Edge environment groups
## Installation
1. Ensure Python dependencies are installed:
```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-environments": {
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/portainer_environments_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
### Environment Operations
- `list_environments` - List all environments with pagination support
- `get_environment` - Get detailed information about an environment
- `create_docker_environment` - Create a new Docker environment
- `create_kubernetes_environment` - Create a new Kubernetes environment
- `update_environment` - Update environment settings
- `delete_environment` - Delete an environment
- `get_environment_status` - Get real-time status and statistics
### Access Control
- `associate_environment` - Associate environments with teams and set permissions
### Organization
- `list_environment_groups` - List all environment groups
- `create_environment_group` - Create a new environment group
- `update_environment_group` - Update group information
- `delete_environment_group` - Delete an environment group
### Tags
- `list_tags` - List all available tags
- `create_tag` - Create a new tag
- `delete_tag` - Delete a tag
### Edge Computing
- `generate_edge_key` - Generate Edge agent deployment script
## Environment Types
The server supports these environment types:
- **Docker** - Standard Docker environments
- **Docker Swarm** - Swarm cluster management
- **Kubernetes** - Kubernetes cluster management
- **Azure ACI** - Azure Container Instances
- **Edge Agent** - Remote Edge deployments
## Example Usage
### Create a Docker environment:
```
Use "create_docker_environment" with:
- name: "Production Docker"
- url: "tcp://docker-prod.example.com:2375"
- public_url: "https://docker-prod.example.com"
- tls: true
- tags: ["production", "docker"]
```
### Create a Kubernetes environment:
```
Use "create_kubernetes_environment" with:
- name: "K8s Production"
- url: "https://k8s-api.example.com:6443"
- bearer_token: "your-bearer-token"
- tls_skip_verify: false
```
### Deploy an Edge agent:
```
1. Use "generate_edge_key" with name: "Remote Site 1"
2. Copy the generated deployment command
3. Run the command on the remote Docker host
```
### Organize environments:
```
1. Use "create_environment_group" with name: "Production Servers"
2. Use "create_tag" with name: "critical"
3. Use "update_environment" to assign the group and tags
```
## API Compatibility
This server handles both old and new Portainer API endpoints:
- New API (2.19.x+): `/environments`
- Old API (pre-2.19): `/endpoints`
The server automatically tries both endpoints for compatibility.
## Security Notes
- API key is required for all operations
- HTTPS is recommended (SSL verification disabled for development)
- Team associations respect Portainer's RBAC system
- Edge keys should be kept secure
## Troubleshooting
### Common Issues
**Environment shows as "down":**
- Check network connectivity to the Docker/Kubernetes API
- Verify TLS certificates if using secure connections
- Ensure the API endpoint URL is correct
**Cannot create environment:**
- Verify the URL format (tcp:// for Docker, https:// for Kubernetes)
- Check if the environment name already exists
- Ensure proper authentication credentials
**Edge agent not connecting:**
- Verify the Edge key is correct
- Check firewall rules for outbound connections
- Ensure Docker is running on the Edge device
## Docker URL Formats
- **Local Docker:** `unix:///var/run/docker.sock`
- **Remote Docker (TCP):** `tcp://hostname:2375`
- **Remote Docker (TLS):** `tcp://hostname:2376`
- **Docker Desktop (Mac):** `unix:///$HOME/.docker/run/docker.sock`
- **Docker Desktop (Windows):** `npipe:////./pipe/docker_engine`
## Kubernetes Authentication
For Kubernetes environments, you can use:
- **Bearer Token:** Service account token
- **Client Certificate:** Upload certificate files (in UI)
- **Kubeconfig:** Import kubeconfig file (in UI)