{
  "mcpServers": {
    "linear":       { "url": "…", "headers": { "Authorization": "Bearer …" } },
    "stripe":       { "command": "npx", "env": { "STRIPE_API_KEY": "sk_live_…" } },
    "notion":       { "command": "npx", "env": { "NOTION_TOKEN": "ntn_…" } },
    "internal-api": { "command": "node", "env": { "API_KEY": "…" } }
  }
}
{
  "mcpServers": {
    "ray.run": {
      "url": "https://ray.run/mcp"
    }
  }
}
Any MCP clientAny serviceone URL+ tokenevery callClaudeCodexCursorray.run/mcpaudit logLinear[mcp]Stripe[openapi]Notion[mcp]internal-api[openapi]
Every client addresses the same endpoint. ray.run attaches each service’s stored credential on the way out, and records the call either way.

you → Codex
Build a Hacker News digest MCP.
Add get_top_stories({ limit }), test it,
and deploy it to Rayrun.

Codex  server implemented · tests passed
$ rayrun deploy --wait
Rayrun validation passed · source uploaded
Rayrun Tracking build build_7f3d · resume command printed
Rayrun build succeeded · release active · get_top_stories

you → Claude
Use my Hacker News server to summarize
today's top five stories.

  • [mcp]

    Remote MCP

    Point ray.run at a remote MCP server. It completes the OAuth flow, holds the token, and re-exposes that server’s tools under your endpoint.

  • [openapi]

    OpenAPI

    Hand it an OpenAPI document. Each supported operation becomes a typed tool, and authorization-code OAuth uses the same personal or shared credential vault as MCP.