Claude

MCPを使ってNotionとClaude Desktopを連携する手順

claude-mcp-notion
o_wani

suさんの参考サイトをもとにNotionとClaude Desktopの連携を行います。

参考サイト
MCPを使ってnotionをClaude Desktopから操作する!
MCPを使ってnotionをClaude Desktopから操作する!

前提として記載しておきます。

作業を進めた環境

Apple M1 Pro

git clone

MCP Notion ServerをClone

MCP Notion Serverのリポジトリをクローンします。

% git clone https://github.com/suekou/mcp-notion-server.git

npm installを実行します。

% cd mcp-notion-server
% cd notion
% npm install

> notion@0.1.0 prepare
> npm run build


> notion@0.1.0 build
> tsc && node -e "require('fs').chmodSync('build/index.js', '755')"


added 17 packages, and audited 18 packages in 5s

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities

npm run buildを実行します。

% npm run build                                      

> notion@0.1.0 build
> tsc && node -e "require('fs').chmodSync('build/index.js', '755')"

 % ls build
index.js

notion/build/index.jsが作成されています。

続きを進めます。

% npm link

added 1 package, and audited 3 packages in 1s

found 0 vulnerabilities

問題なさそうなので、次のステップに進みます。

Notion

Notion API トークンの準備

MCP serverがNotionにアクセスできるようにNotionでAPIトークンを発行します。

Notionのインテグレーションから

[新しいインテグレーション]を押して、下記の登録画面に遷移します。

  1. インテグレーション名:※わかりやすく 記入
  2. 関連ワークスペース:※環境に合わせて
  3. 種類:内部 を選択
  4. ロゴ:※環境に合わせて

上記設定後、[保存]ボタンをクリックします。

インテグレーション設定から内部インテグレーションシークレットを入手します。

クリップボードにコピーしておきます。

設定ファイルの編集

claude_desktop_config.jsonを編集

/Users/ユーザー名/Library/Application Support/Claude/claude_desktop_config.json
上記の場所にある設定ファイルを開きます。

下記のようにします。新規設定の場合は、{}という文字列のみ記載されています。

{
  "mcpServers": {
    "notion": {
      "command": "node",
      "args": [
        "/Users/ユーザー名/XXXXXXX/mcp-notion-server/notion/build/index.js"
      ],
      "env": {
        "NOTION_API_TOKEN": "取得したトークン"
      }
    }
  }
}

上記の内容で保存しておきます。

claude_desktop_config.json

設定ファイルの開き方

この設定ファイルの場所ですが、アプリメニュー「Settings…」から開くことができます。

開いたウィンドウの[ Developer>Edit Config ]をクリックします。

そうするとFinderが開いて、該当ファイルが選ばれた状態になるので、エディタで開いて、編集しましょう。

インテグレーションと接続

動作確認

Notionのインテグレーションで設定した関連ワークスペースに動作確認用に適当なページを作成します。

右上の[…](設定)からコネクト>接続先でインテグレーション名で記入した名称を選択します。

[はい]をクリックすると接続状態となるようです。

Claude Desktopアプリを再起動します。

通常この段階でうまく連携できるはずです。

うまく設定ができている場合、トンカチ⚒️マークが表示されているのでクリックするとNotion関連の設定内容を確認することができます。


私の場合については下記のようなエラーでした。「Could not connect to MCP server notion」というメッセージが表示されている。

ここからのdebugは私の環境依存の問題ですので、私の作業記録としてメモしておきます。

debug(私の環境依存の問題)

MCP Server側

MCP Serverが正しく起動しているか確認します。手動でNotionサーバーを起動してみます:

% node notion/build/index.jsのパス
Please set NOTION_API_TOKEN environment variable

スクリプト実行時に NOTION_API_TOKEN 環境変数が設定されていないためにエラーが発生しています。

環境変数を読み込むためにdotenvライブラリを追加します。

% npm install dotenv

added 1 package, and audited 19 packages in 4s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

src/index.tsファイルを修正します。dotenvをimportする2行を追加します。

#!/usr/bin/env node
import dotenv from 'dotenv';
dotenv.config();

import { Server } from "@modelcontextprotocol/sdk/server/index.js";
...
...

.evnファイルに環境変数を記載します。

NOTION_API_TOKEN=取得したトークン

再度ビルドします。

% npm run build                                                        

> notion@0.1.0 build
> tsc && node -e "require('fs').chmodSync('build/index.js', '755')"

手動実行してみます。

% node notion/build/index.jsのパス
Starting Notion MCP Server...
Connecting server to transport...
Notion MCP Server running on stdio

起動しているようです。動作確認のための手動実行なので停止しておきます。

Claude Desktop側

今度はClaude Desktopアプリを再起動し、動作確認です。

相変わらず「Could not connect to MCP server notion」というメッセージが表示されている。

開発者モードでClaude Desktopアプリを起動します。[Open MCP Log File]をクリックします。

そうするとログファイルが確認できるようになり。エラーが発生しているので内容を確認します。

2024-12-04T13:49:24.551Z [error] Error in MCP connection to server notion: Error: spawn node ENOENT
    at ChildProcess._handle.onexit (node:internal/child_process:286:19)
    at onErrorNT (node:internal/child_process:484:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn node',
  path: 'node',
  spawnargs: [Array]
}

Claude Desktop が node コマンドを実行しようとした際に、Node.js が見つからなかった(ENOENT エラー)ことを示しています。

% node -v
v21.5.0
% which node
/Users/ユーザー名/.nodebrew/current/bin/node

which node コマンドの結果が /Users/ユーザー名/.nodebrew/current/bin/node であることから、Node.js は nodebrew を使って管理されています。

この場合、Claude Desktop が node コマンドのパスを認識できない可能性がありますので、Claude Desktopの設定ファイルのnode コマンドのパスを修正します。

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/Users/ユーザー名/test.db"
      ]
    },
    "notion": {
      "command": "/Users/ユーザー名/.nodebrew/current/bin/node",
      "args": [
        "notion/build/index.jsのパス"
      ],
      "env": {
        "NOTION_API_TOKEN": "取得したトークン"
      }
    }
  }
}

設定ファイルを上記内容で保存し、Claude Desktopアプリを再起動します。


うまく連携ができている場合、トンカチ⚒️マークをクリックします。

Notion関連の設定が反映されていることを確認します。

やっと連携できたようです。

連携してみる

Claude Desktopアプリでプロンプトを実行します。

notionの連携対象のページのURLが「https://www.notion.so/MCP-notion-6520987c098767112ff2c21b570c92ee」だった場合、後ろの32桁をClaudeで指定します。

o_wani
o_wani

ClaudeMCPについて記事を書いて,notionの6520987c098767112ff2c21b570c92eeにページを保存したい

Claude
Claude

ClaudeMCPについて記事を書き、Notionに保存させていただきます。

といった感じで保存してくれました。
今回は連携できたので以上です。

🔧Tips の追記

Set project instructionsで、ブロックIDを指定
notionのブロックIDを毎回指定するのは大変なので、プロジェクトをつくり、そのSet project instructionsで、ブロックIDをあらかじめ指定しておく方法が効率的ということをテツメモさんの記事で読みましたので、その方法を追記しておきます。

こうすることで、IDを省略したやりとりが可能となり、さらに検索エンジンのBrave🦁と連携することで、最新情報の取得とnotionへの保存が可能となります。

o_wani
o_wani

大谷翔平選手に関する最新ニュース5件をNotionのDBにまとめて

Claude
Claude

大谷翔平選手に関する最新ニュースを検索し、Notionデータベースにまとめます。

...

データベース形式
最初にClaudeからnotion連携して追加したページが「データベース」形式だった場合には、2回目以降以降も「データベース」形式でのデータの保存しかできないみたい。

次はBrave🦁と連携したいですね。

※追記)あきらパパさんの動画もわかりやすいと思いますので、動画で確認したい場合はどうぞ。

o_wani
o_wani

そいえば、Claude Desktopアプリの開発者モードをOFFにするのどうやるんだろ…

あわせて読みたい
MCPを使ってBrave SearchとClaude Desktopを連携する手順
MCPを使ってBrave SearchとClaude Desktopを連携する手順
STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました