Add a remote MCP server to Devin
Devin CLI and the Devin Local agent in Devin Desktop share one harness and one MCP format: an mcpServers object where a remote server takes url and headers. devin mcp add writes the entry for you. Devin Cloud is separate and configured in the web app.
By Jake Marsh. Checked against Devin's own docs on 2026-10-31; each section links its source.
The Devin config
For a server named my-server at https://example.com/mcp that takes an Authorization header. Where it goes: Run in a terminal (-s user saves it to ~/.config/devin/mcp_config.json for every project).
devin mcp add -s user -H "Authorization: Bearer YOUR_KEY" my-server "https://example.com/mcp"Swap in your own server below and the Devin version updates first, with every other client after it.
Where Devin reads it
.devin/mcp_config.local.jsonlocal (the default for devin mcp add): this project, gitignored, only you.devin/mcp_config.jsonproject: shared with your team through version control~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows)user: every project, only you
Keys, headers and sign-in
Pass a static key with -H "Name: value" on devin mcp add (repeatable), or put it in headers in the file. Devin's advice for keys is to keep them in .devin/mcp_config.local.json, which is gitignored: define the server in the shared .devin/mcp_config.json and let each person add their own key in the local file.
For OAuth servers, run devin mcp login <name>. Devin CLI registers itself through dynamic client registration; a provider without it takes oauthClientId and oauthClientSecret on the entry.
Devin Cloud (app.devin.ai) doesn't read these files. Organization admins with the Manage MCP Servers permission add a server from Customize > MCPs > Add custom MCP: pick HTTP, enter the server URL, and choose Auth Header (key defaults to Authorization) or OAuth.
{
"mcpServers": {
"my-server": {
"url": "https://example.com/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}Check that it connected
devin mcp list shows every configured server and devin mcp get <name> shows one. In Devin Desktop, click Customize in the agent sidebar, open MCPs and set Install MCPs for to This computer: each server has a toggle, a link to its config file and a refresh button. A server whose sign-in expired shows Needs auth with an Authenticate button.
In Devin Cloud, open the server's page and click Test tools: Devin connects and lists the server's tools.
Devin gotchas
devin mcp add saves to local scope by default, which is the current project only. Pass -s user to make the server available in every project.
Before v3000.3 (the Local 3.6 release), MCP servers lived under mcpServers in config.json in the same folders. Newer versions use the dedicated mcp_config.json files and move old entries over on startup.
Devin CLI also imports MCP servers from other tools' files, including .cursor/mcp.json, Claude Code's .mcp.json and ~/.claude.json, ~/.codeium/windsurf/mcp_config.json and opencode.json, so a server can appear that you never added to Devin.
Source: docs.devin.ai/cli/reference/configuration/read-config-from
Each client keeps its own OAuth sign-in. Signing in from Windsurf or Claude Code doesn't carry over: run devin mcp login for Devin CLI too. If sign-in fails because the provider rejects the RFC 8707 resource parameter, set "oauthResource": "" and log out and in again.
Still not connecting? Windsurf MCP server not connecting walks through the fixes in order.
Generate the config for your server
Runs in your browser. Nothing you type is sent anywhere. Still, don't paste real keys on shared screens.
Devin CLI / Devin Local
Run in a terminal (-s user saves it to ~/.config/devin/mcp_config.json for every project)
devin mcp add -s user -H "Authorization: Bearer YOUR_KEY" my-server "https://example.com/mcp"Claude Code
Run in a terminal (--scope user makes it available in every project)
claude mcp add --transport http --scope user my-server "https://example.com/mcp" --header "Authorization: Bearer YOUR_KEY"Source: code.claude.com/docs/en/mcp
Cursor
~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project)
{
"mcpServers": {
"my-server": {
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Source: cursor.com/docs/context/mcp
Codex CLI
~/.codex/config.toml
[mcp_servers.my_server]
url = "https://example.com/mcp"
http_headers = { "Authorization" = "Bearer YOUR_KEY" }Source: developers.openai.com/codex/mcp
Windsurf / Devin Desktop
~/.config/devin/mcp_config.json (older Windsurf: ~/.codeium/windsurf/mcp_config.json)
{
"mcpServers": {
"my-server": {
"serverUrl": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}VS Code (Copilot agent mode)
.vscode/mcp.json in the workspace, or your user mcp.json (MCP: Open User Configuration)
{
"servers": {
"my-server": {
"type": "http",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Source: code.visualstudio.com/docs/agents/reference/mcp-configuration
Gemini CLI
~/.gemini/settings.json (or .gemini/settings.json in the project)
{
"mcpServers": {
"my-server": {
"httpUrl": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Antigravity CLI (agy)
~/.gemini/config/mcp_config.json (or .agents/mcp_config.json in the workspace)
{
"mcpServers": {
"my-server": {
"serverUrl": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Source: antigravity.google/docs/mcp
Cline
cline_mcp_settings.json (in the Cline panel, MCP Servers > Configure > Configure MCP Servers; Cline CLI: ~/.cline/data/settings/cline_mcp_settings.json)
{
"mcpServers": {
"my-server": {
"type": "streamableHttp",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Source: docs.cline.bot/mcp/mcp-overview
OpenCode
opencode.json in the project root, or ~/.config/opencode/opencode.json for every project
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-server": {
"type": "remote",
"url": "https://example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer YOUR_KEY"
}
}
}
}Source: opencode.ai/docs/mcp-servers/
Need a task list for those agents?
Taskhold is a remote MCP server that gives Devin and your other agents a task list you share, with their progress on a live board. Its setup link writes this config for the agent, so you don't have to. $12 a month or $120 a year, 7-day trial.