📕

🤯MCPサーバ実践記録: 究極のデバッグ体験_サードパーティMCPサーバーをClaude Desktopに同時接続するまで

に公開

はじめに

こんにちは。
前回、Claude Desktopに複数のMCPサーバーを併記するJSONの基本構造を学びました。
今回は、その応用として、ファイルシステム(Node.js)、Webフェッチ(Python)、そしてサードパーティのNeo4j Cypherサーバー(Python)という、3つの異なる機能をClaude Desktopに同時接続するという難題に挑んだ記録です。
結論から言うと、この挑戦はNode.jsの知識、Pythonのパス構造、そしてJSONの厳密な構文という全ての知識を試す、究極のデバッグ経験となりました。
本記事では、特にサードパーティサーバーの接続で直面した問題と、
その**具体的な解決策(フルパス指定)**を共有します。

1. 接続目標:3つの異なる機能を統合する

MCPの利点は、公開されているSDKやサーバーを活用し、自分のAIアプリの機能を無限に拡張できることです
。今回、最終的に接続を目指したのは、以下の3つの能力を持つAIエージェントです。

サーバー名 技術 機能の概要
filesystem Node.js (npx) PC内のファイルやフォルダの操作
fetch Python (python -m) URLを与えると内容を読み込み要約する機能
movies-neo4j Python/Cypher 知識グラフデータベースへのCypher読み取りクエリを実行

Neo4j MCP サーバー

mcp 名: io.github.neo4j-contrib/mcp-neo4j-cypher
🌟 概要
データベースとの連携機能を提供し、Neo4j を介したグラフ探索機能を実現するモデルコンテキストプロトコル (MCP) サーバー実装。このサーバーは、Cypher グラフクエリの実行、複雑なドメインデータの分析、そしてアプリケーションの分析ツールでさらに強化できるビジネスインサイトの自動生成を可能にします。
この MCP サーバーは、以下に詳述するような Text2Cypher ワークフローを容易にします。
o 青いステップはエージェントによって処理されます
o Cypher または他の MCP サーバーによる Purple
o ユーザーによるグリーン
ユーザーの質問がプロセスに入力され、エージェントによって生成された回答が出力されます。

🛠️ SDKとサーバーリストの活用

MCPの公式リポジトリには、開発を容易にする各言語向けのSDKや、企業・コミュニティが公開するサーバーリスト(serversリポジトリ)が公開されています。
今回利用したNeo4jサーバーは、サードパーティ提供のサーバーであり、接続にはセキュリティ等の注意が必要です。


2. サーバー追加で直面した「コマンドが見つからない」壁

filesystemとfetchの2つを併記したJSON設定は成功していましたが、movies-neo4jサーバーを追加した途端、接続が失敗する事態に陥りました。

エラーの推移と解決への道筋

試みた設定 エラーの核心 解決への教訓
1. command: "uvx" 'uvx' は...認識されていません 教訓: uvxはWindowsのパス上に存在しない。commandには、OSが認識できる実行ファイルを指定する必要がある。
2. command: "python", args: ["-m", "mcp_neo4j_cypher"] No module named mcp_neo4j_cypher.main 教訓: サーバーパッケージがpython -m形式で実行される設計ではなかった。Pythonパッケージの構造に依存するため、この方法は確実ではない。
3. command: "mcp-neo4j-cypher.exe" (フルパス) mcp-neo4j-cypher: error: unrecognized arguments 教訓: コマンドの特定は成功。しかし、引数リストにサーバー名やバージョン情報など不要な情報が自動で追加され、サーバーがそれを拒否し、落ちていた。

最終的な解決策:フルパスとクリーンな引数

最終的に成功した方法は、エラーの元となるシステムパス(環境変数)への依存を完全に断ち切ることでした。

  • フルパスで起動ファイルを固定: commandに、pipでインストールされた実行ファイルの完全なパスを記述。
  • 例: "command": "C:\Users\Koga Hiroaki\AppData\Roaming\Python\...\mcp-neo4j-cypher.exe"
  • 引数をクリーンアップ: argsには、サーバーが必要とするオプションと値だけ(--db-url, --userなど)を渡し、不要な引数が混入するのを防ぎました。

MCPサーバー設定の応用:フルパス指定とDXTファイルインストールの記録

  1. 究極の解決策:実行ファイルのフルパス指定
    標準的なMCPサーバー設定では、npxやuvxといったコマンドを使用しますが、Windows環境ではパスの問題や環境変数の不一致により、これらのコマンドがClaude Desktopから正しく実行されず、サーバーが起動できませんでした。

この問題を回避するために、以下の通り実行ファイルのフルパスを直接JSONに記述しました。

目標: サードパーティ製サーバー(movies-neo4j)の起動に成功する。

手順:

pipでインストールされたPython環境のScriptsフォルダ(例:C:\Users[ユーザー名]\AppData\Roaming\Python[バージョン]\Scripts\)を特定する 。

フォルダ内の実行ファイル(例:mcp-neo4j-cypher.exe)のフルパスをコピーする 。

Claude Desktopの設定JSONを開き、"command"の値にそのフルパスを記述する 。

JSON

"movies-neo4j": {
"command": "C:\Users\Koga Hiroaki\AppData\Roaming\Python\Python311\Scripts\mcp-neo4j-cypher.exe",
"args": [ ... ]
}
(注意: JSON内ではバックスラッシュを二重*\*で記述する必要があります。)

  1. DXTファイルのインストール苦戦記録
    公式ドキュメントでは、デスクトップ拡張機能(DXT/mcpbファイル)は、サーバー全体を単一のパッケージにバンドルすることで、依存関係の問題を解決すると説明されています 。しかし、ワンクリックインストールはできませんでした 。

正しいインストール方法: DXTファイルをダブルクリックしても「プレビュー失敗」となるため 、手動で以下の手順を踏む必要がありました 。

.DXTファイルをダウンロードする 。

Claude Desktopの設定メニュー(Claude Desktop > 設定 > 拡張機能 > 詳細設定 > 拡張機能をインストール)から 。

ファイルをClaude Extensionフォルダに移動した上で 、「拡張機能をインストール」を実行する 。
※DXTファイルをClaude Extentionフォルダに移動しておかなければならなかった点は注意が必要。
この記録は、複雑な環境設定を回避するためにDXTファイルが推奨されるものの、そのインストール自体にも特定の操作が必要であることを示しています。

4. 成功した最終マルチサーバー設定(JSON)

この設定で、Node.js、Python、そしてNeo4jサーバーがすべてClaude Desktopで同時に起動し、利用可能な状態となりました。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "c:\\Users\\Public\\Documents",
        "c:\\Users\\Public\\Downloads"
      ]
    },
    "fetch": {
      "command": "python",
      "args": ["-m", "mcp_server_fetch"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    },
      "movies-neo4j": {
      "command": "C:\\Users\\Koga Hiroaki\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python311\\Scripts\\mcp-neo4j-cypher.exe",
       "args": [ "--db-url", "neo4j+s://demo.neo4jlabs.com",
        "--user", "recommendations",
        "--password", "recommendations"  ],
      "env": {
        "NEO4J_URI": "bolt://localhost:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "recommendations",
        "NEO4J_DATABASE": "neo4j"                          
    }
  }
 }
}

5. 結論:環境を制する者がMCPを制す

この一連のセットアップ経験から、MCPサーバーの実践は、単なるAIの知識ではなく、OSのパス、Pythonのパッケージ構造、そしてJSONのエスケープルールといった低レイヤーの知識が非常に重要であることがわかりました。
今後は、この3つのサーバーが統合されたAIエージェントとして、ファイル操作、Webアクセス、そして知識グラフという多様な情報源を活用し、より複雑なタスクに挑戦していきたいと思います。
この難関を乗り越えたことで、私たちのAIエージェントは、以下の3つの能力を同時に手に入れました。

ファイル操作 (filesystem)

Web情報取得 (fetch)

構造化データ検索 (movies-neo4j)

JSONを編集するだけで、AIエージェントの機能を無限に拡張できるMCPの可能性を、改めて実感しています。

参考文献

『やさしいMCP入門』(御田 稔、大坪 悠 著)
https://www.shuwasystem.co.jp/book/9784798075730.html
https://neo4j.com/blog/developer/claude-converses-neo4j-via-mcp/
https://www.anthropic.com/engineering/desktop-extensions
https://github.com/neo4j-contrib/mcp-neo4j/blob/main/servers/mcp-neo4j-cypher/README.md

Discussion