メインコンテンツへスキップ

MCPサーバーの追加

コマンドラインから

MCP サーバーを追加する最も簡単な方法:
# stdioサーバー — --の後にコマンドを渡す
devin mcp add <name> -- <command> [args...]

# HTTPサーバー — URLを位置引数として渡す
devin mcp add <name> <URL>

# HTTPサーバー — または--urlフラグを利用する
devin mcp add <name> --url <URL>
トランスポートの種類は自動的に推定されます。URL は HTTP (Streamable HTTP) を示し、末尾の引数 (または --command) は stdio を示します。
リモートの MCP サーバーはデフォルトで Streamable HTTP を利用します。サーバーが HTTP 4xx エラーを返した場合、CLI は同じ URL で SSE にフォールバックします。必要に応じて "transport": "sse" を明示的に設定してください — 詳しくは下記の レガシー SSE フォールバック を参照してください。
デフォルトでは、サーバーは local スコープ (.devin/config.local.json、gitignored) に保存されます。変更するには -s/--scope を利用してください:
devin mcp add -s project <name> <URL>   # .devin/config.json で共有
devin mcp add -s user <name> <URL>      # グローバル (~/.config/devin/config.json; Windows では %APPDATA%\devin\config.json)
コマンドラインからもサーバーを管理できます:
devin mcp list              # 設定済みのサーバーをすべて一覧表示する
devin mcp get <name>        # 特定のサーバーの詳細を表示する
devin mcp remove <name>     # 設定済みのサーバーを削除する
devin mcp login <name>      # OAuth経由でサーバーに認証する
devin mcp logout <name>     # 保存済みのOAuth認証情報を削除する

設定ファイルを使う

サーバーを設定ファイルの mcpServers セクションに直接追加します。
// .devin/config.json
{
  "mcpServers": {
    "server-name": {
      "command": "npx",
      "args": ["-y", "@company/mcp-server"],
      "env": {
        "API_KEY": "your-key"
      }
    }
  }
}
プロジェクトレベルのサーバーは、バージョン管理を通じてチームで共有されます。

サーバーの設定オプション

MCPサーバーは、ローカルコマンド (stdio トランスポート) またはリモートサーバー (HTTP トランスポート) のいずれかの方法で設定できます。

ローカルコマンド (stdio)

フィールド必須説明
commandstringはい実行する実行ファイル
argsstring[]いいえコマンドライン引数
envobjectいいえ設定する環境変数

リモートサーバー (Streamable HTTP)

FieldTypeRequiredDescription
urlstringYesMCPサーバーのエンドポイント URL
transportstringNo"http" (Streamable HTTP。URL ベースのサーバーのデフォルト) または "sse" (レガシー SSE) 。"http" に設定するか省略すると、CLI はまず Streamable HTTP を試し、4xx エラーが発生した場合は SSE にフォールバックします (spec に従って) 。サーバーの SSE エンドポイントが別のパスにある場合は、"sse" を明示的に設定してください。
headersobjectNoリクエストに含めるカスタム HTTP ヘッダー
oauthClientIdstringNo動的クライアント登録 (DCR) をサポートしていないサーバー向けの事前登録済み OAuth Client ID (例: GitHub) 。以下の「事前登録済み OAuth クライアント」セクションを参照してください。
oauthClientSecretstringNo機密クライアント向けの OAuth client secret。oauthClientId と組み合わせて使用します。

使用例

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_..."
      }
    }
  }
}
{
  "mcpServers": {
    "notion": {
      "url": "https://mcp.notion.com/mcp",
      "transport": "http"
    }
  }
}
OAuth ベースのサーバーを追加したら、devin mcp login notion を実行して認証します。詳細は下記の認証をご覧ください。
{
  "mcpServers": {
    "linear": {
      "url": "https://mcp.linear.app/mcp",
      "transport": "http"
    }
  }
}
{
  "mcpServers": {
    "atlassian": {
      "url": "https://mcp.atlassian.com/v1/mcp",
      "transport": "http"
    }
  }
}
追加後、devin mcp login atlassian を実行して認証します。各 MCP クライアント (Windsurf、Claude Code、Devin CLI) はそれぞれ独自の OAuth セッションを保持するため、別のツールですでに認証済みでも、個別にログインする必要があります。
{
  "mcpServers": {
    "my-tools": {
      "command": "python",
      "args": ["./scripts/mcp-server.py"],
      "env": {
        "DB_URL": "postgres://localhost/mydb"
      }
    }
  }
}

認証

一部のリモートMCPサーバーでは、OAuth認証が必要です。OAuth対応のサーバーを設定に追加したら、login コマンドを使って認証してください。
devin mcp login <server-name>
たとえば、
devin mcp login notion    # Notionで認証する
devin mcp login linear    # Linearで認証する
アクセスを承認するためのブラウザウィンドウが開きます。OAuthトークンはローカルに保存され、自動的に更新されます。 必要に応じて、特定のOAuthスコープをリクエストすることもできます:
devin mcp login notion --scopes read,write
サーバーに保存済みのOAuth認証情報を削除するには:
devin mcp logout <server-name>
サーバーがOAuthに対応している場合は、そのサーバーを初めて利用する際にも、自動的に認証を求められます。

事前登録済みのOAuthクライアント

OAuthベースのMCPサーバーのほとんどは動的クライアント登録 (DCR) をサポートしているため、Devin CLIが自動的に自身を登録し、クライアント認証情報を指定する必要はありません。 一部のプロバイダー (例: GitHub) はDCRをサポートしておらず、代わりに事前登録済みのOAuthクライアントが必要です。その場合は、oauthClientId / oauthClientSecret を使用して、クライアントIDと、機密クライアントの場合はクライアントシークレットを指定します。
{
  "mcpServers": {
    "my-server": {
      "url": "https://mcp.example.com/mcp",
      "transport": "http",
      "oauthClientId": "Iv1.abc123def456",
      "oauthClientSecret": "${env:MY_MCP_CLIENT_SECRET}"
    }
  }
}
oauthClientId が設定されている場合、Devin CLI は動的クライアント登録をスキップし、OAuthフローでは事前登録済みのクライアントを利用します。通常どおり認証するには、devin mcp login <name> を実行するか、初回利用時にトリガーしてください。 サーバーの追加時やログイン時に、これらをコマンドラインから設定することもできます:
devin mcp add my-server <URL> --oauth-client-id <ID> --oauth-client-secret <SECRET>
devin mcp login my-server --oauth-client-id <ID> --oauth-client-secret <SECRET>
oauthClientId / oauthClientSecret は、認可フローで使用される OAuth クライアントの認証情報です。これらは汎用的なリクエスト単位の認証情報ではありません。サーバーが固定のトークンを想定している場合は、代わりに headers (HTTP) または env (stdio) を利用してください。
クライアントシークレットを共有設定に commit しないでください。environment variable (${env:VAR}) から参照するか、ファイル (${file:/path}) から読み取るか、.devin/config.local.json (gitignored) に保存してください。詳しくは以下の「シークレットの管理」セクションを参照してください。

シークレットの管理

APIキーやシークレットをバージョン管理にコミットしないでください。機密性の高い値には .devin/config.local.json を利用してください。
チームでのプロジェクトでは、次のパターンを推奨します。
  1. .devin/config.json で、env var はプレースホルダーにするか未設定のまま サーバー を定義する
  2. 各チームメンバーが .devin/config.local.json に個人用のキーを追加する
ローカル設定ファイルは自動的に git の対象外になります。

MCPの権限

権限設定で、特定のMCPツールを事前承認したり、拒否したり、都度確認を必須にしたりできます。
{
  "permissions": {
    "allow": [
      "mcp__github__list_issues",
      "mcp__github__create_issue"
    ],
    "deny": [
      "mcp__github__delete_repo"
    ],
    "ask": [
      "mcp__linear__*"
    ]
  }
}
権限マッチャーのパターン:
パターン一致対象
mcp__server__tool特定のサーバー上の特定のツール
mcp__server__*特定のサーバー上のすべてのツール
mcp__*すべてのサーバー上のすべてのMCPツール

トラブルシューティング

リモート MCP サーバーへの接続時に Auth requiredAuthRequired のようなエラーが表示される場合、そのサーバーでは OAuth 認証が必要です。実行:
devin mcp login <server-name>
MCP クライアントごとに認証は個別に行われます。Windsurf や Claude Code ですでに認証済みでも、Devin CLI では別途 devin mcp login を実行する必要があります。認証状態を確認するには、認証情報をいったん削除してから再度追加してみてください:
devin mcp logout <server-name>
devin mcp login <server-name>
Devin CLI の外部でコマンドが動作することを確認してください:
npx -y @modelcontextprotocol/server-github
必要な環境変数がすべて設定されていることを確認してください。
エージェントに MCP サーバーとツールを一覧表示するよう依頼してください。サーバーの初期化に少し時間がかかる場合があります。
権限設定を確認してください。MCP ツールはデフォルトで承認を求めるようになっています。自動承認するには permissions.allow に追加してください。
HTTP サーバーに接続すると、Devin CLI はまず Streamable HTTP を試します。サーバーが HTTP 4xx エラー (例: 404 または 405) を返した場合、自動的に同じ設定済み URLレガシー SSE にフォールバックします。これは MCP spec の後方互換性ガイダンス に従った動作です。このフォールバックがトリガーされるのは 4xx レスポンスの場合のみです。接続エラー、タイムアウト、5xx レスポンスでは SSE を試行せず、そのままエラーとして報告されます。サーバーの SSE エンドポイントが別のパス (例: /mcp ではなく /sse) にある場合は、SSE URL とともに "transport": "sse" を設定すると、Streamable HTTP を試さずに直接接続できます。両方のトランスポートが失敗した場合、トラブルシューティングに役立つよう、エラーメッセージには両方の試行の詳細が含まれます。