Overnite over MCP
Overnite is an MCP server too: from Claude, Cursor, VS Code or any other MCP client you can list your workspaces, start an agent on a task, wait for it, answer its questions, stop it and get the pull request it opened - the same things the cockpit does, as the same person.
Two ways in:
| Remote (recommended) | Local | |
|---|---|---|
| Endpoint | https://mcp.overnite.dev/mcp (Streamable HTTP) | npx -y @overnite/mcp (stdio) |
| Signs in with | OAuth: your GitHub sign-in, then Allow once | An API key from Settings → API keys (ovn_…) |
| Revoke | Settings → API keys → Connected apps → Disconnect | Settings → API keys → Revoke |
Setup
Claude Desktop and claude.ai
Remote: Settings → Connectors → Add custom connector, name it Overnite, URL:
https://mcp.overnite.dev/mcp
Claude opens Overnite's sign-in; press Allow Claude. Nothing else to configure.
Local, in claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"overnite": {
"command": "npx",
"args": ["-y", "@overnite/mcp"],
"env": { "OVERNITE_API_KEY": "ovn_..." }
}
}
}
Claude Code
claude mcp add --transport http overnite https://mcp.overnite.dev/mcp
# then, inside claude: /mcp -> overnite -> Authenticate
or with a key: claude mcp add overnite -e OVERNITE_API_KEY=ovn_... -- npx -y @overnite/mcp
Cursor
~/.cursor/mcp.json (every project) or .cursor/mcp.json (one):
{
"mcpServers": {
"overnite": { "url": "https://mcp.overnite.dev/mcp" }
}
}
Local:
{
"mcpServers": {
"overnite": {
"command": "npx",
"args": ["-y", "@overnite/mcp"],
"env": { "OVERNITE_API_KEY": "ovn_..." }
}
}
}
VS Code
.vscode/mcp.json, or MCP: Add Server from the command palette:
{
"servers": {
"overnite": { "type": "http", "url": "https://mcp.overnite.dev/mcp" }
}
}
Local, with the key asked for once and kept in VS Code's secret storage:
{
"inputs": [{ "type": "promptString", "id": "overnite-key", "description": "Overnite API key", "password": true }],
"servers": {
"overnite": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@overnite/mcp"],
"env": { "OVERNITE_API_KEY": "${input:overnite-key}" }
}
}
}
Tools
| Tool | Arguments | Does |
|---|---|---|
list_workspaces | - | your workspaces and their state |
create_workspace | repo (owner/name or URL), branch? | a workspace on a repository the GitHub App is installed on; its machine starts |
spawn_agent | workspace, kind (claude · codex · opencode · gemini · kimi), task, autonomy? (auto · ask) | starts the workspace if it is stopped, then the agent, in its own worktree on ovn/<agent id> |
read_agent | id, lines? | state, the question it is asking, the end of its screen, its pull requests |
wait_agent | id, until? (settled · blocked · idle · exited), timeout_seconds? (≤ 600) | returns when it gets there or on time, saying which |
answer_agent | id, text | answers a blocked agent (a choice's number or words, or free text), or sends a message |
stop_agent | id | stops it; its branch and commits stay |
list_prs | workspace?, state? (open · all) | pull requests from your agents' branches |
A typical turn: "Start Claude on aytaa/overnite to fix the flaky schedule test and open a PR" -
list_workspaces → spawn_agent → wait_agent → (read_agent → answer_agent → wait_agent)* → list_prs.
wait_agent counts settled and idle only once it has seen the agent
working, or after 15 seconds: an agent just started or just answered still
reads idle or blocked for a moment. It sends MCP progress notifications while
it waits, so a client's request timer does not give up on a long wait.
What it can reach
Every tool is one or two calls to /v1 with your token - an OAuth access
token or your API key - so it can do exactly what you can in the cockpit and
nothing more: no other person's workspaces, no keys, no connectors' tokens. A
token cannot make, list or revoke API keys, and cannot let another app in;
those need a signed-in browser. Pull requests come from GitHub, asked with the account you signed in with.
Troubleshooting
- 401 with
invalid_token- the access token expired and the client did not refresh, or the app was disconnected. Reconnect from the client. runtime_offlinefrom spawn_agent - the workspace came up but its daemon has not connected; the tool retries for ~40 s, then says so. Try again.git_not_connectedfrom list_prs - sign in to the cockpit with GitHub again.- The local server exits at once - it prints why on stderr:
OVERNITE_API_KEYunset, not anovn_key, or refused by the api.