MCP · scoped agent keys · REST fallback
Deploy from your coding agent
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.
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 |
| 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
Settings → Agent keys. 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 is my last deploy failing? Check logs.
MCP tools
Tool reference
| 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 / create_application / update_application | read / write | App specs (image or git) |
list_routes / create_route | read / write | Public URLs (sslip.io default) |
list_env_vars / set_env_vars | read / write | Encrypted app env |
deploy_application | deploy | Trigger deploy with idempotency key |
get_deploy / get_deploy_logs | read | Status and container logs |
explain_deploy_blockers | read | Pre-flight checks before deploy |
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 Settings.
- 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. |
| 401 token expired | Create a new agent key in Settings. |
| 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). |