Claude Media
ClineからClaude CodeへMCP設定を移行する手順

ClineからClaude CodeへMCP設定を移行する手順

ClineのmcpServers設定をClaude Codeにそのまま流用できるか実際に検証。stdio/remoteサーバーの移行コマンドと、警告なしに無視される2つのフィールドを解説。

ClineのMCP設定はClaude Codeに持ち込めるか

結論から言うと、部分的に持ち込めます。ClineのMCP設定ファイルは mcpServers というキーの下にサーバーごとの設定を並べる形式で、これはClaude Desktopなど他の主要なMCPクライアントと共通の書き方です。Claude Codeもこの形をそのまま読み替えるコマンド(claude mcp add-json)を用意しているため、エントリを1つずつコピーすれば移行できます。

ただし「そのまま流用」ではありません。実際に試すと、Cline固有のフィールドはClaude Code側でエラーを出さずに破棄され、Clineが使う一部の値はClaude Codeでは無効な入力として弾かれることが分かりました。この記事ではその境界線を、実際にコマンドを実行した結果とあわせて示します。

前提条件

  • Claude Codeがインストール済みで、ターミナルから起動できること
  • Cline側でMCPサーバーを1つ以上設定済みであること
  • 移行先のスコープ(自分専用か、チームで共有するか)を決めていること — 詳しい選び方は後述

以下の検証はClaude Code v2.1.270で行いました。

claude --version

ステップ1: Cline側の設定を取り出す

Clineの設定はCLI版とIDE拡張版で置き場所が違います。

  • CLI版: ~/.cline/mcp.json
  • IDE拡張版: ClineパネルのMCP Serversアイコン → Configureタブ → Configure MCP Serversボタンで開くJSON

Cline CLIを使っている場合は、ファイルを直接開かなくても cline config mcp --json で現在の設定をJSONのまま標準出力に書き出せます。サーバーが多いときは、これをファイルに保存してから1件ずつ移した方が写し間違いが少なくなります。

どちらも中身の形は同じで、mcpServers の下にサーバー名をキーにしたオブジェクトが並びます。ローカルで動くサーバー(STDIO)はこの形になります。

{
  "mcpServers": {
    "local-server": {
      "command": "node",
      "args": ["/path/to/server.js"],
      "env": {
        "API_KEY": "your_api_key"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

リモートサーバー(Streamable HTTP)はこう書きます。

{
  "mcpServers": {
    "remote-server": {
      "type": "streamableHttp",
      "url": "https://example.com/mcp",
      "headers": {
        "Authorization": "Bearer your-token"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

ステップ2: サーバーごとにclaude mcp add-jsonで移す

Claude Codeの公式ドキュメントは、他クライアント向けに書かれた mcpServers ブロックをそのまま流用する手順を示しています。mcpServers というラッパーキーではなく、その中のオブジェクト部分だけを claude mcp add-json <名前> '<json>' に渡します。

STDIOサーバーはフィールドの並びを変えずに渡せます。

claude mcp add-json local-server '{"command":"node","args":["/path/to/server.js"],"env":{"API_KEY":"your_api_key"}}'

リモートサーバーは type の値を書き換える必要があります。Clineの "type": "streamableHttp" はClaude Codeでは受け付けられません(理由は次の節で検証します)。"http" に置き換えて渡します。

claude mcp add-json remote-server '{"type":"http","url":"https://example.com/mcp","headers":{"Authorization":"Bearer your-token"}}'

公式ドキュメントが「他クライアント向けの設定で直す必要がある」と明記しているのはこの2点だけです。

  • url があるのに type が無いエントリ: Claude CodeはSTDIOサーバーだと解釈するため、http / sse / ws のいずれかを補う
  • サーバー名に英数字・ハイフン・アンダースコア以外の文字が入っている場合: そのままではキーとして使えないため名前を変える

Claude Desktop向けには claude mcp add-from-claude-desktop という一括インポートコマンドがありますが、Cline専用の一括コマンドはありません。サーバーの数だけ claude mcp add-json を繰り返します。

実際に検証してわかった2つの挙動

ここまでは公式ドキュメントに書かれている手順ですが、「Cline固有のフィールドをそのまま渡したらどうなるか」は明記されていなかったため、実際に動かして確認しました。

具体的には、次のJSONを渡すと、

{
  "command": "npx",
  "args": ["-y", "@example/mcp-server"],
  "env": { "API_KEY": "x" },
  "disabled": false,
  "autoApprove": []
}

~/.claude.json に書き込まれるのは command / args / env の3つだけになります。Cline側で無効化していたサーバーも、Claude Code側では有効な状態で登録される点は移行時に注意が必要です。無効にしておきたいサーバーは、移行後に /mcp パネルか disabledMcpServers 設定で個別に止め直す必要があります。

もう1つは type の値そのものの違いです。ClineのドキュメントはStreamable HTTPの設定値を "streamableHttp"(キャメルケース)と表記していますが、これをそのまま claude mcp add-json に渡すと Invalid configuration: Invalid input で追加自体が失敗します。Claude Codeが受け付けるのは "http"、またはMCP仕様の呼び方に合わせた別名 "streamable-http" の2つで、どちらもコマンド追加後は Type: http と表示されます。Clineの設定ファイルをコピー&ペーストしただけでは通らない箇所であり、公式の「2つの直し」に実質もう1つ加わる格好になります。

autoApprove が落ちる点は、移行先の設定が無いわけではありません。Clineの autoApprove は個別ツールを確認なしで実行するリストで、Claude Codeではpermissionsのallowルール(mcp__<サーバー名>__<ツール名>allow に列挙する形式)が同じ役割を担います。Cline側で自動承認していたツールを引き継ぎたい場合は、add-json とは別に .claude/settings.jsonpermissions.allow へこの形式でエントリを足す必要があります(claude mcp add-json はサーバー接続情報だけを書き込み、ツール単位の許可は関知しません)。

スコープの選び方

Claude CodeのMCPサーバーには3つのスコープがあり、Clineには無い「チーム共有」という選択肢が増えます。

スコープ読み込まれる範囲チーム共有保存先
local読み込まれる範囲追加したプロジェクトのみチーム共有されない保存先~/.claude.json
project読み込まれる範囲追加したプロジェクトのみチーム共有される(.mcp.jsonをバージョン管理)保存先プロジェクト直下の .mcp.json
user読み込まれる範囲全プロジェクトチーム共有されない保存先~/.claude.json

Cline CLIの ~/.cline/mcp.json は置き場所からしてuserスコープに近い状態です(全プロジェクトで有効)。個人用に使っていたサーバーはそのまま --scope user で移せます。一方、チームのリポジトリで共通のMCPサーバーを使う運用に切り替えたいなら、--scope project.mcp.json に書き出し、コミットしてチームに配ります。

プロジェクトスコープに切り替えると、Cline側には無かった「ワークスペース信頼」という手続きが挟まります。.mcp.json をクローンしたばかりのリポジトリでは、Claude Codeを対話的に起動してワークスペース信頼のダイアログを承認するまで、そのプロジェクトのサーバーは ⏸ Pending approval のまま接続されません。一方、claude -p のような非対話実行やSDKセッション、クラウドセッションでは、この承認プロンプト自体が出せないため、Claude Codeは承認を求めずにプロジェクトスコープのサーバーをそのまま読み込みます。読み込ませたくないサーバーがある場合は、disabledMcpjsonServers に登録してすべての権限モードでブロックするか、--strict-mcp-config--mcp-config に渡したサーバーだけに絞り込む必要があります。

チームで共有する .mcp.json にAPIキーを平文で書きたくない場合は、${VAR} 形式の環境変数展開が使えます。${VAR:-default} と書けば、変数が未設定のときのデフォルト値も指定できます。

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}

展開対象は command / args / env / url / headers の5箇所です。参照した環境変数が未設定でもエラーにはならず、claude mcp list に警告が出た上で ${VAR} という文字列のままサーバーへ渡ってしまうので、チームに配る前に変数名がREADME等に明記されているか確認します。

認証つきのリモートサーバーを移すとき

Clineのリモートサーバー設定は headers に固定のBearerトークンを書く方式が基本ですが、Claude CodeはHTTPサーバーに対してOAuth 2.0によるサインインもサポートしています。ここで注意が必要なのは、headers.Authorization を設定したサーバーは、そのヘッダーが 401/403 で拒否されてもOAuthに自動でフォールバックしないという挙動です。Cline時代のトークンが失効している状態でそのまま移行すると、接続失敗のまま気づかないことがあります。

トークンをOAuthに切り替えたい場合は、移行時に headers を書かずにサーバーを追加します。

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

追加後、Claude Code内で /mcp を実行するとブラウザでのサインイン手順が案内されます。認証情報は自動更新され、/mcp メニューの「Clear authentication」でいつでも失効させられます。

よくあるつまずき

  • claude mcp get <名前> がFailed to connectを返す: 設定の追加と接続の成否は別に確認する必要があります。Added ... の表示はJSONが書き込まれたことを意味するだけで、接続確認は別途 claude mcp listclaude mcp get で行います
  • 同じ名前のサーバーを複数スコープで定義する: Claude Codeはlocal → project → userの優先順位で1つだけ接続します。フィールドはマージされず、優先度が高いスコープの定義がまるごと使われます
  • env の値にAPIキーを直書きしたまま移す: .mcp.json をコミットする運用に切り替えるなら、${API_KEY} のような環境変数展開に書き換えてから共有します
  • サーバー名が予約語と衝突する: workspace / claude-in-chrome / computer-use / Claude Preview / Claude Browser はClaude Code組み込みサーバーの名前として予約されています。設定ファイルに直接書いたエントリはこの名前だと起動時に警告付きでスキップされ、claude mcp add コマンドで追加しようとした場合はその場でエラーになります。Clineの設定で汎用的な名前を付けていた場合は移行時にリネームします
  • 同じスコープに同じ名前で追加し直そうとする: 一度移行したサーバーを別の内容で上書きしようとして再度 claude mcp add-json を実行すると、MCP server <名前> already exists in local config のようなエラーで弾かれます。設定を直すときは先に claude mcp remove <名前> で消してから追加し直します

まとめ

ClineのmcpServers設定は、公式手順どおりに直せばClaude Codeへ1サーバーずつ移せます。ただし「そのまま」ではなく、url エントリへの type 補完とサーバー名の文字種という公式の注意点に加えて、disabled / autoApprove が警告なしに無視される点と、streamableHttp という値自体が拒否される点は、実際に動かすまで分かりません。移行後は claude mcp list で全サーバーの接続状態を確認し、Cline側で無効にしていたサーバーが有効化されていないかを見ておくとよいでしょう。

認証つきのサーバーを移した直後は /mcp を開き、✔ Connected になっているか、! Needs authentication のままサインインが必要かを1つずつ確認しておくと、後で「動くと思っていたツールが呼ばれない」という食い違いを防げます。

Clineとの機能・課金モデルの違い全体はClaude Code Clineの違いと使い分けにまとめています。claude mcp add の構文やスコープの詳細はClaude Code MCP設定ガイド、Claude Desktop側からの移行はClaude Desktop MCP設定ガイドを参照してください。

この記事を共有:XはてブLinkedIn