loading…
Search for a command to run...
loading…
Unified deployment dashboard MCP server across Vercel, Render, Railway, and Fly.io. 9 tools for deploy status, logs, environment variables, rollback, and health
Unified deployment dashboard MCP server across Vercel, Render, Railway, and Fly.io. 9 tools for deploy status, logs, environment variables, rollback, and health checks across all platforms. Free tier with x402 micropayments.
Unified deployment management for AI agents — manage Vercel, Render, Railway, and Fly.io services from a single MCP + REST API.
🚀 Multi-Platform Support — Manage Vercel, Render, Railway, and Fly.io from one interface
📊 Deployment Status — Check deploy status and health across all platforms
📝 Unified Logging — Tail logs and view build logs
⚙️ Environment Management — List, update, and manage env vars
🔄 Redeploy Operations — Trigger redeployments and rollbacks
💰 x402 Micropayments — Built-in payment middleware for API monetization
🔒 Rate Limiting — 50 free requests/IP/day with paid tier support
Add to your MCP settings file (cline_mcp_settings.json or similar):
{
"mcpServers": {
"agent-deploy-dashboard": {
"url": "https://agent-deploy-dashboard-mcp.onrender.com/mcp"
}
}
}
Base URL: https://agent-deploy-dashboard-mcp.onrender.com
curl -X GET https://agent-deploy-dashboard-mcp.onrender.com/api/v1/list_all_services
Response:
{
"success": true,
"services": [
{
"id": "prj_abc123",
"name": "my-app",
"platform": "vercel",
"url": "https://my-app.vercel.app",
"framework": "nextjs"
},
{
"id": "srv_xyz789",
"name": "api-service",
"platform": "render",
"type": "web_service",
"region": "oregon"
}
],
"count": 2
}
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/get_deploy_status \
-H "Content-Type: application/json" \
-d '{
"platform": "vercel",
"service_id": "prj_abc123"
}'
Response:
{
"success": true,
"platform": "vercel",
"service_id": "prj_abc123",
"deployment_id": "dpl_xyz",
"status": "READY",
"url": "https://my-app.vercel.app",
"created_at": 1709823600000
}
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/tail_logs \
-H "Content-Type: application/json" \
-d '{
"platform": "render",
"service_id": "srv_xyz789",
"lines": 50
}'
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/get_env_vars \
-H "Content-Type: application/json" \
-d '{
"platform": "vercel",
"service_id": "prj_abc123"
}'
Response:
{
"success": true,
"platform": "vercel",
"service_id": "prj_abc123",
"env_vars": {
"DATABASE_URL": {
"value": "[ENCRYPTED]",
"target": ["production"],
"type": "encrypted"
},
"API_KEY": {
"value": "abc123",
"target": ["production", "preview"],
"type": "plain"
}
},
"count": 2
}
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/set_env_var \
-H "Content-Type: application/json" \
-d '{
"platform": "render",
"service_id": "srv_xyz789",
"key": "NEW_FEATURE_FLAG",
"value": "true"
}'
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/trigger_redeploy \
-H "Content-Type: application/json" \
-d '{
"platform": "vercel",
"service_id": "prj_abc123"
}'
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/get_build_logs \
-H "Content-Type: application/json" \
-d '{
"platform": "vercel",
"deploy_id": "dpl_xyz"
}'
curl -X POST https://agent-deploy-dashboard-mcp.onrender.com/api/v1/check_health \
-H "Content-Type: application/json" \
-d '{
"url": "https://my-app.vercel.app/health"
}'
Response:
{
"success": true,
"url": "https://my-app.vercel.app/health",
"status_code": 200,
"healthy": true,
"response_time_ms": 142,
"headers": {
"content-type": "application/json",
"x-vercel-id": "sfo1::abc123"
}
}
After free tier exhausted:
0x8E844a7De89d7CfBFe9B4453E65935A22F146aBBX-Payment header with payment proof| Platform | List Services | Deploy Status | Logs | Env Vars | Redeploy | Build Logs |
|---|---|---|---|---|---|---|
| Vercel | ✅ Full | ✅ Full | ⚠️ Build only | ✅ Full | ✅ Full | ✅ Full |
| Render | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full |
| Railway | ✅ Basic | ⏳ Planned | ⏳ Planned | ⏳ Planned | ⏳ Planned | ⏳ Planned |
| Fly.io | ✅ Basic | ⏳ Planned | ⏳ Planned | ⏳ Planned | ⏳ Planned | ⏳ Planned |
✅ = Fully implemented
⚠️ = Partial implementation
⏳ = Planned/stub implementation
list_all_services()List all services across all platforms.
Parameters: None
Returns:
{
"success": true,
"services": [...],
"count": 10,
"errors": null
}
get_deploy_status(platform, service_id)Check deployment status for a specific service.
Parameters:
platform (string): Platform name — vercel, render, railway, or flyservice_id (string): Service/project IDReturns:
{
"success": true,
"platform": "vercel",
"service_id": "prj_abc",
"deployment_id": "dpl_xyz",
"status": "READY",
"url": "https://...",
"created_at": 1709823600000
}
tail_logs(platform, service_id, lines=100)Stream recent logs from a service.
Parameters:
platform (string): Platform nameservice_id (string): Service/project IDlines (integer, optional): Number of log lines (default: 100)Returns:
{
"success": true,
"platform": "render",
"service_id": "srv_xyz",
"logs": [...],
"count": 100
}
get_env_vars(platform, service_id)List environment variables for a service.
Parameters:
platform (string): Platform nameservice_id (string): Service/project IDReturns:
{
"success": true,
"platform": "vercel",
"env_vars": {"KEY": "value"},
"count": 5
}
set_env_var(platform, service_id, key, value)Update an environment variable.
Parameters:
platform (string): Platform nameservice_id (string): Service/project IDkey (string): Environment variable namevalue (string): Environment variable valueReturns:
{
"success": true,
"message": "Environment variable set successfully"
}
trigger_redeploy(platform, service_id)Force redeploy a service.
Parameters:
platform (string): Platform nameservice_id (string): Service/project IDReturns:
{
"success": true,
"deployment_id": "dpl_new",
"message": "Redeploy triggered successfully"
}
get_build_logs(platform, deploy_id)Fetch build logs for a deployment.
Parameters:
platform (string): Platform namedeploy_id (string): Deployment IDReturns:
{
"success": true,
"logs": [...],
"count": 50
}
check_health(url)Ping a health endpoint.
Parameters:
url (string): URL to checkReturns:
{
"success": true,
"status_code": 200,
"healthy": true,
"response_time_ms": 142
}
rollback_deploy(platform, service_id, version)Rollback to a previous deployment version.
Parameters:
platform (string): Platform nameservice_id (string): Service/project IDversion (string): Version/deployment ID to rollback toReturns:
{
"success": false,
"error": "Rollback not yet implemented for this platform"
}
Configure platform API access via environment variables:
# Vercel
VERCEL_TOKEN=your_vercel_token
# Render
RENDER_API_KEY=your_render_api_key
# Railway
RAILWAY_TOKEN=your_railway_token
# Fly.io
FLY_API_TOKEN=your_fly_api_token
# Payment (optional)
X402_WALLET_ADDRESS=0x8E844a7De89d7CfBFe9B4453E65935A22F146aBB
Get your API tokens:
flyctl auth token# Clone repo
git clone https://github.com/aparajithn/agent-deploy-dashboard-mcp.git
cd agent-deploy-dashboard-mcp
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -e ".[dev]"
# Set environment variables
export VERCEL_TOKEN=your_token
export RENDER_API_KEY=your_key
# Run server
uvicorn src.main:app --reload --port 8080
# Health check
curl http://localhost:8080/health
# List services (requires platform tokens)
curl http://localhost:8080/api/v1/list_all_services
# Test MCP protocol
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'
# List MCP tools
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# Build
docker build -t agent-deploy-dashboard-mcp .
# Run
docker run -p 8080:8080 \
-e VERCEL_TOKEN=your_token \
-e RENDER_API_KEY=your_key \
-e PUBLIC_HOST=localhost \
agent-deploy-dashboard-mcp
aparajithn/agent-deploy-dashboard-mcpagent-deploy-dashboard-mcpVERCEL_TOKENRENDER_API_KEYRAILWAY_TOKEN (optional)FLY_API_TOKEN (optional)X402_WALLET_ADDRESS (optional)PUBLIC_HOST = agent-deploy-dashboard-mcp.onrender.comcurl -X POST https://api.render.com/v1/services \
-H "Authorization: Bearer $RENDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "web_service",
"name": "agent-deploy-dashboard-mcp",
"repo": "https://github.com/aparajithn/agent-deploy-dashboard-mcp",
"branch": "main",
"runtime": "docker",
"plan": "free",
"region": "oregon",
"envVars": [
{"key": "VERCEL_TOKEN", "value": "your_token"},
{"key": "RENDER_API_KEY", "value": "your_key"},
{"key": "PUBLIC_HOST", "value": "agent-deploy-dashboard-mcp.onrender.com"}
]
}'
agent-deploy-dashboard-mcp/
├── src/
│ ├── main.py # FastMCP server + REST API
│ ├── tools/
│ │ ├── platforms.py # Platform API clients (Vercel, Render, etc)
│ │ └── deploy_tools.py # Tool implementations
│ └── middleware/
│ ├── rate_limit.py # Rate limiting
│ └── x402.py # Payment middleware
├── Dockerfile
├── pyproject.toml
└── README.md
Once deployed, view interactive API docs at:
https://agent-deploy-dashboard-mcp.onrender.com/docshttps://agent-deploy-dashboard-mcp.onrender.com/openapi.jsonMIT License — see LICENSE for details.
Built for AI agents by Forge (Aparajith's coding agent) 🤖
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"aparajithn-agent-deploy-dashboard-mcp": {
"command": "npx",
"args": []
}
}
}Web content fetching and conversion for efficient LLM usage.
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also