【現在は公式改修済み】CursorとNotion MCPの組み合わせで発生するMethod xxx not foundのエラーを解決する

に公開
2

はじめに

こんにちは、株式会社Mediiの渡辺です
Notion公式のMCPがリリースされて話題になってますね!
早速Cursorで試しましたがMethod xxx not foundのエラー…
本記事ではエラーを解決して、CursorでNotion MCPを実行する方法について記載します

前提

  • Notionのインテグレーション追加やトークンの取得方法は本記事では扱いません
  • nodeのインストールも本記事では扱いません
  • node v22.14.0を使用しています

背景

実はNotionのMCPは自作して使っていました
そこに公式のリリースが来たので、本家はどんなもんじゃいと思い、早速試してみました
(公式が一番ありがたいです!ありがとうございます!)

READMEに従い、mcp.jsonに以下の定義を追加して、

"notionApi": {
    "command": "npx",
    "args": ["-y", "@notionhq/notion-mcp-server"],
    "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\" }"
    }
}

そして、いざCursorでNotion MCPを実行してみると…

なんかエラーが出ますね

CursorかNotion MCPの方で改善されると期待していますが、早く試したかったので、力技で解決しました

原因

Claude Desktopなどで試してみるとわかりやすいのですが、Notion MCPのtool名はハイフン(-)を使っています
例:API-retrieve-a-page

しかし、Cursorでは全てアンダースコア(_)で認識してしまいます
例:API_retrieve_a_page

設定画面を見ても、すべてアンダースコア

Cursorからはアンダースコアを含む名前でtoolを実行しますが、MCPの実装側すべてハイフン前提なので、そんなMethodないよってエラーになります
operation名の解決に失敗してエラーになっていると思われる

解決方法

力技です。Notion MCPのコードを修正してビルドします
npmでglobalインストールしてもよいですが、個人的にglobalインストールしたくないので、git cloneする方法にしています

コードの取得

まずはコードをcloneします(ZIPのダウンロードでも良いです)

git clone https://github.com/makenotion/notion-mcp-server.git
cd notion-mcp-server

以下のファイルを修正します

  • scripts/notion-openapi.json
  • src/openapi-mcp-server/mcp/proxy.ts
  • src/openapi-mcp-server/openapi/parser.ts

コードの修正

  • scripts/notion-openapi.json
    全部は書きませんが、以下のように"operationId"の値をすべてアンダースコアに書き換えます
- "operationId": "retrieve-a-page",
+ "operationId": "retrieve_a_page",
  • src/openapi-mcp-server/mcp/proxy.ts
    ここをアンダースコアにします
- const toolNameWithMethod = `${toolName}-${method.name}`;
+ const toolNameWithMethod = `${toolName}_${method.name}`;
  • src/openapi-mcp-server/openapi/parser.ts
    ここをアンダースコアにします
- openApiLookup[apiName + '-' + uniqueName] = { ...operation, method, path }
+ openApiLookup[apiName + '_' + uniqueName] = { ...operation, method, path }

ビルド

下記のコマンドを実行します

npm install
npm run build

bin/cli.mjsが生成されていることを確認します

MCPの設定

mcp.jsonを修正します
argsにはbin/cli.mjsのフルパスを入力してください
トークンも適切なものを入れてください

{
  "mcpServers": {
    "notion": {
      "command": "node",
      "args": [
        "<cli.mjsのフルパス>"
      ],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\" }"
      }
    }
  }
}

CursorでNotion MCPを実行すると…

動いた!!

おわりに

今回はいち早く試したかったので、力技で解決しましたが、CursorかNotion MCPの方で改善されると期待しています
ただ、NotionのMCP程度であれば、比較的簡単に実装できるので、自分でMCP開発にチャレンジしてみるのも良いかもしれません

Discussion

shigekishigeki

Cursor側で改善され,動くようになってました.

Tatsuya WatanabeTatsuya Watanabe

ありがとうございます!
私の方でも動作確認できたので、取り急ぎ注記追加しました
現在は必要ない情報ですので、折を見て非公開にします