MCP Server
Connect any MCP-compatible client to the Runstack MCP server at /mcp and access 150+ tools across all your connected services.
The Runstack MCP server exposes your connected services as tools via the Model Context Protocol. Any MCP-compatible client — Claude Desktop, Cursor, custom agents — can call Runstack tools using a single authenticated endpoint.
Endpoint
POST https://app.runstack.engineer/mcpProtocol: Streamable HTTP (stateless JSON-RPC)
Auth: Authorization: Bearer rsk_<your_api_key>
How it works
The server exposes 4 meta tools instead of 150+ individual tools. This prevents context bloat and lets the AI dynamically discover and execute exactly the tools it needs:
When you ask your MCP client to "create a GitHub issue", it:
- Calls
search_tools("github.*issue")→ findsgithub_create_issue - Calls
check_authentication("github_create_issue")→ confirms your GitHub token is linked - Calls
execute_tool("github_create_issue", { owner, repo, title, body })→ creates the issue
Client setup
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"runstack": {
"url": "https://app.runstack.engineer/mcp",
"headers": {
"Authorization": "Bearer rsk_YOUR_API_KEY"
}
}
}
}Restart Claude Desktop after saving.
Cursor
In Cursor's MCP settings (.cursor/mcp.json or via the UI):
{
"runstack": {
"url": "https://app.runstack.engineer/mcp",
"headers": {
"Authorization": "Bearer rsk_YOUR_API_KEY"
}
}
}VS Code
Add Runstack in .vscode/mcp.json (workspace) or via MCP: Open User Configuration in the Command Palette. VS Code expects HTTP servers under servers with type and url:
{
"servers": {
"runstack": {
"type": "http",
"url": "https://app.runstack.engineer/mcp",
"headers": {
"Authorization": "Bearer rsk_YOUR_API_KEY",
"Content-Type": "application/json"
}
}
}
}Reload or restart the MCP server from the MCP view if tools do not appear immediately.
Antigravity
In Antigravity, open Manage MCP servers (agent panel) and use View raw config, or edit the MCP config file directly (commonly ~/.gemini/antigravity/mcp_config.json on macOS/Linux). Antigravity uses serverUrl and mcpServers:
{
"mcpServers": {
"runstack": {
"serverUrl": "https://app.runstack.engineer/mcp",
"headers": {
"Authorization": "Bearer rsk_YOUR_API_KEY",
"Content-Type": "application/json"
}
}
}
}Restart Antigravity after saving if the new server does not show up.
ChatGPT
ChatGPT supports MCP servers natively. In ChatGPT settings:
- Go to Settings → Connected tools → Add tool
- Select MCP server
- Enter the server URL and authentication:
URL: https://app.runstack.engineer/mcp
Authorization: Bearer rsk_YOUR_API_KEYChatGPT will discover the 4 meta tools automatically. Ask it to "search for GitHub tools" or "create a Linear issue" and it will use the Runstack MCP server to find and execute the right tool.
OpenAI Codex CLI
Add Runstack to your Codex CLI configuration. Create or edit ~/.codex/config.json:
{
"mcpServers": {
"runstack": {
"url": "https://app.runstack.engineer/mcp",
"headers": {
"Authorization": "Bearer rsk_YOUR_API_KEY"
}
}
}
}Codex will pick up the MCP server on next launch. You can then use Runstack tools directly from Codex:
codex "Create a GitHub issue in my repo about the login bug"Claude Code
Add Runstack to your Claude Code MCP settings. Edit ~/.claude/settings.json:
{
"mcpServers": {
"runstack": {
"url": "https://app.runstack.engineer/mcp",
"headers": {
"Authorization": "Bearer rsk_YOUR_API_KEY"
}
}
}
}Claude Code will discover the meta tools and can execute any Runstack tool during your coding session.
Custom agent (TypeScript)
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({ name: 'my-agent', version: '1.0.0' });
const transport = new StreamableHTTPClientTransport(
new URL('https://app.runstack.engineer/mcp'),
{
requestInit: {
headers: { Authorization: 'Bearer rsk_YOUR_API_KEY' },
},
},
);
await client.connect(transport);
// List available tools
const tools = await client.listTools();
console.log(tools);Custom agent (Python)
import httpx
import json
MCP_URL = "https://app.runstack.engineer/mcp"
API_KEY = "rsk_YOUR_API_KEY"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}",
}
payload = {
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "search_tools",
"arguments": {"pattern": "github", "searchIn": "both"},
},
"id": 1,
}
response = httpx.post(MCP_URL, json=payload, headers=headers)
print(response.json())Error responses
| Status | Meaning |
|---|---|
401 | Missing, invalid, or malformed API key |
429 | Usage limit reached for this key |
500 | Internal server error (see error.message) |
CORS
The /mcp endpoint includes CORS headers for browser-based clients:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization