MCP servers · yours

camelRun by camelAIcamelRun by camelAI · MCP agents

Build and host an MCP agent

camelRun is a hosted runtime for AI agents. It calls your MCP servers and makes each agent an MCP server too.camelRun is a hosted runtime for AI agents. It plugs your agent into remote MCP servers, with your keys sealed away from the model, and makes every agent an MCP server that Claude, Cursor or any MCP client can talk to.

No API key neededOr start in Claude Code, no API keyRead the quickstartQuickstart
claude mcp add --transport http camelrun https://run.camelai.com/mcp

MCP clients · yours

MCP client

Connect remote MCP servers to your AI agent

camelRun is your agent's MCP client. Add MCP servers to the agent's definition, and camelRun reads their tools when you save and makes every call itself.

import { Agents } from "@camelai/run";

const agents = new Agents(); // CAMELAI_API_KEY
const definition = await agents.runtime.upsertDefinition("support", {
  name: "Support",
  mcpServers: [{ name: "app", url: "https://app.example.com/mcp", auth: { type: "runtime" } }],
});
Saved, listed
Response
201 Created
{
  "id": "def_02c314e0b14019445242",
  "name": "Support",
  "revision": 1,
  "mcpServers": [{
    "name": "app", "url": "https://app.example.com/mcp",
    "auth": {"type": "runtime"}
  }],
  "toolSources": [{
    "kind": "mcp", "name": "app", "status": "listed",
    "tools": [
      {"name": "app__list_tickets", "description": "List open tickets"},
      {"name": "app__get_ticket", "description": "Read one ticket"},
      {"name": "app__reply_to_ticket", "description": "Reply to a ticket"},
      {"name": "app__escalate_ticket", "description": "Escalate a ticket"}
    ]
  }]
}
How camelRun signs in to a server
  1. app

    A signed identity on every call

    Each call carries a token camelRun signs, naming the agent and the user it acts for, so your own server decides what that user may do.

    "auth": {"type": "runtime"}
  2. kb

    Tokens and headers, sealed

    Stored sealed when you save, and the API never returns them.

    "token": "…"

    "auth": {"type": "bearer"}

  3. github

    Short-lived tokens from your endpoint

    camelRun asks your endpoint for a fresh credential, such as a GitHub App token, keeps it in memory, and asks again before it expires.

    "auth": {"type": "exchange", "url": "https://app.example.com/camelrun/github-token"}
MCP servers in the docs

Tool search

Give your AI agent thousands of MCP tools

Plug in big MCP servers, or many of them. Your agent searches them from code for the tools it needs, so thousands of tools stay out of the model's way until it asks.

MCP server

Turn your AI agent into an MCP server

Every agent on camelRun is an MCP server with one tool, message. Add its URL to Claude, Cursor or any MCP client. Everyone who messages it shares one conversation, so it remembers what was said before.

Add the support agent to

https://run.camelai.com/v1/agents/client_…/mcp

mcp.json
{ "mcpServers": { "support": { "url": "https://run.camelai.com/v1/agents/client_…/mcp" } } }
  • Progress while it works

    A call lasts as long as the turn, and the agent sends progress for each tool it uses, so clients that reset their timeout on progress keep waiting.

  • Approvals in the client

    In clients that support MCP elicitation, an approval or a question comes up right there, and the answer resumes the turn.

  • A retry is the same message

    Send the same text with the same requestId, and it's never sent twice: the call returns its reply.

MCP…/agents/client_…/mcprun.camelai.com/v1/agents/client_0ea498d2…/mcp
CursorcamelRunsupport
  1. tools/call

    message {"text": "Escalate anything urgent from today."}

  2. notifications/progress

    Using app__list_tickets

  3. notifications/progress

    Using kb__search

  4. progressAsking you: Allow app__escalate_ticket to run?
  5. elicitation/create
    Cursor asks

    Allow app__escalate_ticket to run?

    {"ticket":"T-2207"}
    DeclineAccept
  6. result

    {"action": "accept"}

  7. notifications/progress

    Using app__escalate_ticket

  8. result

    Escalated T-2207. T-2213 is waiting on the customer.

Agents as MCP servers

For coding agents

Deploy AI agents from Claude Code, Codex or Cursor

Add camelRun's MCP server to your coding agent and sign in when it asks, with no API key to paste. Then ask it to build, deploy and run your agents.

~/support-app · claude
Add camelRun to your coding agent
  • Claude Code
    claude mcp add --transport http camelrun https://run.camelai.com/mcp
  • Codex
    codex mcp add camelrun --url https://run.camelai.com/mcp && codex mcp login camelrun
  • Cursor
    { "mcpServers": { "camelrun": { "url": "https://run.camelai.com/mcp" } } }
  • Terminal or CI
    npm install -g @camelai/camelrun
CLI and MCP server in the docs

FAQ

MCP agent questions

Read the docs
  1. 01What is a MCP agent?

    An MCP agent is an AI agent that gets its tools from MCP servers. It reads each server's tools, and the model decides which ones to call. On camelRun, the runtime runs that loop for you, keeps the agent's history, and calls your MCP servers with credentials the model never sees. Each agent is also an MCP server that other MCP clients can talk to.

  2. 02What is the difference between a MCP and an AI agent?

    MCP, the Model Context Protocol, is a standard way to offer tools to a model. An AI agent is the loop that does the work: it calls the model, runs the tools the model picks, and keeps going until the task is done. MCP connects an agent to its tools. camelRun runs the agent.

  3. 03Which MCP servers can a camelRun agent connect to?

    Remote MCP servers that speak Streamable HTTP, or the older SSE. A server can take a bearer token or headers, a signed identity token on each call, or short-lived credentials your endpoint hands out. An MCP SDK server can also run in your own process and attach with fromMcpServer.

  4. 04Do my MCP server credentials ever reach the model?

    No. Tokens and headers are sealed when you save the definition, and the API only ever returns the header names. camelRun makes every call itself, so the model sees tool names like kb__search, never a key.

  5. 05Can I use my camelRun agent from Claude, Cursor or Claude Code?

    Yes. Every agent is an MCP server at its own URL, with one tool, message. Add the URL to your client and sign in, or pass the agent's token in a header.

  6. 06How is this different from writing my own MCP client?

    With an MCP SDK you write the client loop, store each server's credentials and keep the conversation yourself. camelRun runs the loop, seals the credentials, keeps each agent's history and files, and keeps your agents working through your deploys.

  7. 07How much does an MCP agent cost to run?

    $0.01 per agent-hour while an agent is in a run, plus $0.10 per GB-month of storage. Tokens on your own provider keys cost $0, and on ours you pay the provider's price, with no markup on tokens. Idle and sleeping agents cost only storage. It's prepaid, with no subscription, no seats and no per-agent fee.