👷🏼

Notion MCPの特定ツールを禁止して安全に利用する

に公開

Notion MCP

Notionの新しいMCPサーバーがリリースされた。
ブロック構造をパースしてMarkdown化するのが大変、遅いなどのペインが解消されており、Notion AIが利用可能な場合はNotion AIと同様の検索機能が利用できる。

https://notion.notion.site/Notion-MCP-1d0efdeead058054a339ffe6b38649e1

Notion MCPを使えるようにする

https://notion.notion.site/Beta-Overview-Notion-MCP-206efdeead058060a59bf2c14202bd0a

ClaudeCodeのMCP設定の詳細は下記を参照。

https://docs.anthropic.com/ja/docs/claude-code/mcp

ユーザーごとにグローバルに設定する方法とプロジェクトごとに設定する方法があるが、この記事ではプロジェクト専用の設定として追加する。

以下の作業はプロジェクトのルートディレクトリで行う前提。

{PJ Root}/.mcp.jsonに以下を記述する。

{
  "mcpServers": {
    "notionMCP": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.notion.com/sse"]
    }
  }
}

この状態でClaudeCodeを起動するとMCPの使用許可が要求され、承認するとブラウザが開き、Notionの認証が求められるので確認のうえで許可する。

ClaudeCodeを起動して /mcp コマンドを実行してNotion MCPが表示されればOK.

利用可能なツールを制限する

https://notion.notion.site/afc4c7167a524a839b4b68a38cbe77cb?v=2cadb9c6b54146ec98aa394b8d1820c6

Notion MCPにはページ作成やDB作成といった更新系の機能もある。
新しいNotion MCPは便利だが、Claude DesktopやClaude Codeに自由に使わせる場合、更新系は明確な意志・設計がない限りブロックしておくほうが安全。

Notion MCPに限った話ではないが、特定操作をブロックする場合、 settings.jsondeny として記述する。
これもユーザー全体の設定とプロジェクトごとの設定ができるが、以下はプロジェクトごとの設定。

https://docs.anthropic.com/ja/docs/claude-code/settings

ページとDBの作成、更新、移動などをブロックする場合 {PJ Root}/.claude/settings.json に以下のように設定する。

{
  "permissions": {
    "deny": [
      "mcp__notionMCP__create-pages",
      "mcp__notionMCP__update-page",
      "mcp__notionMCP__move-pages",
      "mcp__notionMCP__duplicate-page",
      "mcp__notionMCP__create-database",
      "mcp__notionMCP__update-database"
    ]
  }
}

動作確認

Notionに適当なテストページを作って、 fetchしたうえでサブページを作らせてみる。

fetchは成功するが、サブページの作成はブロックされる。

ちなみに上記の設定は /mcp コマンドの表示内容には影響せず、実行しないとわからない。
更新系コマンドで試すのは怖いので、試しに 検索ツール(mcp__notionMCP__search)を deny して動作確認しておくとよい。

おわりに

新しいNotion MCP + Notion AIは検索精度や速度面から、十分に実用的という印象。
活用機会は非常に多くなりそうだが、一方で自分のNotionユーザーで認証して使うとなると、権限を持っている全てのページやDBの更新や移動、複製が可能になってしまうため事故が怖い。
MCPのツールを制限するとある程度安全になるので、この記事がその助けになれば幸いです。

Discussion