概要

MCP(Model Context Protocol)サーバーには「Hosted」と「Self-hosted」の2種類がある。Notion を例に整理する。

Hosted MCP サーバー

サービス提供者(この場合 Notion)が自社インフラ上で運営している MCP サーバー。

AIクライアント(Claude Code など)
        ↓ MCP プロトコル(OAuth 2.0)
https://mcp.notion.com/mcp  ← Notion が運営
        ↓
Notion のデータ
  • 認証: OAuth 2.0(APIキー不要)
  • アクセス範囲: ユーザーが見えるページ全体
  • 管理コスト: なし(Notion が管理)
  • Claude Code での設定:
claude mcp add --transport http notion https://mcp.notion.com/mcp
# その後 /mcp でブラウザ OAuth 認証

Self-hosted MCP サーバー

npm パッケージなどを自分のマシンやサーバーで起動する方式。

AIクライアント(Claude Code など)
        ↓ stdio
ローカルで動く MCP サーバー(npx @notionhq/notion-mcp-server)
        ↓ Notion REST API(APIキーで認証)
Notion のデータ
  • 認証: Internal Integration Token(NOTION_API_KEY
  • アクセス範囲: 明示的に Integration を共有したページのみ
  • 管理コスト: 自分でサーバーを管理・更新
  • Claude Code での設定:
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "NOTION_API_KEY": "secret_xxxx"
      }
    }
  }
}

比較表

  Hosted Self-hosted
誰が動かす サービス提供者 自分
認証方式 OAuth 2.0 API キー
アクセス範囲 広い(ユーザー権限全体) 狭い(共有したページのみ)
管理コスト なし あり
セキュリティ管理 OAuth トークン API キーの管理が必要

どちらを選ぶか

  • シンプルに使いたい → Hosted(OAuth でブラウザ認証するだけ)
  • アクセス範囲を細かく制御したい → Self-hosted(Integration で明示的に共有)
  • オフラインや社内環境 → Self-hosted

Notion の場合、Hosted MCP サーバーは https://mcp.notion.com/mcp として提供されており、Claude Code からは claude mcp add --transport http コマンドで簡単に追加できる。