MCP · scoped agent keys · REST fallback
Deploy from your coding agent
This page covers connecting an AI coding agent — if you just want to try NoMoreJoel yourself, start on the homepage.
50+ MCP tools including deploy, git keys, failure diagnosis, alerts, security scans, and managed databases. Works with Cursor, Claude Code, Claude Desktop, VS Code Copilot, Windsurf, and any client that supports remote MCP (Streamable HTTP). Point it at https://www.nomorejoel.com/mcp/ with a Bearer agent key.
Early access. We're in startup mode — request access before you can create an account.
Capabilities
What agents can and cannot do
| Capability | Supported | Notes |
|---|---|---|
| List servers, projects, apps, routes | Yes | read scope |
| Create project, environment, application | Yes | write scope |
| Create sslip.io test route | Yes | HTTPS without manual DNS |
| Set env vars, deploy, poll logs | Yes | deploy scope for deploy |
| List, acknowledge, resolve alerts | Yes | ops scope for ack/resolve |
| Security scan results | Yes | get_security_scans |
| Managed Postgres databases | Yes | Create, link, backup via MCP |
| Stack audit/repair, diagnostics | Yes | ops scope for repair/diagnostics |
| Route proxy reconcile | Yes | reconcile_route |
| Add server / upload SSH key | No | Connect VPS in dashboard first |
| Platform operator / super-admin | No | Tenant-scoped keys only |
Prerequisites
Before you connect an MCP client
- AccountInvite-gated sign-up at /register with an
NJ-…code. - Ready serverAt least one server in
readystate — add via dashboard with SSH key or password. - GitHub (optional)For private Git deploys, connect GitHub under Integrations.
Quick start
Four steps to agent deploy
-
Create an agent key
Integrations → Coding agents. Copy the token and pre-filled
mcp.jsonsnippet immediately — shown once. - Configure your MCP client Paste the URL and Bearer token into Cursor, Claude Code, or another client — see paths below.
- Reload the client Restart or reload MCP in your tool's settings. Verify nomorejoel lists deploy tools.
- Prompt your agent Examples below. The agent calls MCP tools; you answer clarifying questions in chat.
Where to add the server
Use the same URL and Bearer token in whichever client you use. JSON shape below works for Cursor, Claude Desktop, and other mcpServers-style configs.
- Cursor —
~/.cursor/mcp.jsonor project.cursor/mcp.json - Claude Code —
claude mcp add(HTTP transport) or MCP settings in your project - Claude Desktop —
claude_desktop_config.json→mcpServers - VS Code / Copilot, Windsurf, Zed, … — MCP panel or config file per your editor's docs
Example mcp.json
{
"mcpServers": {
"nomorejoel": {
"url": "https://www.nomorejoel.com/mcp/",
"headers": {
"Authorization": "Bearer sp_your_agent_key_here"
}
}
}
}
Example prompts
List my servers and projectsDeploy nginx:1.27-alpine to my ready server with an sslip.io routeCreate a FastAPI app from github.com/org/repo on branch main and deploy itWhy did my last deploy fail? Use explain_deploy_blockers and deploy logs.Show security findings for my production app.Create a Postgres database and link it to my API app.
MCP tools
Tool reference
Grouped by category. Add ops scope for alert actions, stack repair, and server diagnostics.
Workspace & inventory
| Tool | Scope | Description |
|---|---|---|
get_workspace_summary | read | Servers, projects, apps, recent deploys |
list_servers / get_server | read | Server inventory and status |
list_projects / create_project | read / write | Project CRUD |
create_environment | write | Add env under a project |
list_applications / get_application / create_application / update_application | read / write | App specs, setup checklist, git/DB links |
create_app_instance / clone_application | write | Multi-environment and clone flows |
list_routes / create_route / update_route / delete_route | read / write | Public URLs (sslip.io default), DNS check |
get_git_access_status / generate_deploy_key / register_deploy_key_on_github | read / write | Private git — prefer workspace GitHub App; deploy keys when allowed |
list_env_vars / set_env_vars | read / write | Encrypted app env |
Deploy
| Tool | Scope | Description |
|---|---|---|
deploy_application / cancel_deploy | deploy | Trigger or abort deploy runs |
get_deploy / get_deploy_logs / list_deploys | read | Status, logs, and history |
explain_deploy_blockers | read | Pre-flight checks before deploy |
diagnose_deploy_failure / diagnose_deploy_health | read | Structured failure analysis after deploy errors |
get_version_status | read | Git commits behind remote branch |
Alerts & health
| Tool | Scope | Description |
|---|---|---|
list_health_signals | read | Open health signals in workspace |
list_alerts | read | Alert events with context |
acknowledge_alert / resolve_alert | ops | Acknowledge or dismiss alerts |
Server operations
| Tool | Scope | Description |
|---|---|---|
audit_server_stack | read | Audit platform stack on a server |
repair_server_stack | ops | Repair Traefik/Docker platform stack |
run_server_diagnostic / get_diagnostic_run | ops / read | SSH diagnostics with remediation hints |
reconcile_route | write | Refresh Traefik proxy labels for a route |
Security
| Tool | Scope | Description |
|---|---|---|
get_security_scans | read | Scan runs and posture for deploy or app |
Managed databases
| Tool | Scope | Description |
|---|---|---|
list_databases / get_database | read | Postgres inventory and status |
create_database | write | Provision logical DB on shared Postgres (database_name optional) |
migrate_database_to_shared | write | Migrate dedicated DB to shared host (requires recent backup) |
link_database_to_app / list_database_links / unlink_database_from_app | write | Link apps via DATABASE_URL |
start_database / stop_database / restart_database | write | Lifecycle for dedicated containers only — shared DBs use server Postgres host controls |
decommission_database | write | Teardown (requires confirm name) |
get_database_connection | read | Masked connection URL |
run_database_backup / list_database_backups | write / read | Per logical database — not a full-server dump |
explain_database_blockers | read | Pre-flight before create |
REST
Direct API access
Non-MCP integrations can use the same sp_* tokens against the REST API:
- OpenAPI schema:
https://www.nomorejoel.com/openapi.json - Interactive docs:
https://www.nomorejoel.com/docs - Auth header:
Authorization: Bearer sp_…
Security
Keep keys safe
- Agent keys expire after 90 days by default — revoke unused keys in Integrations.
- Never commit keys to git. Use project-local
mcp.jsonin.gitignoreor env-based headers. - Keys are bound to one workspace — they cannot access other tenants.
- Use minimum scopes: read-only keys for inspection, deploy scope only when needed.
Troubleshooting
Common issues
| Issue | Fix |
|---|---|
| MCP shows disconnected | Reload MCP after editing config. URL must be https://www.nomorejoel.com/mcp/. Check your client's HTTP MCP / Streamable HTTP support. |
| 403 forbidden | Key missing scope — create a new key with read, write, deploy, and ops if you need alerts or stack repair. |
| 401 token expired | Create a new agent key in Integrations. |
| Deploy blocked: no routes | Agent must create a route first, or pass explicit allow flag if supported. |
| No ready servers | Add and validate a server in the dashboard before agent deploy. |
| Local dev | Use http://127.0.0.1:28417/mcp (see .dev/state.json for port). |