Agent Deploy Dashboard MCP Server
Unified deployment management for AI agents — manage Vercel, Render, Railway, and Fly.io services from a single MCP + REST API.
Features
🚀 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
Quick Start
MCP Configuration
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"
}
}
}REST API
Base URL: https://agent-deploy-dashboard-mcp.onrender.com
List All Services
curl -X GET https://agent-deploy-dashboard-mcp.onrender.com/api/v1/list_all_servicesResponse:
{
"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
}Get Deploy Status
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
}Tail Logs
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
}'Get Environment Variables
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
}Set Environment Variable
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"
}'Trigger Redeploy
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"
}'Get Build Logs
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"
}'Check Health
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"
}
}Pricing
Free Tier
50 requests per IP per day
All tools included
All platforms supported
No credit card required
Paid Tier (HTTP 402 Payment)
After free tier exhausted:
$0.01 per request
Payment via HTTP 402 with crypto wallet
Wallet address:
0x8E844a7De89d7CfBFe9B4453E65935A22F146aBBInclude
X-Paymentheader with payment proof
Platform Support
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
Tools Reference
1. list_all_services()
List all services across all platforms.
Parameters: None
Returns:
{
"success": true,
"services": [...],
"count": 10,
"errors": null
}2. get_deploy_status(platform, service_id)
Check deployment status for a specific service.
Parameters:
platform(string): Platform name —vercel,render,railway, orflyservice_id(string): Service/project ID
Returns:
{
"success": true,
"platform": "vercel",
"service_id": "prj_abc",
"deployment_id": "dpl_xyz",
"status": "READY",
"url": "https://...",
"created_at": 1709823600000
}3. 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
}4. get_env_vars(platform, service_id)
List environment variables for a service.
Parameters:
platform(string): Platform nameservice_id(string): Service/project ID
Returns:
{
"success": true,
"platform": "vercel",
"env_vars": {"KEY": "value"},
"count": 5
}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 value
Returns:
{
"success": true,
"message": "Environment variable set successfully"
}6. trigger_redeploy(platform, service_id)
Force redeploy a service.
Parameters:
platform(string): Platform nameservice_id(string): Service/project ID
Returns:
{
"success": true,
"deployment_id": "dpl_new",
"message": "Redeploy triggered successfully"
}7. get_build_logs(platform, deploy_id)
Fetch build logs for a deployment.
Parameters:
platform(string): Platform namedeploy_id(string): Deployment ID
Returns:
{
"success": true,
"logs": [...],
"count": 50
}8. check_health(url)
Ping a health endpoint.
Parameters:
url(string): URL to check
Returns:
{
"success": true,
"status_code": 200,
"healthy": true,
"response_time_ms": 142
}9. 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 to
Returns:
{
"success": false,
"error": "Rollback not yet implemented for this platform"
}Environment Variables
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=0x8E844a7De89d7CfBFe9B4453E65935A22F146aBBGet your API tokens:
Railway: https://railway.app/account/tokens
Fly.io: Run
flyctl auth token
Development
Local Setup
# 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 8080Test Endpoints
# 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":{}}'Docker
# 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-mcpDeployment on Render
Via Web UI
Fork this repo to your GitHub account
Go to Render Dashboard
Click New → Web Service
Connect your GitHub repo:
aparajithn/agent-deploy-dashboard-mcpConfigure:
Name:
agent-deploy-dashboard-mcpRuntime: Docker
Region: Oregon (or closest)
Instance Type: Free
Add environment variables:
VERCEL_TOKENRENDER_API_KEYRAILWAY_TOKEN(optional)FLY_API_TOKEN(optional)X402_WALLET_ADDRESS(optional)PUBLIC_HOST=agent-deploy-dashboard-mcp.onrender.com
Click Create Web Service
Via Render API
curl -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"}
]
}'Architecture
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.mdTech Stack
Python 3.11 — Modern async/await
FastAPI — REST API framework
FastMCP — MCP protocol implementation (Streamable HTTP)
httpx — Fast async HTTP client
Pydantic — Data validation
API Reference Docs
Once deployed, view interactive API docs at:
Swagger UI:
https://agent-deploy-dashboard-mcp.onrender.com/docsOpenAPI JSON:
https://agent-deploy-dashboard-mcp.onrender.com/openapi.json
License
MIT License — see LICENSE for details.
Support
Issues: GitHub Issues
Email: aparajith@dabaracoffee.com
Built for AI agents by Forge (Aparajith's coding agent) 🤖