blog

Claude Code×Notion連携の設定と活用手順【2026】

目次

Claude CodeとNotionを連携するには?

Claude CodeとNotionは、Notionが公式に提供しているMCP(Model Context Protocol)サーバーをClaude Codeに登録することで連携できます。登録すると、Claude CodeからNotionのページやデータベースを読み書きでき、「議事録をNotionに起こす」「仕様をNotionから読んで実装する」といった操作を対話の流れの中で行えます。

  • 登録はコマンド1行: ターミナルで claude mcp add --transport http notion https://mcp.notion.com/mcp を実行します。
  • 認証はブラウザで許可するだけ: Claude Codeの中で /mcp を実行して notion を選び、開いたブラウザでNotionにログインして接続を許可します。APIトークンの発行やNode.jsのインストールは要りません。
  • 接続確認も /mcp: /mcp の一覧で、notion の状態(認証が必要か、つながっているか)を確認できます。
  • 読み書きできる範囲: つないだあとは、認証したNotionアカウントで見られるページを読み書きできます。内容を変える操作は、実行前に確認する運用が安全です。

この記事では、登録から認証までを実際に実行した画面と動画で示し、そのあとにNotion公式プラグイン、APIトークンを使う方法、よくあるエラーと安全な使い方を説明します。

Notion以外の外部ツールをつなぐときは、Claude Code MCP設定の使い方で説明しています。

関連記事Claude CodeとGitHubを連携するには?

Claude CodeとNotionを連携する「仕組み」を理解する

Claude CodeとNotionをつなぐ道筋は、大きく4つあります。先に全体を見ておくと、自分に合うものを選びやすくなります。

つなぎ方 仕組み 向いている人 用意するもの
Notion公式のリモートMCPサーバー(推奨) Notionが運用しているサーバー(https://mcp.notion.com/mcp)をClaude Codeに登録し、ブラウザで認証する まず試したい人、ふだんの読み書きに使いたい人 Notionアカウントだけ
Notion公式プラグイン 同じMCPサーバーに、Notion向けのSkillsとスラッシュコマンドを足してまとめて入れる 検索やタスク作成を決まったコマンドで呼び出したい人 Notionアカウントだけ
claude.aiのコネクタ claude.aiで追加・認証したNotionのコネクタを、Claude Codeからもそのまま使う すでにclaude.aiでNotionをつないでいる人 claude.aiのアカウントでClaude Codeにログインしていること
Notion API+スクリプト NotionのAPIをPythonなどから呼び出すスクリプトを、Claude Codeに書かせて実行する 決まった処理を定期的に動かしたい人、細かい加工が必要な人 NotionのAPIトークン

はじめての場合は、いちばん上のNotion公式のリモートMCPサーバーを選べば足ります。以下では、この方法を実際の画面つきで説明し、そのあとに残りの3つを説明します。

claude.aiのコネクタをそのまま使う場合

Claude Code公式ドキュメント(MCP)によると、claude.aiのアカウントでClaude Codeにログインしている場合、claude.aiで追加したMCPサーバー(コネクタ)はClaude Codeでも自動的に使えます。claude.aiの設定(claude.ai/customize/connectors)でNotionを追加して認証を済ませ、Claude Codeで /mcp を実行すると、claude.aiから来たサーバーであることが分かる形で一覧に表示されます。TeamプランとEnterpriseプランでは、コネクタを追加できるのは管理者だけです。APIキーや外部のクラウド(Amazon Bedrockなど)経由でClaude Codeを使っているときは、コネクタは読み込まれません。

次に読む:Claude CodeとObsidianを連携するには?

Claude Code×Obsidian連携の設定手順|ナレッジ活用【2026】

前提知識:Claude CodeのMCPとは

MCP(Model Context Protocol)はAnthropicが策定したオープンプロトコルで、Claude Codeが外部ツール・データソースを「ツール」として呼び出せる仕組みです。MCPサーバーを追加することで、ファイルシステム、データベース、外部APIなどをClaude Codeのコンテキストに取り込めます。

Claude Code
(AIエージェント)
→
MCPサーバー
(Notion connector)
→
Notion API
(データ読み書き)
→
Notionワークスペース
(ページ・DB)

MCPサーバーには、手元のパソコンで動かすもの(ローカル)と、提供元がインターネット上で動かしているもの(リモート)があります。Claude Codeでは claude mcp add コマンドで登録し、登録内容は使う範囲(スコープ)に応じて、自分だけが使う場合は ~/.claude.json、チームで共有する場合はプロジェクト直下の .mcp.json に保存されます(.claude/settings.json や、デスクトップアプリ用の claude_desktop_config.json ではありません)。Notionの場合は、Notionが公式に提供しているリモートMCPサーバー(https://mcp.notion.com/mcp)を使うのが現在の標準です。

ステップ1:NotionのMCPサーバーをClaude Codeに登録する

ターミナルで、次のコマンドを1行実行します(Notion公式ドキュメント「Connect to Notion MCP」の手順。2026年10月12日確認)。Node.jsのインストールやAPIトークンの発行は要りません。

claude mcp add --transport http notion https://mcp.notion.com/mcp

続けて claude mcp list を実行すると、登録したサーバーの状態を確認できます。登録した直後は、下の画面のように「Needs authentication(認証が必要)」と表示されます。これは正常な状態で、次のステップで認証します。

ターミナルで claude mcp add --transport http notion https://mcp.notion.com/mcp を実行し、claude mcp list で確認した画面。notion が Needs authentication(認証が必要)と表示されている
claude mcp add で登録し、claude mcp list で確認した画面(2026年10月12日に実際に実行して撮影。Claude Code v2.1.296)

登録先は --scope で選べます。

  • 指定しない場合(local):今のプロジェクトで、自分だけが使います。上の画面はこの設定で、~/.claude.json に保存されています。
  • --scope project:プロジェクト直下の .mcp.json に書き出して、チームで共有します。共有されたサーバーは、各自が claude を起動して承認するまで使えません。
  • --scope user:自分のすべてのプロジェクトで使えます。

ステップ2:/mcp でNotionにログインして接続を許可する

登録したフォルダで claude を起動すると、「1 MCP server needs authentication · run /mcp」という案内が出ます。/mcp を実行して、次の順に進めます。下は、起動から認証の開始までを実際に操作した動画です。

Claude Codeを起動し、/mcp → notion → Authenticate と進める様子(約20秒・音声なし。2026年10月12日に実際に実行して撮影。ウィンドウの枠は描画したもので、表示されている文字は実行結果そのままです)
  1. /mcp を実行する:登録済みのMCPサーバーの一覧が出ます。notion が「needs authentication」になっているので、選んでEnterを押します。
Claude Codeで /mcp を実行した画面。Manage MCP servers の一覧に notion が needs authentication と表示されている
/mcp の一覧。notion が「needs authentication」と表示されています(2026年10月12日に実際に実行して撮影)
  1. 「Authenticate」を選ぶ:サーバーの詳細が表示されます。接続先のURLが https://mcp.notion.com/mcp であることを確かめて、「1. Authenticate」を選びます。
/mcp で notion を選んだ画面。Status は needs authentication、Auth は not authenticated で、Authenticate と Disable の2つを選べる
notion を選んだ画面。接続先のURLと、設定が保存されている場所も確認できます(2026年10月12日に実際に実行して撮影)
  1. ブラウザでNotionにログインして許可する:ブラウザが自動で開きます。開かない場合は、画面に表示されたURLをコピーして(c キーでコピーできます)、ブラウザで開きます。
Authenticate を選んだあとの画面。Authenticating with notion と表示され、ブラウザが開かない場合に手で開くための認証用URLが出ている(スマホで読める幅で撮影)
「Authenticate」を選んだあとの画面。ブラウザが開かないときに使うURLが表示されます(2026年10月14日に実際に実行して撮影。URLは毎回変わります)

ブラウザには、Notionのログイン画面が表示されます。ログインしたあと、Claude Codeからの接続を許可すると、ターミナルの表示が切り替わって認証が完了します。

認証用のURLをブラウザで開いたときに表示されるNotionのログイン画面。メールアドレスの入力欄と、Google・ChatGPT・Apple・Microsoft・Passkey・SSOでのログインが選べる
認証用のURLをブラウザで開いたときに表示されるNotionのログイン画面(2026年10月14日撮影。表示の言語はブラウザの設定によって変わります)

※ 上の画面は、Claudeにログインしていない撮影用の環境で起動しているため、モデルの表示が「Amazon Bedrock」になっています。ふだんの環境では、ご自身のプラン名が表示されます。Notionにログインしたあとの画面(接続を許可する画面と、接続後の画面)は、Notionのアカウントが必要なため、この記事には載せていません。

Claude Code公式ドキュメント(MCP)には、/mcp を開かずにターミナルから認証を始める claude mcp login notion というコマンドも載っています。認証を取り消すときは claude mcp logout notion を使います。ブラウザで許可したあとに接続エラーの画面が出た場合は、ブラウザのアドレス欄のURLをコピーして、Claude Codeの「URL >」の欄に貼り付けます。

動かして確かめる

認証が終わったら、次のように頼んでみます。

Notionで「議事録」を検索して

ツールの呼び出し(notion-search や notion-fetch など)が表示され、Notionの内容が返ってくれば連携は完了です。/mcp をもう一度実行すると、notion の状態が変わっていることも確認できます。ターミナルからは claude mcp get notion で確認できます。

Notion MCPで使える主なツール

接続すると、Claude Codeは次のようなツールを状況に応じて呼び出します(Notion公式ドキュメント「Supported tools」より抜粋)。利用者がツール名を覚える必要はなく、ふだんの言葉で頼めば足ります。

ツール名できること頼み方の例
notion-searchワークスペース内を検索する「予算の承認手順について書いたページを探して」
notion-fetchURLやIDを指定して、ページやデータベースの中身を読む「このURLの仕様書を読んで実装して」
notion-create-pagesページを1件または複数件作る(データベースへの行の追加も含む)「このバグをバグ管理のデータベースに登録して」
notion-update-pageページのプロパティや本文を更新する「このタスクのステータスを完了にして」
notion-query-data-sourcesデータベース(データソース)の行を条件を付けて取り出す「未着手のタスクを一覧にして」
notion-create-database新しいデータベースを作る「リリース管理用のデータベースを作って」
notion-move-pages/notion-duplicate-pageページを別の場所へ移す/複製する「このテンプレートを複製して今週分を作って」
notion-create-comment/notion-get-commentsコメントを付ける/コメントを読む「レビューの指摘をこのページにコメントして」

※ ツールの種類や名前はNotion側の更新で変わります。使えるツールは /mcp で確認できます。

Claude Codeへの頼み方の例

ツール名を指定する必要はなく、「どのページの」「何を」「どうするか」を日本語で伝えれば、Claude Codeが必要なツールを選んで呼び出します。次のように、対象のページ(URLまたは題名)と、変えてよい範囲を一緒に書くと、意図しないページを触られにくくなります。

やりたいこと頼み方の例
読むだけ「Notionの『◯◯仕様書』を読んで、実装の前に不明点を3つ挙げて。ページは変更しないで」
探す「Notionで『リリース手順』を検索して、見つかったページの題名とURLだけ一覧にして」
1件だけ書き込む「バグ管理のデータベースに、このエラーの内容を1件だけ追加して。追加前に内容を見せて」
既存のページを直す「この議事録ページの『決定事項』の見出しの下だけを、箇条書きに整えて。ほかの部分は触らないで」

書き込みや更新を頼むときは、「追加・変更する前に内容を見せて」と添えておくと、実行前に確認できます(下の「Notion公式が挙げる注意点」と同じ考え方です)。

Notion公式プラグインでまとめて入れる方法

Notionは、Claude Code用の公式プラグイン(makenotion/claude-code-notion-plugin)も公開しています。上と同じリモートMCPサーバーに加えて、Notionでの作業のしかたをClaudeに教えるSkills(Knowledge Capture・Meeting Intelligence・Research Documentation・Spec to Implementation の4つ)と、/Notion:search(ワークスペースを検索)・/Notion:create-task(タスクを作成)・/Notion:database-query(データベースを検索)などのスラッシュコマンドが一度に入ります。

プラグインのREADMEに書かれている手順は、Claude Codeの中で次の2つを実行して、Claude Codeを起動し直すというものです。

/plugin marketplace add makenotion/claude-code-notion-plugin
/plugin install notion-workspace-plugin@notion-plugin-marketplace

実際に試して分かったこと:SSHの設定がない端末では失敗した

2026年10月12日に、GitHubへのSSH接続を設定していない環境でこの2つを実行したところ、1つ目(配布元の追加)は成功しましたが、2つ目のインストールは「Permission denied (publickey)」というエラーで失敗しました。プラグイン本体を git@github.com(SSH)で取りに行くためです。

notion-workspace-plugin のインストールが git@github.com: Permission denied (publickey) で失敗した画面
notion-workspace-plugin のインストールが「Permission denied (publickey)」で失敗した画面(2026年10月12日に実際に実行して撮影。GitHubへのSSH接続を設定していない環境)

同じ環境でも、Anthropicが用意している公式の配布元(claude-plugins-official。最初から登録されています)にある同じプラグインは、次の1行でインストールできました。

/plugin install notion@claude-plugins-official

実行すると、入るものの一覧と、インストール先の範囲を選ぶ画面が出ます。下の画面では、コマンド6つとMCPサーバー(notion)が入ること、会話のたびに約210トークンを使うことが表示されています。「Install for you (user scope)」を選ぶと、自分のすべてのプロジェクトで使えるようになります。

/plugin install notion@claude-plugins-official を実行した画面。入るもの(コマンド6つとMCPサーバー notion)と、インストール先の範囲の選択肢が表示されている
/plugin install notion@claude-plugins-official を実行した画面。入るものと、インストール先の範囲の選択肢が表示されます(2026年10月12日に実際に実行して撮影)

インストールのあとにClaude Codeを起動し直して /Notion と入力すると、追加されたコマンドが候補に出ます。Notionへの認証は、ステップ2と同じく /mcp から行います。すでにステップ1でNotionのサーバーを登録している場合、接続先が同じなので、/mcp の一覧に出るNotionのサーバーは1つのままでした。

プラグインを入れたあとに /Notion と入力した画面。/Notion:find、/Notion:search、/Notion:tasks:plan などの候補が表示されている
プラグインを入れたあとに /Notion と入力した画面。追加されたコマンドが候補に表示されます(2026年10月12日に実際に実行して撮影)

Notion API+Pythonスクリプトで連携する方法

MCPを使わず、Claude Codeにスクリプトを書かせて実行する方法もあります。既存のPythonのプロジェクトにNotionとの連携を組み込みたい場合や、細かいデータの加工が必要な場合に向いています。この方法では、NotionのAPIトークンが必要です。

NotionのAPIトークンを用意する

Notionの公式ドキュメントは、ワークスペースの中だけで使う連携を「Internal connection(内部コネクション)」と呼んでいます(以前は「インテグレーション」と呼ばれていました)。作成できるのはワークスペースのオーナーです。手順は次のとおりです(Notion公式ドキュメント「Internal connections」。2026年10月12日確認)。

  1. Notionの開発者向けの管理画面(Developer portal。app.notion.com/developers/connections)を開きます。
  2. 左のメニューの「Build」にある「Internal connections」を選びます。
  3. 「Create a new connection」をクリックし、名前(例:claude-code-connector)を入力して、使うワークスペースを選びます。
  4. 作成後、「Configuration」タブでAPIトークンを取得します(ntn_ で始まる文字列です。以前に発行したものは secret_ で始まります)。同じタブで、内容の読み取り・更新・追加といった権限(Capabilities)も設定できます。
Notion公式ドキュメント Internal connections の Creating an internal connection の箇所。Workspace Owner であること、Developer portal を開き Internal connections から Create a new connection を選ぶ手順
出典:Notion公式ドキュメント「Internal connections」(developers.notion.com)の、作成手順の箇所(2026年10月14日に必要な部分だけ切り出し)

作成したばかりのコネクションは、どのページにもアクセスできません。次のどちらかで、使いたいページやデータベースへのアクセスを許可します。

  • 管理画面から:コネクションの「Content access」タブで「Edit access」をクリックし、ページやデータベースを選びます。
  • Notionのページから:ページ右上の「•••」→「Connections」→「+ Add connection」で、作成したコネクションを選びます。

親のページに許可を出すと、その下のページにも引き継がれます。この手順を忘れると、APIの呼び出しはエラーになります。はじめての場合にいちばんつまずきやすいところなので、連携したいページすべてに許可が出ているかを確認してください。

notion-clientのインストール

pip install notion-client

基本的な読み取りスクリプト例

Claude Codeに「このデータベースIDのNotionデータベースを取得してDataFrameにするPythonスクリプトを書いて」と指示すると、以下のようなコードを生成・実行できます。

import os
from notion_client import Client
import pandas as pd

notion = Client(auth=os.environ["NOTION_TOKEN"])

def query_database(database_id: str) -> pd.DataFrame:
    results = []
    has_more = True
    start_cursor = None

    while has_more:
        response = notion.databases.query(
            database_id=database_id,
            start_cursor=start_cursor
        )
        results.extend(response["results"])
        has_more = response["has_more"]
        start_cursor = response.get("next_cursor")

    rows = []
    for page in results:
        props = page["properties"]
        row = {}
        for key, value in props.items():
            prop_type = value["type"]
            if prop_type == "title":
                row[key] = value["title"][0]["plain_text"] if value["title"] else ""
            elif prop_type == "rich_text":
                row[key] = value["rich_text"][0]["plain_text"] if value["rich_text"] else ""
            elif prop_type == "select":
                row[key] = value["select"]["name"] if value["select"] else ""
            elif prop_type == "number":
                row[key] = value["number"]
            elif prop_type == "date":
                row[key] = value["date"]["start"] if value["date"] else ""
        rows.append(row)

    return pd.DataFrame(rows)

# 使用例
df = query_database("あなたのデータベースID")
print(df.head())

データベースIDはNotionのURL(notion.so/ワークスペース名/32文字のID?v=…)から取得できます。v=の前の部分がデータベースIDです。

APIのバージョンに注意:Notion APIは、バージョン 2025-09-03 から「データベース」と、その中身である「データソース」を分けて扱うようになり、上の例で使っているデータベースへの問い合わせ(databases.query)は、公式リファレンスで 2025-09-03 以降は非推奨とされています。新しいバージョンではデータソースへの問い合わせ(Query a data source)を使います。お使いのライブラリのバージョンによって書き方が変わるため、Claude Codeにスクリプトを書かせるときは「Notion APIの最新バージョンに合わせて」と伝え、動かして確かめてください。

ページへの書き込み例

def create_page(database_id: str, title: str, status: str, note: str) -> dict:
    return notion.pages.create(
        parent={"database_id": database_id},
        properties={
            "Name": {
                "title": [{"text": {"content": title}}]
            },
            "Status": {
                "select": {"name": status}
            },
            "Note": {
                "rich_text": [{"text": {"content": note}}]
            }
        }
    )

Claude Codeはこうしたスクリプトをその場で生成・実行できるため、「今日の日付でタスクページを追加して」のような自然言語指示からNotionへの書き込みが可能になります。

(参考)自分でMCPサーバーを動かす旧方式

ここから下の「設定ファイルへの記述」は、オープンソース版の notion-mcp-server を自分のパソコンで動かす以前の方式です。Notionの公式ドキュメントは、このパッケージについて「現在は積極的に保守されていない」とし、ほとんどの場合は上のリモートMCPサーバーを使うよう案内しています。APIトークンで認証したい自動処理など、特別な理由がある場合だけ使ってください。

この方式に必要なものは次のとおりです。

  • Node.js 18以上(node -vで確認)
  • Claude Code(最新版)
  • 上の「NotionのAPIトークンを用意する」で取得したトークン

設定ファイルへの記述

プロジェクト直下の .mcp.json に以下を記述します(公式ドキュメントが示すMCPサーバーの保存先は .mcp.json と ~/.claude.json で、.claude/settings.json ではありません)。書き方はNotion公式リポジトリのREADMEにある設定例と同じです。

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "NOTION_TOKEN": "ntn_あなたのトークン"
      }
    }
  }
}

セキュリティ上の注意:トークンを直接設定ファイルに書く場合は、そのファイルを.gitignoreに追加し、リポジトリに含めないようにしてください。環境変数(.envファイル)経由で渡す方法も有効です。クリスタルメソッドの実運用では、.envにトークンを置き、direnvで自動ロードする構成にしています。

Claude Code・AIエージェントの業務導入をご検討の方は、自社での開発実例を公開しているクリスタルメソッドの無料相談をご利用ください。

実践ユースケース:どんな作業が自動化できるか

連携が完成すると、開発作業の中で以下のような活用が現実的になります。クリスタルメソッドの実運用でも活用しているものを含めて紹介します。

ユースケース1:仕様書・設計ドキュメントをリアルタイム参照しながらコーディング

Notionに書かれた仕様書やAPIドキュメントをClaude Codeのコンテキストに取り込み、「仕様書に基づいてこのエンドポイントを実装して」と指示できます。わざわざNotionとエディタを行き来する必要がなくなり、実装と仕様の乖離を防ぎやすくなります。

ユースケース2:タスク・バグトラッカーへの自動起票

コードレビュー中に発見したバグや改善点を「このエラーをNotionのバグトラッカーDBに起票して」と一言指示するだけで、ページが自動生成されます。ステータス・優先度・担当者などのプロパティも指示に含めれば一括設定できます。

ユースケース3:ミーティングメモ・議事録の構造化保存

会議後にまとめた箇条書きのメモをClaude Codeに渡し、「このメモをNotionの議事録テンプレートに従って整形してページ追加して」と指示することで、構造化されたメモが自動保存されます。

ユースケース4:コードとドキュメントの同期

関数やモジュールのREADMEを更新した際に「この変更をNotionの開発者向けドキュメントページにも反映して」と指示すれば、コードとNotionドキュメントを同期できます。ドキュメントが陳腐化しやすい課題への実践的な解決策です。

ユースケース5:プロジェクト進捗の集計・ダッシュボード更新

GitHubのコミット情報や完了タスクの集計結果をNotionのプロジェクト管理DBに定期書き込みするスクリプトをClaude Codeで生成・保守できます。cronやGitHub Actionsと組み合わせることで完全自動化が可能です。

ユースケース 主な操作 変わること
仕様書参照しながら実装 Notionページ読み取り タブの切り替えとコピー&ペーストを減らせる
バグ・タスク自動起票 DBへのページ作成 画面を切り替えずに、その場で起票できる
議事録の構造化保存 テンプレートへのページ追加 整形・コピーの手作業が不要
コード↔ドキュメント同期 ページの更新 ドキュメント陳腐化を防止
進捗集計・DB更新 DBへの定期書き込み 手作業の集計とコピーを減らせる

よくあるエラーと対処法

実運用で遭遇しやすいエラーと対処法をまとめます。

「Could not find database with ID」エラー

データベースIDが間違っているか、インテグレーションがそのページに接続されていないケースがほぼすべてです。NotionページでConnections設定を確認し、インテグレーションが追加されているかチェックしてください。IDはハイフンなしの32文字で指定する場合もあります。

「Unauthorized」「403 Forbidden」エラー

トークンが無効またはインテグレーションに必要な権限(Read/Write)が付与されていない場合です。Notionの開発者向けの管理画面(Developer portal)で、コネクションの「Configuration」タブにある権限(Capabilities)を確認してください。

MCPサーバーが認識されない

まず claude mcp list または claude mcp get notion で状態を確認します。プロジェクトの .mcp.json に登録したサーバーは、claude を起動して承認するまで「Pending approval(承認待ち)」と表示され、使えません。リモートMCPサーバーの場合は /mcp での認証が済んでいるかも確認してください。旧方式では、設定ファイルのJSONが壊れている(カンマ抜け・括弧の不一致)か、設定変更後にClaude Codeを起動し直していないケースが多いです。詳しいログは claude --debug で確認できます。

Notionのレート制限(429エラー)

Notion APIには接続ごとの利用回数の上限があり、公式リファレンスでは1分あたり180リクエスト(平均で1秒あたり3回)、BusinessプランとEnterpriseプランは1分あたり600リクエストとされています(2026年10月10日確認。上限は変わることがあります)。上限を超えるとHTTP 429が返り、Retry-After で待ち時間が示されます。MCP経由のツール呼び出しも同じ上限に数えられます。大量のページを一括処理する場合は、リクエスト間にtime.sleep(0.4)程度のウェイトを入れてください。Claude Codeに「rate limitを考慮したスクリプトにして」と指示すれば自動で対応コードを生成します。

ページのブロックコンテンツが取得できない

databases.queryはプロパティのみ返します。ページ本文(ブロック)を取得するにはblocks.children.list(block_id=page_id)を別途呼ぶ必要があります。

実運用で遭遇したレート制限・権限エラーの実体験

クリスタルメソッドでは代表の河合が1年以上、Claude CodeをCLAUDE.mdにNotionの参照情報を組み込んだ形で日常的に業務運用しています。その中で実際に遭遇したのが、Notion API側のレート制限(短時間に多数のページ・データベースへ連続アクセスした際に発生するエラー)と、インテグレーションに該当ページ・データベースへの権限(Connect)を明示的に与え忘れたまま接続しようとして起きる権限エラーです。

レート制限は、一度に大量のページを読み込ませる指示を出すのではなく、対象データベースやページを絞って段階的に依頼することで発生頻度を抑えられます。権限エラーは、Notion側で対象ページ・データベースを開き、右上の「接続」からインテグレーションを個別に許可しないと、API作成時点で有効化していても実際のアクセス時に弾かれる、という挙動が原因であることが多く、エラーメッセージだけでは気づきにくい点です。MCP経由・API直接利用のどちらの方式でも起こり得るため、上記いずれかのステップで似た事象に遭遇した場合は、まずNotion側の接続許可設定を確認することをおすすめします。

チームで使う前に確認すること:権限・管理者の設定・NotionのClaudeエージェントとの違い

ひとりで試すだけなら、ここまでの手順で足ります。会社やチームのNotionにつなぐ場合は、先に次の3点を確認しておくと、あとから困りません(Notion公式ドキュメント「Notion MCP」とヘルプ「Connect AI tools with Notion MCP」「Use Claude agents in Notion」。2026年10月14日確認)。

Claude Codeからの操作は「認証した人の権限」で動く

Notion公式ドキュメントによると、認証したあとにMCPクライアント(Claude Code)が読み書きできるのは、その人がNotionでアクセスできる内容です。Notionのヘルプは、MCPのツールが「ユーザーの全権限で動く」ため、その人が見られるものにはすべて届くと説明しています。つまり、見せたくないページがある場合は、Claude Code側の設定ではなく、Notion側のページの共有範囲で絞ります。ふだん使うアカウントとは別に、見せてよいページだけを共有した作業用のアカウントで認証する、という分け方もできます。

管理者ができること

  • ワークスペースのオーナー:Notionの「設定」→「接続」で、MCPクライアントからのアクセスを管理できます。
  • Enterpriseプランのオーナー:「設定」→「接続」の「権限」タブで、メンバーが接続できるAIアプリを「承認済みのリストのみ」に制限できます。リストにないツールからの接続はブロックされます。承認するには、先にオーナーまたは管理者がそのツールから実際に接続して成功させる必要があります。
  • 制限:公式ヘルプによると、特定のツールだけを切断する機能はなく、「すべてのユーザーを切断」ですべての外部AIツールとMCPクライアントを一度に切断する形になります。また、ツールごとの詳しい利用状況は管理者にも見えません。
Notion公式ヘルプ Connect AI tools with Notion MCP の Admin controls for MCP の箇所。Enterpriseプランの管理者が承認したAIアプリだけを接続させる設定の説明と、Settings から Connections、Permissions タブの手順
出典:Notion公式ヘルプ「Connect AI tools with Notion MCP」の「Admin controls for MCP」の箇所(2026年10月14日に必要な部分だけ切り出し)

どのプランでMCPを使えるかは、Notionのヘルプには明記されていません。管理者向けの制御機能がEnterpriseプランで提供される、という記載のみです。自社のプランで使えるかは、接続を試すか、ワークスペースの管理者に確認してください。

向いている人・向いていない人

状況合う方法
仕様書やタスクをNotionに置いていて、コードを書く場所(ターミナル)から読み書きしたいこの記事のリモートMCPサーバー。ブラウザで認証するだけで使えます
決まった処理(毎日の集計、定期的な書き込み)を自動で動かしたいNotion API+スクリプト。トークンと、ページごとのアクセス許可が必要です
コードは書かず、Notionの画面の中だけで作業を済ませたいNotionのClaudeエージェント(下記)。Claude Codeを使う必要がありません
社内の複数人で使い、利用範囲を管理者が管理したいMCPは認証した本人の権限で動くため、Notion側の共有範囲を先に整理します。Notionのヘルプは、MCPを主に「ひとりで使う作業」向けとしています

NotionのClaudeエージェントは別の機能

名前が似ているため混同されやすいのですが、Notionには「Claude agents in Notion」(ベータ版)という別の機能があります。Notionのヘルプによると、これはNotionの中でClaudeを動かす機能で、Anthropicのアカウントは不要です(自分のAnthropicアカウントは使えません)。利用できるのはBusinessプランとEnterpriseプランで、実行ごとにNotionのクレジットが使われます。MCPとの違いについて、ヘルプは「MCPではClaudeのアプリで作業し、そこからNotionのデータを引き出す。Claudeエージェントでは、Notionの中にとどまって作業する」と説明しています。この記事で扱うのは、前者(Claude Codeからリモートで接続する方法)です。

セキュリティと権限管理のベストプラクティス

NotionのAPIトークンはワークスペース全体へのアクセス権を持ちうるため、取り扱いには十分な注意が必要です。

  • 最小権限の原則:インテグレーションに必要なCapabilitiesだけを付与する。書き込み不要な用途ならRead onlyにする
  • 接続ページの限定:インテグレーションは手動で接続を許可したページ・DBにしかアクセスできない仕様。すべてのページに接続するのではなく、必要なページのみに留める
  • トークンの環境変数化:コードや設定ファイルにトークンをハードコーディングせず、.envファイル+python-dotenvやdirenvで管理する
  • gitignoreの徹底:.envファイルおよびMCP設定ファイルを.gitignoreに追加し、誤ってGitHubに公開しないようにする
  • 定期的なトークンローテーション:Notion DevelopersでIntegration Tokenは再生成できる。チームメンバーが退職した場合や漏洩疑いがある場合はすぐにローテーションする

Notion公式が挙げる注意点:プロンプトインジェクション

Notionの公式ドキュメント(Security best practices)は、MCPで連携するときの注意として次の点を挙げています。

  • 公式の接続先だけを使う:https://mcp.notion.com/mcp(推奨)または https://mcp.notion.com/sse。第三者が配布する設定を入れる前に、接続先のURLを確かめます。
  • 読み込んだ内容を信用しすぎない:Notionのページに「この指示に従え」といった悪意のある文章が紛れていると、AIがそれに従って情報を外へ出したり内容を書き換えたりするおそれがあります(プロンプトインジェクション)。ツールが返した内容は信頼できないものとして扱い、AIが提案した操作は承認する前に確認します。
  • 内容を変える操作の前に確認を挟む:ページの作成・更新など、内容を変える操作は実行前に確認する設定にしておきます。
  • 管理者は接続を管理できる:ワークスペースのオーナーは、Notionの「設定」→「接続」でMCPクライアントからのアクセスを管理できます。

ドキュメント連携を安全に運用するために(一次情報)

監修者・河合継はClaude Codeを公開当初(2025年2月、Claude 3.7 Sonnetと同時の研究プレビュー)から1年以上、外部サービスとの連携を含めて実務で運用してきました。Notionのような外部ツールと繋ぐとき、運用面で効いた点を補足します。

  • 権限は必要な範囲だけに絞る。連携先に広い権限を渡すほど、できることも事故の範囲も広がります。読み取りだけで足りるなら書き込みは渡さない、といった最小権限の発想が安全でした。
  • 自動更新は「確認を挟む」運用にする。ドキュメントを自動で書き換えられると便利ですが、意図しない上書きも起こりえます。重要な更新は人が一度確認する流れにしておくと、取り返しのつかない事故を防げます。
  • 繋いだら一度、想定どおり動くか試す。設定が通っても期待どおりとは限りません。小さく一往復させて挙動を確かめてから、日常のワークフローに組み込むのが堅実でした。

Claude Code+Notion連携をさらに発展させるアイデア

基本的な連携が安定したら、以下の発展的な活用も検討できます。

CLAUDE.mdにNotionの情報を組み込む

プロジェクトルートに置くCLAUDE.md(Claude Codeが常時参照するプロジェクト説明ファイル)に「Notionデータベースの構造・よく使うDB ID・操作のルール」を記述しておくと、毎回説明しなくても意図通りの操作が行われやすくなります。クリスタルメソッドでも、よく使うNotionのDB IDやプロパティ名をCLAUDE.mdに記載することで、指示の省略化と精度向上を実現しています。

Notionデータをベクトル検索で活用

NotionのページをエクスポートしてEmbedding化し、RAG(Retrieval-Augmented Generation)パイプラインに組み込むと、Claude Codeが「ナレッジベース全体を参照して答える」高度な利用が可能になります。

GitHub Actions + Notion連携の自動化

PRマージ時やデプロイ完了時にNotionの進捗DBを自動更新するGitHub Actionsワークフローを、Claude Codeで生成・管理できます。CI/CDとナレッジ管理を統合した開発フローが実現します。

複数ワークスペースの横断管理

複数のNotionワークスペースにアクセスが必要な場合は、旧方式であればインテグレーショントークンをワークスペースごとに作成し、別名のサーバーとして登録することで対応できます。

よくある質問

Q. Claude CodeとNotionを連携する方法は?
A. 主に4つあります。Notion公式のリモートMCPサーバーを登録する方法、Notion公式プラグインを入れる方法、claude.aiで追加したコネクタを使う方法、Notion APIをスクリプトから直接使う方法です。もっとも手軽なのは、Notionが公式に提供するリモートMCPサーバー(https://mcp.notion.com/mcp)をClaude Codeに登録する方法です。

Q. MCP経由の連携で最初に必要な準備は何ですか?
A. ターミナルで claude mcp add –transport http notion https://mcp.notion.com/mcp を実行し、Claude Codeを起動して /mcp からNotionにログインして接続を許可します。Node.jsやAPIトークンの準備は不要です。

Q. NotionのAPIトークン(インテグレーション)は必要ですか?
A. Notion公式のリモートMCPサーバーを使う場合は不要です。ブラウザでの認証(OAuth)でつながります。トークンが必要なのは、Notion APIをスクリプトから直接使う場合と、オープンソース版のnotion-mcp-serverを自分で動かす場合です。

Q. notion-mcp-server(npxで動かす方式)は今も使えますか?
A. 使えますが、Notionの公式ドキュメントはこのオープンソース版を「現在は積極的に保守されていない」とし、ほとんどの場合はリモートMCPサーバーを使うよう案内しています。使う場合は、プロジェクト直下の .mcp.json の mcpServers に command:”npx”、args:[“-y”,”@notionhq/notion-mcp-server”]、env の NOTION_TOKEN にトークンを指定します。

Q. 連携できているかはどう確認しますか?
A. Claude Codeのセッション中に /mcp を実行して接続状態を確認するか、ターミナルで claude mcp get notion を実行します。そのうえで「Notionで◯◯を検索して」と頼み、notion-search などのツール呼び出しが表示されてデータが返ってくれば連携成功です。

Q. Notion公式のClaude Code用プラグインはありますか?
A. あります。makenotion/claude-code-notion-plugin で、リモートMCPサーバーに加えて、Notion向けのSkillsと /Notion:search などのスラッシュコマンドが一度に入ります。/plugin marketplace add makenotion/claude-code-notion-plugin のあと /plugin install notion-workspace-plugin@notion-plugin-marketplace を実行します。

Q. MCPを使わない連携方法はありますか?
A. Notion APIをPython(notion-clientライブラリ等)で直接呼び出すスクリプトをClaude Codeに生成・実行させる方法があります。既存のPythonプロジェクトへの組み込みや、複雑なデータ加工が必要な場合に向いています。

Q. よくあるエラーにはどんなものがありますか?
A. データベースIDの誤りやインテグレーション未接続による「Could not find database with ID」、トークン無効や権限不足による「Unauthorized」「403 Forbidden」、承認待ちや認証前で「MCPサーバーが認識されない」、利用回数の上限(1分あたり180リクエスト。BusinessとEnterpriseは600)を超えたときの429エラーなどがあります。

Q. セキュリティ面で気をつけることは何ですか?
A. 公式の接続先(mcp.notion.com)だけを使うこと、Notionから読み込んだ内容に紛れた指示にAIが従ってしまうプロンプトインジェクションに注意し、内容を変える操作は実行前に確認すること、トークンを使う方式では必要な権限とページだけに絞り、トークンを環境変数で管理してリポジトリに含めないことが大切です。

Q. 連携後にどんな作業を自動化できますか?
A. 仕様書を参照しながらのコーディング、バグ・タスクの自動起票、議事録の構造化保存、コードとドキュメントの同期、GitHubのコミット情報などを使った進捗集計・ダッシュボード更新などができます。


まとめ

Claude CodeとNotionの連携は、Notion公式のリモートMCPサーバーを使うことで最もシームレスに実現できます。セットアップは claude mcp add でサーバーを登録→/mcp でNotionにログインして許可→動作確認、という3ステップで完了します。Notion APIを直接叩くPythonスクリプトをClaude Codeに生成・実行させる方法も有効で、柔軟なデータ操作や既存プロジェクトへの組み込みに向いています。

活用場面は仕様書の参照・タスク自動起票・議事録保存・ドキュメント同期・進捗集計と幅広く、コーディング作業とナレッジ管理のサイロを取り除く効果があります。セキュリティ面では、公式の接続先だけを使うこと、内容を変える操作の前に確認を挟むこと、トークンを使う場合は環境変数化と最小権限の徹底が重要です。まずは小さなユースケース(例:バグを1件Notionに起票する)から試し、動作を確認しながら段階的に活用範囲を広げていくことをお勧めします。

関連記事

Claude Code・AIエージェントの業務活用をご検討の方へ

クリスタルメソッドは、Claude Codeを日々の業務で使いながら、AIエージェント・社員AIの導入と開発効率化を支援しています。自社サイトの表示速度をAI社員(Claude Code)で12.89秒→2.03秒に短縮した実例も事例記事として公開しています。「自社の開発・業務にAIをどう組み込むか」といったご相談を承っています。

AIニュースのまとめをメールで

毎週月曜、海外AIニュースの日次ダイジェストを1週間分まとめてお届けします。無料・いつでも配信を停止できます。

監修

河合 継(クリスタルメソッド株式会社 代表取締役)

AI・ディープラーニングに関する特許16件の発明者。過去、国立がん研究センターとの共同研究や、テレビ番組でのAI解説実績を持つAI研究者として、AIの研究開発を主導している。
運営会社について | 編集方針

Read next

あわせて読みたい

  • 対話・チャットLLMのイメージ

    Claude Code MCP設定の使い方|外部ツール連携の実装【2026】

    Claude Code MCPとは何か:AIコーディングを拡張する仕組みの全体像 Claude CodeのMCPとは、Claude CodeにGitHub・デー...

  • 対話・チャットLLMのイメージ

    Claude Code×Obsidian連携の設定手順|ナレッジ活用【2026】

    Claude CodeでObsidianのノートを編集するには? Obsidianのvaultは中身がただのMarkdownファイルの入ったフォルダなので、その...

  • Claude Code GitHub連携の実装ガイド:アーキテクチャ設計から失敗回避まで

    Claude CodeとGitHubの連携方法|3つの連携パターン・設定手順・GitHub Actionsの例【2026年版】

    Claude CodeとGitHubの連携は、IssueやPRへのコメントひとつで、実装からPR作成までをClaudeに任せられる「エージェント型ワークフロー」...

View more