README
¶
PipeOps MCP Server
Model Context Protocol (MCP) server for interacting with PipeOps platform.
Features
- Projects: List, get, create, update, and delete projects
- Servers: Manage servers and deployments
- Environments: Handle environment configurations
- Teams: Team and workspace management
- Billing: View billing information and usage
- Add-ons: Manage add-ons and integrations
- Users: User profile and authentication
- Cloud Providers: Configure cloud provider integrations
Installation
Hosted MCP (recommended for customers)
Customers do not install a Go binary. Add the hosted endpoint to any remote MCP client:
https://mcp.pipeops.app/mcp
When the hosted service runs with PIPEOPS_OAUTH_MODE=bridge, OAuth-capable
clients discover the authorization server automatically. The PipeOps consent
flow opens the PipeOps Console, where the customer signs in with the same PKCE
OAuth flow as pipeops login. The bridge returns short-lived, scoped OAuth
credentials to the MCP client. The Console access and refresh credentials are
encrypted at rest and are never returned to the client.
Clients that support static request headers can continue to connect directly:
export PIPEOPS_TOKEN="sat_your_token_here"
codex mcp add pipeops \
--url https://mcp.pipeops.app/mcp \
--bearer-token-env-var PIPEOPS_TOKEN
codex mcp get pipeops
See docs/REMOTE_AUTH.md for deployment modes, OAuth
endpoints, storage requirements, and acceptance checks.
Local binary
go install github.com/PipeOpsHQ/pipeops-mcp/cmd/pipeops-mcp-server@latest
The binary is installed at $(go env GOPATH)/bin/pipeops-mcp-server.
To install from source instead:
git clone https://github.com/PipeOpsHQ/pipeops-mcp.git
cd pipeops-mcp
go install ./cmd/pipeops-mcp-server
Configuration
The server requires authentication via either:
- Service / API Token (recommended): Set
PIPEOPS_TOKENto a dedicated workspace service token (sat_…) withapi:readand only the additional scopes it needs (Integrations → Service Tokens) - Email/Password: Set
PIPEOPS_EMAILandPIPEOPS_PASSWORDenvironment variables
Optional configuration:
PIPEOPS_BASE_URL: PipeOps API base URL (default: https://api.pipeops.io)
Hosted transport configuration:
PIPEOPS_TRANSPORT=httpenables Streamable HTTP (default remainsstdio)PIPEOPS_HTTP_ADDR=:8080controls the listen addressPIPEOPS_MCP_PUBLIC_URL=https://mcp.pipeops.app/mcpsets the OAuth resource URLPIPEOPS_OAUTH_MODE=bearer|bridge|externalselects the hosted authentication modePIPEOPS_OAUTH_STORE=sqlite|redisselects bridge persistence (defaults tosqlite)PIPEOPS_OAUTH_SQLITE_PATHsets the SQLite file (default/data/oauth/pipeops-mcp-oauth.db; mount a PVC at/dataso sessions survive restarts)PIPEOPS_OAUTH_REDIS_URLis required only whenPIPEOPS_OAUTH_STORE=redisPIPEOPS_OAUTH_ENCRYPTION_KEYis required inbridgemode and must be a base64-encoded 32-byte keyPIPEOPS_OAUTH_ISSUERoptionally overrides the bridge issuer and is required inexternalmodePIPEOPS_MCP_SCOPESoptionally overrides the comma-separated scopes (defaults toapi:read,api:write)PIPEOPS_CONSOLE_OAUTH_URLoptionally overrides the Console URL (defaults tohttps://console.pipeops.io)PIPEOPS_CONSOLE_OAUTH_CLIENT_IDoptionally overrides the Console public OAuth client (defaults topipeops_public_client)PIPEOPS_CONSOLE_OAUTH_SCOPESoptionally overrides the Console scopes (defaults toopenid,profile,email)
Generate the bridge encryption key with openssl rand -base64 32. The image
runs as root and pre-creates /data/oauth (default SQLite path). Mount a PVC
at /data so OAuth sessions survive pod restarts; no fsGroup/UID remapping
is required for root-owned volumes. Use Redis when multiple MCP replicas need
shared state. Do not set a shared PIPEOPS_TOKEN on the hosted service; each
customer authorizes their own PipeOps Console session.
Usage
With Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"pipeops": {
"command": "pipeops-mcp-server",
"env": {
"PIPEOPS_TOKEN": "your-api-token-here"
}
}
}
}
With Codex
Set your workspace service token and register the installed server:
export PIPEOPS_TOKEN="sat_your_token_here"
codex mcp add pipeops \
--env PIPEOPS_TOKEN="$PIPEOPS_TOKEN" \
-- "$(go env GOPATH)/bin/pipeops-mcp-server"
codex mcp list
Start a new Codex task after registering the server so its tools are loaded.
Standalone
export PIPEOPS_TOKEN="your-api-token"
pipeops-mcp-server
Available Tools
Projects
list_projects- List all projects with optional filteringget_project- Get detailed project informationcreate_project- Create a new projectupdate_project- Update project configurationdelete_project- Delete a projectdeploy_project- Trigger project deploymentrestart_project- Restart a projectstop_project- Stop a projectget_project_logs- Retrieve project runtime logsget_project_build_logs- Retrieve deployment build logs (Firebasepipeops-build-logsvia control plane)get_project_env_variables- Retrieve project environment variablesupdate_project_env_variables- Update project environment variablesupdate_project_deploy_settings- Update deploy/source-control settings (prefer-client thin body)update_project_security_policy- Update image-scan security policy (prefer-client partial update)deploy_project_from_image- Create and deploy a project from a pre-built container image
BYOI & Registries
create_external_registry- Create an external container registry configurationlist_external_registries- List external registries for a workspaceget_external_registry- Get external registry detailsdelete_external_registry- Delete an external registry configurationlist_external_registry_images- List repositories available through an external registrylist_external_registry_tags- List image tags available through an external registrysearch_public_registry_images- Search public Docker Hub imageslist_public_registry_tags- List tags for a public Docker Hub image
Servers
list_servers- List all serversget_server- Get server detailsget_cluster_connection- Get cluster connection information (server_idalso works as an alias)get_cluster_cost_allocation- Get cluster compute cost allocation (server_idalso works as an alias)
Cloud Providers
list_cloud_provider_regions- List available regions for a cloud providerlist_cloud_provider_instance_categories- List available instance categories for a cloud providerlist_cloud_provider_instance_types- List available instance types for a region and instance classlist_cloud_provider_server_templates- List recommended server templates for a cloud provider
Environments
list_environments- List environment configurationsget_environment- Get environment detailscreate_environment- Create a new environmentupdate_environment- Update environment metadatadelete_environment- Delete an environmentset_environment_variables- Set environment variables for an environment
Teams & Workspaces
list_teams- List teamscreate_team- Create a teamupdate_team- Update a teamget_team- Get team detailsinvite_team_member- Invite a team memberlist_team_members- List members of a teamremove_team_member- Remove a team memberupdate_team_member_role- Update a team member rolelist_workspaces- List workspacescreate_workspace- Create a workspaceupdate_workspace- Update a workspaceget_workspace- Get workspace detailsdelete_workspace- Delete a workspaceset_workspace_billing_email- Set workspace billing email
Billing
get_billing_info- Get billing informationlist_billing_plans- List available billing planssubscribe_to_plan- Subscribe to a billing plancancel_subscription- Cancel a subscriptionadd_billing_card- Add a billing carddelete_billing_card- Delete a billing cardcreate_workspace_checkout- Create workspace billing or checkout configurationstart_trial- Start a billing trialget_billing_portal_url- Get the billing portal URLget_balance- Get current account balancelist_workspace_cards- List current workspace billing cardsget_active_card- Get the active billing cardlist_subscriptions- List subscriptionsget_subscription- Get subscription detailslist_invoices- List invoices
Security
list_service_account_tokens- List service account tokensget_service_account_token- Get service account token detailscreate_service_account_token- Create a service account tokenupdate_service_account_token- Update a service account tokenrevoke_service_account_token- Revoke a service account token
Users
get_current_user- Get current user profile
Add-ons
list_addons- List available add-onsget_addon- Get add-on detailsdeploy_addon- Deploy an add-on to a project or serverlist_addon_deployments- List add-on deploymentsget_addon_deployment- Get add-on deployment detailsget_addon_deployment_session- Get add-on deployment session detailsview_addon_deployment_configs- View add-on deployment configadd_addon_domain- Add a domain to an add-onlist_addon_categories- List add-on categoriesget_my_addon_submissions- List your add-on submissions
Examples
List Projects
{
"name": "list_projects",
"arguments": {}
}
Deploy a Project
{
"name": "deploy_project",
"arguments": {
"project_id": "proj_abc123",
"workspace_id": "workspace_abc123",
"no_cache": false
}
}
Update Project Environment Variables
{
"name": "update_project_env_variables",
"arguments": {
"project_id": "proj_abc123",
"env_variables": [
{
"key": "DATABASE_URL",
"value": "postgres://..."
},
{
"key": "API_KEY",
"value": "secret123"
}
]
}
}
Deploy From an Image
{
"name": "deploy_project_from_image",
"arguments": {
"name": "nginx-demo",
"container_image": "docker.io/library/nginx",
"image_tag": "latest",
"port": 80,
"vcpu": 0.5,
"memory": {
"value": 512,
"unit": "MB"
},
"server_id": "cluster_abc123",
"environment_id": "env_abc123",
"workspace_id": "ws_abc123"
}
}
Deploy an Add-on
{
"name": "deploy_addon",
"arguments": {
"addon_id": "addon_abc123",
"project_id": "proj_abc123",
"config": {
"plan": "starter"
}
}
}
Start a Trial
{
"name": "start_trial",
"arguments": {
"plan_id": "growth_v1"
}
}
Development
# Clone repository
git clone https://github.com/PipeOpsHQ/pipeops-mcp
cd pipeops-mcp
# Install dependencies
go mod download
# Run tests
go test ./...
# Build
go build -o pipeops-mcp-server ./cmd/pipeops-mcp-server
# Run locally
./pipeops-mcp-server
License
MIT License
Contributing
Contributions welcome! Please open an issue or submit a pull request.