MCP

Connect Claudin to external tools and data as MCP servers — per project, per user, or per machine.

Overview

The Model Context Protocol (MCP) lets Claudin talk to external systems — issue trackers, databases, internal APIs — as servers it connects to over stdio, HTTP, or SSE. Once connected, a server's tools show up to the model as mcp__<server>__<tool>, its prompts as mcp__<server>__<prompt>, and any skills it exposes as <server>:<skill>.

Config scopes

ScopeWhere it livesShared?
project.mcp.json at the project root (walked up from cwd)Yes — commit it.
usermcpServers in the global config, ~/.claudin/config.jsonNo — this machine, every project.
localmcpServers under this project's entry in ~/.claudin/config.jsonNo — this machine, this project only.
enterpriseA managed file, exclusive controlOrg-wide, blocks mcp add while active.

mcpServers is not a field of .claudin/settings.json — that file only holds MCP policy: enabledMcpjsonServers, disabledMcpjsonServers, enableAllProjectMcpServers, and enterprise allowedMcpServers/deniedMcpServers.

See Permissions for how policy keys interact with the rest of Claudin's permission system.

Server config schema

// stdio (default, no "type" needed)
{ "command": "npx", "args": ["my-mcp-server"], "env": { "API_KEY": "xxx" } }

// http
{ "type": "http", "url": "https://mcp.sentry.dev/mcp" }

// sse
{ "type": "sse", "url": "https://example.com/sse", "headers": { "Authorization": "Bearer ..." } }

Example .mcp.json:

{
  "mcpServers": {
    "sentry": { "type": "http", "url": "https://mcp.sentry.dev/mcp" },
    "my-server": { "command": "npx", "args": ["my-mcp-server"], "env": { "API_KEY": "xxx" } }
  }
}

CLI

CommandWhat it does
claudin mcp add <name> <commandOrUrl> [args...]Add a server. -s/--scope local|user|project, -t/--transport stdio|sse|http, -e/--env KEY=value, -H/--header "K: V".
claudin mcp add-json <name> <json>Add a server from a raw JSON string.
claudin mcp add-from-claude-desktopImport servers from a local Claude Desktop config (macOS/WSL).
claudin mcp remove <name>Remove a server. -s/--scope.
claudin mcp listList configured servers (health-checks stdio servers — only run this in trusted directories).
claudin mcp get <name>Show detail for one server.
claudin mcp reset-project-choicesReset approved/rejected .mcp.json server choices for this project.
claudin mcp doctorDiagnose connection issues.
claudin mcp serveRun Claudin itself as an MCP server.

Inside the REPL, /mcp opens the same management surface — list, enable/disable, or inspect a server's tools without leaving the session.

OAuth

http and sse servers support a full OAuth2 flow. Add auth-time flags when you register the server:

claudin mcp add sentry https://mcp.sentry.dev/mcp \
  --transport http \
  --client-id "..." \
  --client-secret "..." \
  --callback-port 3000

Once a server needs auth, Claudin surfaces it as a pseudo-tool: calling it returns an authorization URL to open, then reconnects and swaps in the server's real tools once the callback completes — no separate login step to remember.

Resources

Two tools read MCP resources directly: one lists what a server exposes, optionally filtered to a single server; the other reads a specific resource by URI. Binary resources are decoded and written to disk — the model gets a file path back, not an inline base64 blob.

Differences from Claude Code

The .mcp.json format and the mcp__server__tool naming convention are the same. What's Claudin-specific: the CLI is claudin mcp instead of claude mcp; the global config lives at ~/.claudin/config.json instead of ~/.claude.json; and there's a fourth scope, local, for machine-and-project-specific servers that shouldn't be committed but also shouldn't apply to every project on the machine.