This page is about connecting an external MCP client to Modem. To connect external MCP tool servers for the Modem Agent to use, see the
External MCP Servers page.
Server URL
Use this URL in your MCP client:Tools
The server exposes three kinds of tools: one that runs the full Modem Agent, one that reads your data directly, and a set that writes to your Modem workspace. Which tools your client sees depends on the scopes you approve during authorization. See Security and Access. For every tool’s full parameter list, result shape, and example invocations, see the MCP Tool Reference.Run the agent
Agent runs are asynchronous. Starting a run returns its IDs right away. The run keeps going in Modem, even if your MCP client disconnects.
Use these tools when the task needs reasoning, multiple steps, or your connected tools, such as Linear, Slack, or GitHub. Agent runs consume credits.
How an agent run works
1
Start the run
Call
modem_agent_invoke with a prompt and an idempotency_key. Modem returns conversation_id, run_id, and a working status.2
Check the result
Call
modem_agent_get_run with both IDs. Keep checking until the status is completed, failed, or cancelled. A completed run
includes the answer in result.text.3
Continue the conversation
Call
modem_agent_send_message with the same conversation_id, a new prompt, and a new idempotency_key. Wait for the current run
to finish before starting the follow-up.4
Cancel if needed
Call
modem_agent_cancel_run with the conversation and run IDs. Cancellation stops remaining work but does not undo actions the
agent already completed.Idempotency keys
Give each logical turn a stable, uniqueidempotency_key.
- Retry the same turn with the same key and the exact same prompt. Modem returns the existing run instead of starting another one.
- Do not reuse a key with a changed prompt. Modem rejects it as a conflict.
- Start each follow-up with a new key. Only one turn can run in a conversation at a time.
agent:invoke scope.
Search your data
search_modem is read-only and does not run the full Modem Agent or consume agent credits. Prefer it for lookups and semantic search. It is faster and cheaper than modem_agent_invoke.
Write to your workspace
These tools apply changes directly, without going through the agent.
All write tools require the
agent:invoke scope and are marked as destructive, so most MCP clients ask you to confirm each call before it runs.
Permissions
Write tools act as you, not as a service account. Each one runs against your existing role in the organization you selected during authorization, enforced the same way as the Modem dashboard. If your account cannot make a change in the dashboard, the tool cannot make it either. If your account is not a member of the selected organization, the call is rejected.Field values
Some fields only accept a fixed set of values:
Topic IDs are UUIDs. Company and person IDs are numeric strings. Use
search_modem to find the IDs you need before calling a write tool.
Prerequisites
- A Modem account with access to the organization you want to use
- An MCP client that supports remote Streamable HTTP servers with OAuth
Set Up Your Client
Use the setup path for your MCP client. In every case, the server URL is:Claude Code
Claude Code can add remote HTTP MCP servers from the CLI./mcp inside Claude Code and complete the browser authorization flow.
Cursor
In Cursor, open Settings → Cursor Settings → Tools & MCP, then add a new MCP server. Cursor stores MCP configuration in anmcp.json file.
VS Code and GitHub Copilot
VS Code stores MCP configuration in anmcp.json file, either in your user profile or in .vscode/mcp.json for a workspace.
Codex
Codex can add remote MCP servers from the CLI.~/.codex/config.toml if you prefer to edit it directly. auth defaults to oauth, so it can be omitted.
opencode
opencode stores MCP configuration inopencode.json. Use "type": "remote" for the Modem server.
headers field out. Modem uses OAuth, so there is no API key to pass. opencode prompts you to authorize the first time you use the server, or you can trigger the flow yourself:
ChatGPT
ChatGPT connects to remote MCP servers through Developer mode, available on paid plans. Availability can depend on your account and workspace policy, and OpenAI has moved the setting between menus, so check both locations below.- Open ChatGPT Settings and enable Developer mode. Depending on your ChatGPT version it lives under Security and login, or under Apps (previously Connectors) → Advanced settings.
- In the apps/connectors list, click the add (+) button to create a new connection.
- Give it a name such as
Modemand enter the server URLhttps://mcp.modem.dev/mcp. - If asked for an authentication type, choose OAuth. Create the connection.
- Complete the Modem authorization flow in the browser window that opens, then review the discovered tools.
Other MCP Clients
Use the client’s remote HTTP or Streamable HTTP setup flow. If it asks for fields, use:
Client-specific MCP docs:
Authorize Modem
Your MCP client should open a browser window for OAuth authorization the first time it connects. On the Modem consent screen:- Confirm the requesting client name.
- Review the redirect destination.
- Choose the Modem organization if your account belongs to more than one.
- Approve the requested permissions.
data:read but not agent:invoke sees search_modem and nothing else.
Example Prompts
Your MCP client picks the tool, so phrase the request for the outcome you want. The examples below tend to select the tool noted alongside them. Lookups and questions, which normally route tosearch_modem:
Multi-step work and anything involving connected tools, which normally routes to modem_agent_invoke:
Changes to your workspace, which normally route to the write tools:
For a new task, include the context the agent needs in the first prompt. To continue a run, ask your client to send a follow-up in the existing Modem conversation.
Security and Access
Modem authorizes the MCP client with OAuth. The access token is scoped to the Modem account and organization selected during consent. The MCP permissions are:
The MCP server resolves the organization from the OAuth token claims, not from the URL. Keep the server URL as
https://mcp.modem.dev/mcp.
The write tools additionally enforce your own role in that organization on every call, so an approved token never grants more access than your Modem account already has.
Rate limits
MCP tool calls are rate limited per organization, per tool, at 20 calls per minute. Exceeding the limit returns a rate-limit error carrying aretryAfter hint your client should back off against. modem_agent_invoke is additionally subject to your organization’s agent credit limits.
Troubleshooting
My MCP client does not show the Modem tools
My MCP client does not show the Modem tools
- Confirm the server URL is exactly
https://mcp.modem.dev/mcp. - Restart the client or reload its MCP server list.
- Make sure your client supports remote Streamable HTTP MCP servers with OAuth.
Some tools are missing but others work
Some tools are missing but others work
Tools are exposed by scope. If you see
search_modem but no agent or write tools, your token carries data:read but not
agent:invoke. Re-run the OAuth flow and approve both permissions.A write tool returns forbidden
A write tool returns forbidden
Write tools run as you, under your role in the selected organization. Confirm your account can make the same change in the Modem
dashboard, and that it is a member of the organization you authorized.
A tool call is rate limited
A tool call is rate limited
MCP tool calls are limited to 20 per minute per organization, per tool. Wait for the
retryAfter interval in the error and retry
with backoff. If modem_agent_invoke is rejected for cost rather than rate, check your organization’s agent credit allowance.The agent call returned before the answer was ready
The agent call returned before the answer was ready
modem_agent_invoke and modem_agent_send_message return as soon as Modem accepts the run. Use the returned conversation_id and
run_id with modem_agent_get_run until the run reaches a final status.A follow-up returns a conflict
A follow-up returns a conflict
Wait for the current run to finish before sending another message in the same conversation. If you are retrying a request, reuse its
idempotency_key only when the prompt is unchanged.My client disconnected during an agent run
My client disconnected during an agent run
Reconnect and call
modem_agent_get_run with the conversation_id and run_id returned when the run started. Modem continues
accepted runs after the original MCP connection closes.I connected the wrong organization
I connected the wrong organization
Remove or disconnect the Modem MCP server in your client, then authorize again and select the correct organization on the Modem
consent screen.
Related
The Modem Agent
Learn what the Modem Agent can query and do.
External MCP Servers
Connect external MCP tool servers for the Modem Agent to use.