「APIキーは取得したのに、Claudeにファイルを読ませる方法がわからない」——正直なところ、MCP(Model Context Protocol)の設定で詰まる人は多い。設定ファイルのパス間違い1つで動かないし、古い記事の情報(HTTP+SSE方式)をそのまま試すと2026年時点では動作しない。

この記事では、Claude APIのMCP設定をゼロから動かすためのOS別手順・コピペサンプル・よくあるエラー対処をまとめて解説する。読み終わればローカルのファイルシステム連携と外部サービス接続の両方を自力で設定できる。


MCPとは何か|Claude APIとツールをつなぐ仕組みを5分で理解する

「プロンプトだけ」では越えられない壁

Claude APIは文章生成が得意だが、単体では「実行」ができない。ローカルのファイルを読む、データベースに書き込む、Notionのページを更新する——こういった処理を行うには、Claudeと外部ツールをつなぐ橋が必要になる。その橋がMCPだ。

2024年11月にAnthropicがオープンソース化して以降、対応クライアントとサーバーが急増した。2026年前半時点で公式レジストリへの登録サーバー数は500以上。GitHub・Slack・Notion・PostgreSQL・Browserなど、主要サービスのほぼすべてをカバーしている。

stdioとStreamable HTTP:2方式の違いと選び方

方式 用途 特徴
stdio ローカルMCPサーバー 標準入出力で通信。設定が簡単。Claude Desktopの主流
Streamable HTTP リモートMCPサーバー 2025年3月の仕様更新で採用。旧HTTP+SSEの後継
HTTP+SSE 旧方式 非推奨。2026年時点では使わない

ローカルでツールを動かすならstdio一択。外部サービスに接続するならStreamable HTTP。この判断だけ最初に決めれば、設定の方向性が決まる。

誤解しやすい6つのポイント

よくある誤解 2026年時点の正解
MCPはClaude Desktopだけで使う Claude Code・API直接呼び出し・独自クライアントでも使用可
HTTP+SSEで設定すればOK 非推奨。Streamable HTTPへ移行が必要
APIキーだけあれば動く MCPサーバーの起動・パス設定・権限付与が別途必要
設定ファイルはYAML形式 JSON形式claude_desktop_config.json)が正しい
全モデルがMCP対応 tool use対応はClaude 3.x以降のみ
ローカルはセキュリティリスクなし ツール呼び出し権限の範囲設定は必須

APIキーの取得や基本的なAPI呼び出しがまだの場合は、先にClaude APIの基本セットアップを済ませてからこの記事を読み進めてほしい。


💡 関連教材: n8nノーコード自動化 実践ワークフロー集(¥1,980) — Gmail/Slack/Notion/Claude連携の動くワークフロー10本を実装込みで完全解説(全35ページ)

Claude DesktopでMCPを動かす最短手順|設定ファイルをOS別に作る

まず設定ファイルのパスを確認する

フォーラム報告によると、MCP関連トラブルの約60%が設定ファイルのパス誤りや構文ミスに起因する(非公式推計)。最初にここを潰しておく。

# macOS
~/Library/Application Support/Claude/claude_desktop_config.json

# Windows
%APPDATA%\Claude\claude_desktop_config.json

# Linux(Claude Code使用時)
~/.config/claude/claude_desktop_config.json

Windowsの場合、%APPDATA%は通常[REDACTED]\AppData\Roamingに展開される。エクスプローラーのアドレスバーに直接%APPDATA%\Claudeと入力すれば一発で開ける。

ファイルが存在しない場合は自分で作成する。Claude Desktopは起動時にこのファイルを読み込むため、設定を変更したら必ずアプリを再起動する。これを忘れて「反映されない」と悩むケースが多い。

filesystemサーバーをnpxで即起動する(最小構成)

{ “mcpServers”: { “filesystem”: { “command”: “npx”, “args”: [ “-y”, “@modelcontextprotocol/server-filesystem”, “/Users/yourname/Documents” ] } } }


`/Users/yourname/Documents`の部分を、Claudeにアクセスさせたいディレクトリのパスに変更する。Windowsの場合はバックスラッシュをスラッシュに変えるか、`C:\\Users\\yourname\\Documents`のようにエスケープする。

`npx -y`を使うと、サーバーパッケージのインストールを省略できる。Node.jsが入っていれば追加作業なしに動く。

### uvx(Python環境)を使う場合

Python環境を使っているなら`uvx`が便利だ。


{
  "mcpServers": {
    "filesystem": {
      "command": "uvx",
      "args": [
        "mcp-server-filesystem",
        "/your/path"
      ]
    }
  }
}

uvxnpxの選び方はシンプルで、普段使っている言語に合わせるだけでいい。Python中心の開発者はuvx、JavaScriptやNode.jsを使っているならnpxを選ぶ。どちらも動作に大差はない。

動作確認:MCP Inspectorでサーバーを検証する

設定後にClaude Desktopを再起動して、チャット画面にハンマーアイコン(🔨)が表示されればMCPサーバーが認識されている。表示されない場合はMCP Inspectorで原因を調べる。

# npxで即起動(インストール不要)
npx @modelcontextprotocol/inspector

ブラウザでhttp://localhost:5173が開く。接続するサーバーのコマンドとパスを入力して実行すると、ツール一覧や接続状態が確認できる。設定が正しいかどうかをClaude Desktop外で検証できるため、デバッグ時間が大幅に減る。


外部サービス・カスタムツールとの連携設定|GitHub・Notion・自作サーバー

サードパーティ製MCPサーバーの設定サンプル

公式レジストリに登録されているサーバーはclaude_desktop_config.jsonに追記するだけで使える。複数サーバーの同時設定も可能だ。

{ “mcpServers”: { “github”: { “command”: “npx”, “args”: [“-y”, “@modelcontextprotocol/server-github”], “env”: { “GITHUB_PERSONAL_ACCESS_TOKEN”: “ghp_xxxxxxxxxxxxx” } }, “notion”: { “command”: “npx”, “args”: [“-y”, “@modelcontextprotocol/server-notion”], “env”: { “NOTION_API_KEY”: “secret_xxxxxxxxxxxxx” } }, “postgres”: { “command”: “npx”, “args”: [“-y”, “@modelcontextprotocol/server-postgres”], “env”: { “DATABASE_URL”: “postgresql://user:password@localhost:5432/mydb” } } } }


`env`ブロックに書いたキーと値は、MCPサーバープロセスの環境変数として渡される。APIキーをコマンドライン引数に直書きする方法は避けること。履歴に残るリスクがある。

### リモートMCPサーバーへの接続とOAuth 2.0認証

リモートサーバーへの接続はStreamable HTTP方式を使う。2025年の仕様更新でOAuth 2.0が認証の標準となった。


{
  "mcpServers": {
    "remote-service": {
      "url": "https://api.example.com/mcp",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_TOKEN"
      }
    }
  }
}

よくある失敗がAPIキー方式とOAuth方式の混在だ。サービス側がOAuth 2.0フローを要求しているのに、静的なBearerトークンを設定して「認証エラーが消えない」と詰まるケースがある。接続先サービスのMCPドキュメントで認証方式を必ず確認してから設定する。

Python SDKで自作MCPサーバーを作る最小構成

既存サービスにMCPサーバーがない場合、自分で作る。Python SDKの最小構成はこれだけだ。

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp import types

app = Server("my-custom-server")

@app.list_tools()
async def list_tools() -> list[types.Tool]:
    return [
        types.Tool(
            name="get_weather",
            description="指定した都市の天気情報を返す",
            inputSchema={
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "都市名"}
                },
                "required": ["city"]
            }
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get_weather":
        city = arguments["city"]
        # 実際の処理をここに書く
        return [types.TextContent(type="text", text=f"{city}の天気: 晴れ 25℃")]

if __name__ == "__main__":
    import asyncio
    asyncio.run(stdio_server(app))

このファイルをserver.pyとして保存し、claude_desktop_config.jsonから呼び出す。

{ “mcpServers”: { “my-server”: { “command”: “python”, “args”: [“/absolute/path/to/server.py”] } } }


パスは**絶対パス**で書く。相対パスは動作しないことが多い。

### Claude CodeでのMCP設定(Claude Desktopとの差異)

Claude Codeを使う場合、設定ファイルのパスが異なる。

```bash
# Claude Codeの設定コマンド
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /your/path

# 設定済みサーバーの確認
claude mcp list

CLIコマンドで管理できるため、JSONを直接編集するよりミスが少ない。開発作業でClaude Codeを使っているなら、こちらの方法をおすすめする。


権限設計・デバッグ・よくあるエラーの対処法

権限スコープを最小化する原則

使ってみて気づいたが、最初から広い権限を与えると後で怖くなる。filesystemサーバーを設定するとき、ホームディレクトリ全体(~/)を渡してしまいがちだが、これは危険だ。

{ “mcpServers”: { “filesystem”: { “command”: “npx”, “args”: [ “-y”, “@modelcontextprotocol/server-filesystem”, “/Users/yourname/projects/my-project” ] } } }


アクセスを許可するディレクトリは**プロジェクト単位に絞る**。shell実行系のサーバーは特に注意が必要で、最初は読み取り専用の操作から始めるのが鉄則だ。

### よくあるエラーと対処法

| エラー | 原因 | 対処 |
|---|---|---|
| MCPサーバーが認識されない | 設定後に再起動していない | Claude Desktopを完全に終了して再起動 |
| ハンマーアイコンが表示されない | JSON構文エラー | JSONlintでファイルを検証 |
| ツールが呼び出せない | パスが相対パスになっている | 絶対パスに変更 |
| 権限エラー | アクセス許可ディレクトリ外を参照 | argsのパスを確認 |
| 接続タイムアウト | npx/uvxのダウンロードに時間がかかっている | 初回は30秒程度待つ |
| OAuthエラー | 認証方式のミスマッチ | サービスのMCPドキュメントで認証方式を確認 |

### JSONの構文チェックを必ず行う

これ、意外と知られていないが、`claude_desktop_config.json`の構文エラーはClaude Desktop側でほぼ無言で失敗する。エラーメッセージが出ないまま「なぜか動かない」状態になる。

設定ファイルを編集したら、必ずJSONバリデーターで確認する。

```bash
# macOS/Linuxでコマンドラインチェック
python3 -m json.tool ~/Library/Application\ Support/Claude/claude_desktop_config.json

# エラーがなければ整形されたJSONが表示される
# エラーがあれば行番号付きで表示される

プロダクション環境でのサンドボックス化

本番環境でMCPサーバーを動かす場合、Dockerコンテナ内で起動するのが安全だ。サーバープロセスがホスト環境に直接アクセスできない状態にする。開発環境と本番環境でアクセス可能なディレクトリ・ツールの範囲を明示的に分けること。


よくある質問

Q. Claude.aiのWeb版でもMCPは使えますか?

Claude for Work(Teams/Enterprise)プランでは、リモートMCPサーバーへの接続が2025年から段階的に提供されている。無料版・Proプランでは2026年前半時点で対応が限定的だ。フル活用したいなら、Claude Desktop(デスクトップアプリ)またはClaude Codeを使うのが現実的な選択になる。

Q. MCP設定後にAPIの使用料金は増えますか?

MCP経由でツールを呼び出すと、ツールの結果をコンテキストに含めてClaude APIに送信する。その分、トークン消費が増える。特にファイル読み取り系のツールで大きなファイルを渡すと、1回の呼び出しで数千トークン増えることもある。コスト管理の観点から、allowedDirectoriesで読み取り範囲を絞るのは費用対効果の面でも有効だ。

Q. 複数のMCPサーバーを同時に設定できますか?

できる。mcpServersオブジェクトに複数のキーを追加するだけだ。10個以上の同時設定も技術的には可能だが、サーバーが増えるほど起動時間とデバッグの複雑さが上がる。実務では用途ごとに3〜5個程度に絞っている開発者が多い。


設定が動いたら次にやること

MCPの設定が通ったら、次は使うツールを1つに絞って小さな自動化を1本作ることをおすすめする。「全部設定してから使おう」と思うと、結局どれも使いこなせないまま終わる。

たとえばfilsystemサーバーが動いている状態で、「指定フォルダのMarkdownファイルを読んで要約する」という処理を1つ作る。動いた実感があれば、次のNotionやGitHub連携へ自然に進める。

Claude APIでNotionへの自動保存を組み合わせたい場合や、Google Sheetsへのデータ書き込みを組み込みたい場合は、それぞれの連携記事も参照してほしい。MCP経由で処理する方法と、直接API呼び出しで処理する方法の使い分けが具体的にわかる。


関連記事


📘 もっと深く学びたい方へ

この記事で紹介した内容を、さらに体系的に・実務レベルで習得できる教材を販売中です。

n8nノーコード自動化 実践ワークフロー集(¥1,980)

Gmail/Slack/Notion/Claude連携の動くワークフロー10本を実装込みで完全解説(全35ページ)

  • Cloud版前提・2026年最新のn8n v1系UI完全対応
  • 動くノード設定値・JSON・OAuth設定まで全部入り
  • 10ワークフロー(Gmail/Slack/Notion/Discord/Webhook/RSS)はコピペで即実務投入

👉 今すぐ購入する

ChatGPT業務自動化 実践テンプレート集(¥1,480)

API・スプレッドシート・メール・議事録・請求書をコピペで自動化する実装特化型テンプレート集(全22ページ)

  • 動くGASコード・API設定手順・プロンプトをワンセット収録
  • スプレッドシート連携/メール/議事録/請求書を実務レベルで自動化
  • コピペで即動く実装コード(Python / GAS)付き

👉 今すぐ購入する


関連ツール紹介

AIスキルを収益化するならココナラでサービスを出品できる。AIライティング・画像生成・データ分析など、AIスキルを活かした案件の需要は増えている。

おすすめツールの一覧はこちらにまとめている。