
【小ネタ】 CursorのMCP機能はtoolの名前にdash(-)が含まれていると認識しない
はじめに
小ネタです。最近MCPを勉強がてら自分で実装を試しています。
GoogleカレンダーのMCPで、期間を指定して予定が取得できる機能があります。利用方法はREADME.mdを参照してください。
一昨日(02/19)からCursorとMCP連携した際に動作しなくなり、v0.1.3で修正したので共有します。
バージョンは以下の通りです。私の記憶では同じバージョンで急に動作しなくなったので、エディタの先のエージェント実装が起因していると考えており、バージョンは関係ないと推測しています。
$ cursor --version
0.45.11
f5f18731406b73244e0558ee7716d77c8096d150
arm64
おそらく一時的なもので今後修正されると思われます。
結論
CursorにMCPを認識させたいならツール名にdash(-)を使わず、underscore(_)で書く。
{
"tools": [
{
+ "name": "list_calendar_events",
- "name": "list-calendar-events",
"description": "Retrieves events from Google Calendar within the specified time range. Format: yyyy-MM-dd or yyyy-MM-dd HH:mm. (Currently we only parse yyyy-MM-dd).",
"inputSchema": {
"type": "object",
(中略)
挙動確認
Cursor
NG: ツール名にdash(-)
OK: ツール名にunderscore(_)
認識します。(日付はめちゃくちゃですね...Claude DesktopとWindsurfは正確です)
Claude Desktop(おまけ)
Claude Desktopでは両方認識します。日付も正確です。
OK: ツール名にdash(-)
OK: ツール名にunderscore(_)
Windsurf(おまけ)
Windsurfでも両方認識します。日付も正確です。
OK: ツール名にdash(-)
認識しますね!日付の指定も正確です。
OK: ツール名にunderscore(_)
認識しますね!おしゃれな一言を追加してきました。時刻も正確です!
さいごに
MCPの解釈は提供元のシステムプロンプトによるのでしょうか。興味深いですね。MCPはtools useをRPC経由でやっているだけなのでその解釈の差だと思われます。
ドキュメントに明記こそされていませんが、Exampleは全てunderscore(_)ですね。Exampleを忠実に真似する気持ちが大事という教訓でした。
余談ですがMCP設定は、WindsurfはコンフィグがClaude Desktop互換でよかったです。Claude Desktopの設定をシンボリックリンクで参照させれば良さそうです。
参考