ray.run: one endpoint for every MCP tool

4 min read Original article ↗
NewPublish your MCP server to your customers

Your coding agent builds the servers. Rayrun runs them behind one URL and holds the credentials. Each call is decided per client, tool, and argument, then recorded.

Free for one developer · No card required

hacker-news-digestsourceready1 toolsrayrun-source:4Shared

Linearmcpready12 toolshttps://mcp.linear.app/mcpPer member

Stripeopenapiready38 toolshttps://api.stripe.com/openapi.jsonShared

Notionmcpneeds auth9 toolshttps://mcp.notion.com/mcpAuthorizePer member

One entry replaces every client config.

BeforeEvery client stores every server and every secret.

mcp.json

{
  "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": "…" } }
  }
}
AfterEach client stores one URL and no secrets.

mcp.json

{
  "mcpServers": {
    "ray.run": {
      "url": "https://ray.run/mcp"
    }
  }
}

Your coding agent builds the server. Rayrun runs it.

Hand a scaffolded project to Codex or Claude Code, then deploy with one command.

codex · hacker-news-digest

$ npx rayrun setup https://ray.run/mcp \
  --client codex --yes --login
$ npx rayrun login

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

Codex  $ npx rayrun init hacker-news-digest
Codex    server implemented · tests passed
Codex  $ npx rayrun deploy hacker-news-digest --wait
Rayrun build succeeded · release active · get_top_stories

you → Codex
Tell me today's top HN stories via Rayrun.

you → Codex
Update my HN MCP to only surface stories
whose titles mention AI, then redeploy it.
Codex  code updated · tests passed · release active
  1. 1Scaffoldrayrun init gives your agent a complete TypeScript or Python project, with a working tool and a test.
  2. 2Deployrayrun deploy --wait uploads the source. It streams validation, build, and release status to the terminal.
  3. 3Verify and releaseA candidate starts beside the live release and is verified first. A failed build leaves the current release live.
  4. How deploying works

Then publish it to your customers.

Your customers add one URL to their own client and sign in with your identity provider, without joining your workspace.

  • Your sign-inCustomers sign in with your OpenID Connect provider. Your server receives a signed token naming who called.
  • Your policy, per customerChoose what they can call and how often. A change that needs approval waits for the customer who asked.
  • Your domainServe it from a subdomain you own, proved with a DNS record and certified by Cloudflare.

How publishing works

Add a service in one step. No adapter to write.

Paste what you have. Rayrun discovers the tools and puts them behind your endpoint, with the same credentials, access policy, and activity trail as everything else.

ray.run/dashboard · add service

URLhttps://mcp.linear.app/mcp

TransportStreamable HTTP

NameLinear

Add HTTP headers

  • Remote MCPhttps://mcp.linear.app/mcpRayrun completes OAuth and stores the credential.
  • OpenAPIhttps://api.example.com/openapi.jsonEvery supported operation becomes a typed tool.
  • npm package@acme/mcp-server@1.4.0Pinned to the version you name, and served over HTTP.
  • Container imageghcr.io/acme/mcp:1.4Inspected, then run beside everything else.

Code mode loads a tool’s definition only when the model needs it. How code mode works.

Keep control after deployment.

Access is decided per service, tool, and argument. Changed definitions wait for a person. Every call leaves one searchable record.

ray.run/dashboard/activity

Built for teams that answer to a security review.

The controls are published. So is what is not yet certified. A security review can start from the facts.

  • Encrypted per workspaceEvery workspace has its own data-encryption key, and Rayrun holds the wrapping key separately.
  • Secrets never reach a browserA stored credential is never sent to a browser, not even to the admin who entered it.
  • Single sign-on and SCIMOIDC or SAML 2.0 single sign-on, SCIM 2.0 provisioning, and access profiles by directory group. Your provider can authorize every client, so nobody connects one by hand.
  • Signed audit exportEvery call records who made it and which policy applied. The record can stream to your SIEM in signed batches.
  • Isolated, verified buildsSource builds run in isolation and package a non-root image. A release is verified before traffic moves.
  • Published, not badgedRayrun publishes its controls, the third parties that see workspace data, and where it stands on SOC 2 and HIPAA.

Read the security overview

Start with one server.

Connect one service and one client, then add the rest when you need them.