MCP実践構築ガイド2026年版 — Claude・Cursor・n8nにMCPサーバーを接続して「つながるAI」を自分で作る

「MCPという言葉は聞いたことがあるが、結局何をどうすれば使えるのかわからない」——MCP(Model Context Protocol)に関するこの声は、2026年に入っても多く聞かれます。概念の解説記事は増えましたが、「実際にMCPサーバーを立て、ClaudeやCursorに接続して動かす」ところまで踏み込んだ実践記事はまだ少ない。

本記事では、MCPの最小限の概念確認から、ローカル環境へのMCPサーバー構築・Claude Desktop / Cursor / n8nへの接続・実際に動く状態までを、コマンドと設定ファイルの実例付きで解説します。「概念はわかった。次に何をすればいいか」という方のための実践ブリッジ記事です。

MCPの概念・設計思想については「MCPとは何か——Model Context Protocolの概念ガイド」を、A2Aプロトコルとの関係は「A2Aプロトコル解説ガイド」を、AIエージェントの最新動向は「AIエージェント最前線ガイド」を先にご覧ください。n8nやDifyを使ったエージェント構築の全体像は「AIエージェント実践構築ガイド」で解説しています。


  1. MCPとは何か——実践に必要な最小限の理解
  2. 事前準備——環境構築のチェックリスト
    1. 必須環境
    2. Claude Desktopのインストール確認
  3. STEP 1:公式MCPサーバーを接続する——Filesystem・GitHub・Notionの3本から始める
    1. ① Filesystem MCPサーバー——ローカルファイルをClaudeに読み書きさせる
    2. ② GitHub MCPサーバー——リポジトリをClaudeに直接参照させる
    3. ③ Notion MCPサーバー——NotionデータベースをAIの「記憶」にする
  4. STEP 2:CursorにMCPサーバーを接続する
    1. Cursorの設定ファイルの場所と記述方法
  5. STEP 3:n8nでMCPサーバーを使ってワークフローを自動化する
    1. n8nをMCPクライアントとして使う——AIがワークフロー内でMCPツールを呼び出す
    2. n8nをMCPサーバーとして公開する——ClaudeからワークフローをトリガーさせるNode.jsサーバーの立て方
  6. STEP 4:カスタムMCPサーバーを自作する——自社システムをMCPで接続する
    1. Python版カスタムMCPサーバーの最小実装例
    2. カスタムサーバー開発のベストプラクティス
  7. トラブルシューティング——よくあるエラーと解決策
  8. 実践的なMCP活用シナリオ——「つながるAI」の具体像
  9. よくある質問(FAQ)
    1. Q1. MCPサーバーはクラウドに立てる必要がありますか?
    2. Q2. APIキーや認証情報を設定ファイルに書くのはセキュリティ上問題ありませんか?
    3. Q3. MCPとFunction Calling(ツール呼び出し)は何が違いますか?
    4. Q4. 既存のn8nワークフローをMCPで呼び出すのは難しいですか?
    5. Q5. MCPはClaude以外のAIでも使えますか?
  10. まとめ——MCPは「AIを孤立させない」ための基盤技術

MCPとは何か——実践に必要な最小限の理解

実装に入る前に、MCPの本質を一言で確認します。

MCPはAIアプリケーションが外部ツール・データソース・サービスと通信するための共通規格(プロトコル)です。USB-Cがデバイスとケーブルの接続を標準化したように、MCPはAIクライアント(ClaudeやCursor)と外部リソースを提供するMCPサーバーの通信を標準化します。

MCPを使うと何が変わるかを具体的に言うと、「ClaudeにGitHubのリポジトリを直接読ませる」「CursorからSlackにメッセージを送る」「n8nワークフロー内でNotionのデータベースをAIに参照させる」——これらをAPIの個別実装なしに、MCPサーバーを介した統一インターフェースで実現できます。

MCPのアーキテクチャは以下の3要素で構成されます。

要素役割具体例
MCPホストAIが動くアプリケーション側Claude Desktop、Cursor、n8n
MCPクライアントホスト内でMCP接続を管理するコンポーネント各ホストアプリに内蔵
MCPサーバー外部リソースをMCP経由で提供するプロセスGitHub MCP Server、Notion MCP Server、自作サーバー

本記事で構築するのは主に「MCPサーバー」の部分です。すでにホスト側(Claude Desktop・Cursor)はMCPクライアントを内蔵しているため、MCPサーバーをローカルで起動して設定ファイルに記述するだけで接続が完了します。

事前準備——環境構築のチェックリスト

本記事の手順を進めるために、以下の環境が必要です。

必須環境

  • Node.js 18以上(推奨:最新LTS版)——ほとんどのMCPサーバーはNode.jsで動作します
  • Python 3.10以上——一部のMCPサーバーおよびカスタムサーバー作成に使用
  • Git——MCPサーバーのリポジトリ取得に使用
  • Claude Desktop(無料)またはCursorのインストール

バージョン確認は以下のコマンドで行えます。

node --version    # v18.0.0 以上であること
python --version  # 3.10.0 以上であること
git --version

Node.jsが未インストールの場合はnodejs.orgから、Pythonはpython.orgからインストールしてください。WindowsユーザーはWSL2(Windows Subsystem for Linux)環境での作業を推奨します。

Claude Desktopのインストール確認

claude.ai/downloadからClaude Desktopをインストールします。MCP機能を使うにはClaude Desktopが必要で、ブラウザ版のclaude.aiではMCP接続はできません(2026年2月時点)。インストール後、以下のパスに設定ファイルが生成されているか確認してください。

  • Mac:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

ファイルが存在しない場合は空のJSONファイルを作成してください:

{
  "mcpServers": {}
}

STEP 1:公式MCPサーバーを接続する——Filesystem・GitHub・Notionの3本から始める

まず最も確実に動く公式・準公式のMCPサーバーを接続して、MCPの動作感をつかみます。Anthropicが公開しているリファレンス実装(@modelcontextprotocol/server-*)から始めるのが最速です。

① Filesystem MCPサーバー——ローカルファイルをClaudeに読み書きさせる

最もシンプルな入門用MCPサーバーです。指定したディレクトリのファイルをClaudeが直接読み書きできるようになります。

インストールと設定:

# npxで直接実行するためインストール不要
# claude_desktop_config.json に以下を追記する

claude_desktop_config.json を以下の内容に編集します:

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

/Users/yourname/Documents/ai-workspace の部分は、Claudeにアクセスさせたい実際のディレクトリパスに変更してください。Windowsの場合は C:\\Users\\yourname\\Documents\\ai-workspace のように記述します。

設定後、Claude Desktopを再起動します。Claude Desktopの左下に「MCP」アイコンが表示され、接続されたサーバー名が確認できれば成功です。

動作確認——Claudeに話しかけてみる:

「ai-workspaceフォルダの中にあるファイルの一覧を教えて」

「report.txtというファイルを作って、今日の日付と『MCP接続テスト成功』と書いておいて」

Claudeがフォルダ内のファイルを一覧表示し、新しいファイルを作成できればFilesystem MCPの接続は完了です。

② GitHub MCPサーバー——リポジトリをClaudeに直接参照させる

GitHubのリポジトリ・Issue・Pull Requestをクロードが直接読み書きできるようになります。コードレビュー・Issue対応・ドキュメント生成の自動化に直結する強力なサーバーです。

GitHub Personal Access Tokenの取得:

GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token から、必要なスコープ(reporead:org)にチェックを入れてトークンを生成します。生成されたトークンはこの画面でしか確認できないため、必ずコピーして保存してください。

claude_desktop_config.json への追記:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/yourname/Documents/ai-workspace"
      ]
    },
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxxxxxxx"
      }
    }
  }
}

ghp_xxxxxxxxxxxxxxxxx を先ほど取得したトークンに置き換えてください。Claude Desktopを再起動後、以下のように話しかけて動作を確認します:

「GitHubのyourname/your-repoリポジトリの最近のIssueを5件リストアップして」

「このリポジトリのREADME.mdを読んで、改善点を3つ提案して」

③ Notion MCPサーバー——NotionデータベースをAIの「記憶」にする

NotionのページとデータベースをClaudeが読み書きできるようになります。「議事録をNotionに直接書いてもらう」「Notionのタスクリストを読んで今日やるべきことを整理してもらう」といった業務活用に直結します。

Notion Integration Tokenの取得:

notion.so/my-integrations にアクセスし、「New integration」を作成します。作成後に表示される「Internal Integration Token」(secret_で始まる文字列)をコピーします。次に、アクセスさせたいNotionページ・データベースを開き、右上の「…」→「Connections」からこのIntegrationを追加してください(この手順を忘れると接続しても何も読めません)。

{
  "mcpServers": {
    "filesystem": { ... },
    "github": { ... },
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer secret_xxxxxxxxx\", \"Notion-Version\": \"2022-06-28\"}"
      }
    }
  }
}

Claude Desktopを再起動し、「Notionの〇〇データベースの今週追加されたアイテムを一覧表示して」と話しかけて動作を確認してください。

STEP 2:CursorにMCPサーバーを接続する

Claude DesktopだけでなくCursorでもMCPサーバーを利用できます。コーディング中にGitHubやファイルシステムをAIが直接参照できるようになるため、開発効率が大幅に上がります。

Cursorの設定ファイルの場所と記述方法

Cursorのグローバル設定ファイルは以下のパスにあります:

  • Mac:~/.cursor/mcp.json
  • Windows:%APPDATA%\Cursor\mcp.json

ファイルが存在しない場合は新規作成します。記述形式はClaude Desktopの claude_desktop_config.json と同じ構造です:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/yourname/projects"
      ]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxxxxxxx"
      }
    }
  }
}

プロジェクト単位でMCPを設定したい場合は、プロジェクトルートに .cursor/mcp.json を作成することでプロジェクトスコープの設定ができます。これはチームで同じMCP設定を共有する際に便利です(ただしトークンなどの機密情報は含めないようにし、 .gitignore に追加してください)。

設定後、Cursorを再起動し、Cursor Settings → Features → MCP Servers に接続済みのサーバーが表示されれば成功です。Cursorのチャットパネルで「@filesystem」のように @ でサーバーを呼び出せるようになります。

STEP 3:n8nでMCPサーバーを使ってワークフローを自動化する

n8nはMCPクライアントとして機能し、ワークフロー内でMCPサーバーのツールを呼び出せます。また、n8n自身をMCPサーバーとして公開し、ClaudeやCursorからn8nのワークフローをトリガーさせることも可能です。

n8nをMCPクライアントとして使う——AIがワークフロー内でMCPツールを呼び出す

n8nのAI Agentノードに「MCP Client Tool」ノードを接続することで、n8nのワークフロー内でMCPサーバーのツールを利用できます。例えば「ユーザーからのSlackメッセージを受け取り→AIがNotionを検索して回答を生成し→Slackに返信する」というフローをMCPで構築できます。

n8nのワークフロー構成例:

[Slack Trigger]
    ↓
[AI Agent ノード]
    ├── [MCP Client Tool: Notion検索]
    └── [MCP Client Tool: Filesystem参照]
    ↓
[Slack Reply ノード]

AI Agentノードの設定でMCP Serverのエンドポイント(後述のMCPサーバーURLまたはローカルプロセス)を指定し、使用可能なツールを登録します。

n8nをMCPサーバーとして公開する——ClaudeからワークフローをトリガーさせるNode.jsサーバーの立て方

n8n自身が持つワークフローをMCPツールとして公開することで、Claude Desktopから「n8nのワークフローを実行して」と自然言語で指示できるようになります。n8nにはMCP Server Triggerノードがあり、これを使ってワークフローをMCPエンドポイントとして公開できます。

手順:

①n8nで新規ワークフローを作成し、トリガーノードとして「MCP Server Trigger」を選択します。②実行したい処理(例:特定のデータベースへの書き込み・外部APIの呼び出し・ファイル生成など)を続けのノードで構成します。③ワークフローを有効化すると、MCPエンドポイントURL(http://localhost:5678/mcp/xxxxxxxx 形式)が発行されます。

このURLをClaude Desktopの設定に追加します:

{
  "mcpServers": {
    "n8n-workflows": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-everything"],
      "env": {
        "N8N_MCP_URL": "http://localhost:5678/mcp/xxxxxxxx",
        "N8N_API_KEY": "your-n8n-api-key"
      }
    }
  }
}

これにより、Claude Desktopから「n8nのレポート生成ワークフローを実行して、結果をNotionに保存して」のような複合指示が1回の会話で完結するようになります。

STEP 4:カスタムMCPサーバーを自作する——自社システムをMCPで接続する

公式サーバーにない社内システム・独自APIをMCPで接続するには、カスタムMCPサーバーを作成します。MCPのSDKはTypeScript/Python両方が提供されており、既存のAPIラッパーを書く感覚で実装できます。

Python版カスタムMCPサーバーの最小実装例

以下は「社内の商品データベース(CSV)を検索するMCPサーバー」の最小実装例です。

# pip install mcp でインストール

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

app = Server("product-database")

# ツールの定義
@app.list_tools()
async def list_tools():
    return [
        types.Tool(
            name="search_products",
            description="商品データベースを検索します",
            inputSchema={
                "type": "object",
                "properties": {
                    "keyword": {
                        "type": "string",
                        "description": "検索キーワード(商品名・カテゴリなど)"
                    }
                },
                "required": ["keyword"]
            }
        )
    ]

# ツールの実装
@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "search_products":
        keyword = arguments["keyword"]
        results = []

        # CSVファイルを検索(実際のパスに変更してください)
        with open("products.csv", "r", encoding="utf-8") as f:
            reader = csv.DictReader(f)
            for row in reader:
                if keyword.lower() in row["name"].lower():
                    results.append(row)

        if not results:
            return [types.TextContent(type="text", text=f"「{keyword}」に該当する商品は見つかりませんでした。")]

        output = f"「{keyword}」の検索結果:{len(results)}件\n\n"
        for r in results[:10]:  # 最大10件
            output += f"・{r['name']}:{r['price']}円({r['category']})\n"

        return [types.TextContent(type="text", text=output)]

async def main():
    async with stdio_server() as (read_stream, write_stream):
        await app.run(read_stream, write_stream, app.create_initialization_options())

if __name__ == "__main__":
    asyncio.run(main())

このファイルを product_mcp_server.py として保存し、Claude Desktopの設定に追加します:

{
  "mcpServers": {
    "product-database": {
      "command": "python",
      "args": ["/Users/yourname/mcp-servers/product_mcp_server.py"]
    }
  }
}

Claude Desktopを再起動後、「青色のTシャツを検索して」と話しかけると、CSVから該当商品を検索して返してくれます。このパターンを応用すれば、社内の顧客管理システム・在庫データベース・基幹システムのAPIをMCPでClaudeに接続できます。

カスタムサーバー開発のベストプラクティス

ツールの説明文(description)は丁寧に書くことが重要です。AIはこの説明を読んでツールを使うかどうかを判断するため、「何ができるか」「どんなときに使うべきか」を明確に記述してください。エラーハンドリングは必ず実装してください。AIがツールの失敗を正しく認識できるよう、エラー時はエラー内容をテキストで返す設計にします。また、1つのサーバーにツールを詰め込みすぎず、関心事ごとに分割したサーバー構成がメンテナンス性を高めます。

トラブルシューティング——よくあるエラーと解決策

症状原因解決策
MCPサーバーが認識されない設定ファイルのJSON構文エラーJSONLintなどでJSONの構文を検証する
「npxが見つからない」エラーNode.jsが未インストールまたはPATH未設定Node.jsを再インストールし、ターミナルを再起動
GitHubサーバーが認証エラートークンのスコープ不足または期限切れGitHubで新しいトークンを発行し、設定を更新
Notionが何も読めないIntegrationをNotionページに追加していないNotionページのConnectionsにIntegrationを追加
カスタムサーバーが起動しないPythonパスの問題・依存ライブラリ未インストールwhich pythonでパスを確認、pip install mcpを実行
Claude Desktopでツールが表示されない設定変更後の再起動が必要Claude Desktopを完全に終了し、再起動する

デバッグの基本手順:Claude Desktop → Settings → Developer → MCP Logs でログを確認できます。サーバーの起動エラーや接続失敗の詳細がここに出力されます。カスタムサーバーの場合は、コマンドラインで直接 python your_server.py を実行し、起動エラーがないか先に確認するのが効率的です。

実践的なMCP活用シナリオ——「つながるAI」の具体像

ここまでの構築を踏まえて、実際にどんな業務が実現できるかを具体的なシナリオで示します。

シナリオ①:週次レポートの完全自動化
「今週のGitHubのコミット履歴を読んで、Notionのプロジェクトページを参照して、週次レポートをMarkdown形式でローカルに保存して」——この1文でGitHub MCP・Notion MCP・Filesystem MCPが連携し、レポートが自動生成されます。

シナリオ②:コードレビューの効率化(Cursor)
Cursorのチャットで「@githubこのPull Requestを読んで、セキュリティ上の問題点と改善提案を日本語でまとめて」と入力するだけで、GitHub MCPがPRを取得し、Cursorのコンテキストと合わせてコードレビューを行います。

シナリオ③:問い合わせ対応の半自動化(n8n)
メールでの問い合わせをトリガーに、n8nワークフローがNotionの社内FAQデータベースをMCPで検索し、AIが回答ドラフトを生成してSlackに通知するフローを構築できます。担当者はSlack上で承認するだけで、返信メールが自動送信されます。

よくある質問(FAQ)

Q1. MCPサーバーはクラウドに立てる必要がありますか?

本記事で解説したローカルMCPサーバーは、自分のPC上でのみ動作します。これはセキュリティ面で有利(外部に通信しない)ですが、他のチームメンバーからはアクセスできません。チーム共有が必要な場合は、MCPサーバーをDockerコンテナ化してクラウドに配置し、HTTPS経由でアクセスする構成が必要になります。

Q2. APIキーや認証情報を設定ファイルに書くのはセキュリティ上問題ありませんか?

ローカルマシン上のファイルに記述する場合、そのファイルへのアクセス権が適切であれば実用上は問題ないケースが多いですが、設定ファイルをGitで管理する場合は必ず .gitignore に追加し、絶対にリポジトリにコミットしないようにしてください。より安全な方法として、環境変数に格納したAPIキーをconfig内から参照する構成も使えます。

Q3. MCPとFunction Calling(ツール呼び出し)は何が違いますか?

Function CallingはAPIレベルで特定のAIモデルにツールを定義する仕組みで、実装がモデルごとに異なります。MCPはその上位レイヤーの標準規格で、一度MCPサーバーを作れば、MCPに対応したすべてのクライアント(Claude・Cursor・将来対応するツール)で使い回せます。「Function CallingはAPIの機能、MCPは標準規格」と理解するとわかりやすいです。

Q4. 既存のn8nワークフローをMCPで呼び出すのは難しいですか?

n8nのMCP Server Triggerノードを追加するだけで既存ワークフローをMCPエンドポイントとして公開できます。ただしツールの説明文(AIへのツール説明)を適切に書く必要があり、ここに手間がかかります。n8nを使ったエージェント構築の詳細は「AIエージェント実践構築ガイド」で解説しています。

Q5. MCPはClaude以外のAIでも使えますか?

MCP自体はAnthropicが提案した仕様ですが、オープンなプロトコルとして公開されており、すでにCursor・Zed・Windsurf・Continue(VSCode拡張)など複数のAI開発ツールが対応しています。今後、ChatGPT・Geminiなど他のAIサービスでの対応も広がる可能性があります。

まとめ——MCPは「AIを孤立させない」ための基盤技術

MCPを使うことで、AIは「チャット画面の中だけで動くもの」から「既存の業務システム・データ・ツールと連携する実用的なエージェント」に変わります。

本記事で実装した内容を振り返ると、Filesystem・GitHub・NotionのMCPサーバーをClaude Desktopに接続する基本構成、CursorへのMCP設定でコーディング中のリソース参照を実現する方法、n8nとMCPを組み合わせたワークフロー自動化、そして自社システムをカスタムMCPサーバーで接続するPython実装まで、一通りの実践経路をカバーしました。

次のステップとして、自社で最も繰り返している手作業を1つ選び、そのデータソースをMCPサーバーで接続してみてください。社内の在庫CSV・顧客リスト・Notionのタスクボード——どれでも構いません。「Claudeが直接参照できる」状態を1つ作ることが、MCPの体験として最も価値があります。

MCPの概念・設計思想の深掘りは「MCPとは何か——概念ガイド」を、AIエージェント全体のアーキテクチャ最新動向は「AIエージェント最前線ガイド」を、n8n・Difyを使ったノーコードエージェント構築は「AIエージェント実践構築ガイド」を合わせてご覧ください。

本記事の内容は2026年2月時点の情報をもとにしています。MCPの仕様・各ツールの対応状況は更新される場合があります。最新情報はMCP公式ドキュメント(modelcontextprotocol.io)および本サイトの関連記事でご確認ください。

コメント

タイトルとURLをコピーしました