概要
https://qiita.com/ryu-ki/items/45b925ddbad7698edeb6
詳細内容
## 【MCP】mcp-neo4j-cypher が使えずちょっと困った話
https://qiita.com/ryu-ki/items/45b925ddbad7698edeb6
依存関係の不整合に起因するMCPサーバーの起動エラーを特定し、最新バージョンへの更新とパッケージ管理ツールのキャッシュクリアによって解決する。
**Content Type**: ⚙️ Tools
**Language**: ja
**Scores**: Signal:4/5 | Depth:2/5 | Unique:3/5 | Practical:4/5 | Anti-Hype:4/5
**Main Journal**: 94/100 | **Annex Potential**: 89/100 | **Overall**: 68/100
**Topics**: [[MCP, Neo4j, Strands Agents, fastmcp, uv]]
Strands AgentsでNeo4jのMCP(Model Context Protocol)サーバーである「mcp-neo4j-cypher」を導入しようとした際に発生した、実行時エラーとその解決策について記述された技術レポートである。著者は、エージェントからグラフデータベースへクエリを試行したところ、内部ライブラリであるFastMCPの初期化時に未定義の引数が渡されることによる`TypeError`に遭遇した。
この問題の根本原因は、MCPサーバーの基盤となるライブラリ「fastmcp」の破壊的変更にある。著者の分析によれば、fastmcpのバージョン2.x系において`dependencies`引数が廃止されたにもかかわらず、mcp-neo4j-cypherの旧バージョン(v0.5.1)が同引数を参照し続けていたことがエラーを誘発していた。これは、急速に進化するMCPエコシステムにおいて、依存ライブラリの更新速度にツール側が追いついていない典型的な事例といえる。
解決策として、著者は問題が修正された最新バージョン(v0.5.2)への更新を挙げているが、ここで重要な技術的指摘を行っている。Pythonのパッケージ管理ツールである`uv`(特に`uvx`)を使用している場合、ツールが独立した環境でパッケージを管理しキャッシュを保持するため、単に実行コマンドを書き換えるだけでは古い環境が再利用されてしまう可能性がある。そのため、`uv cache clean`を実行してキャッシュを明示的に破棄した上で、最新バージョンを指定して実行することが不可欠であると説いている。
筆者がこの事案を共有する意図は、単なるバグ修正の記録にとどまらない。MCPのような新しいプロトコルを扱う際、AIによるコード生成や自動化ツール(Claudeなど)との対話を通じて原因を特定するプロセス、そしてCHANGELOGやリリースノートを直接確認することの重要性を再認識させることにある。開発者にとって、ツールが「動かない」原因が、自身のコードではなく基盤ライブラリの急速な仕様変更にある可能性を常に考慮すべきであるという教訓を示している。