Skip to main content
Glama

discord-notion-mcp

Discord と Notion を使うコミュニティ向けの、セルフホスト型 MCP サーバー。メンバーは Discord でログインし、ロールに付与した権限の範囲で AI から Discord を読み、Notion を読み書きする。

ツール

権限

ツール

discord:read

discord_list_channels discord_list_threads discord_read_messages discord_get_message discord_search_messages discord_find_member discord_list_pins discord_list_events

notion:read

notion_search notion_get_page notion_get_users notion_query_database notion_get_database notion_get_comments

notion:write

notion_create_page notion_append_content notion_edit_content notion_update_properties notion_archive_page notion_list_recent_changes notion_revert_change

  • notion:write(画面では「Notion 編集」)は notion:read を含む。

  • Discord は本人が閲覧できるチャンネルのみ。

  • Notion の権限は Notion 連携に共有されたすべてのページ・データベースが対象。

  • Notion の本文は Notion 公式の Markdown API(拡張 Markdown: メンション・色・コールアウト・トグル・カラム)で読み書きする。

  • Notion への書き込みはページにコメントで記録され、/dashboard/audit または notion_revert_change で取り消せる。本文の追記・編集は書き込み前の本文に置き換えて取り消す。変更後にページが編集されていた場合は、その編集を消さないよう取り消さず、手作業で直す。取り消しで戻せないほど大きい(約 450 KB 超の)ページには書き込まない。子ページ・データベースを作るタグは本文に書けない。

  • ツール呼び出しはユーザーごとに最大 30 回まで連続、以降は毎秒 1 回。

Related MCP server: Notion MCP Server

セットアップ

Discord

  1. Developer Portal でアプリを作成

  2. OAuth2 → Redirects に https://<domain>/api/auth/callback/discord

  3. Bot → Message Content Intent と Server Members Intent を ON、トークンを発行

  4. https://discord.com/oauth2/authorize?client_id=<CLIENT_ID>&scope=bot&permissions=66560 で Bot をサーバーに招待

Notion

  1. Integrations で Internal integration を作成(Read / Update / Insert content、Read / Insert comments、User information without email addresses)

  2. 公開したいページの「…」→ コネクト で追加

Coolify

  1. このリポジトリを Git リモートに push し、Coolify で Application(Build Pack: Dockerfile)として追加

  2. Port 3000、Domain を設定(Port Mappings は空のまま。サーバーに公開するとプロキシを経ずに届き、送信元 IP を偽ってレート制限を回避できる)

  3. Persistent Storage: /data

  4. 環境変数を設定してデプロイ

環境変数

名前

必須

内容

PUBLIC_URL

✓

https://<domain>

BETTER_AUTH_SECRET

✓

openssl rand -base64 32

DISCORD_CLIENT_ID

✓

DISCORD_CLIENT_SECRET

✓

DISCORD_BOT_TOKEN

✓

DISCORD_GUILD_ID

✓

対象サーバー ID

NOTION_TOKEN

未設定なら Notion ツール無効

PORT

既定 3000

DATABASE_PATH

既定 ./data/app.db(Docker は /data/app.db)

TRUSTED_PROXY_COUNT

既定 1。Cloudflare 経由なら 2

権限

  • サーバーオーナーと Administrator 権限のロールは自動で admin(全権限)。

  • それ以外は https://<domain>/dashboard でロールまたはユーザーに付与。

  • 「トークンを失効」で即時に接続を切れる。

  • ダッシュボードはいずれかの権限を持つメンバーが閲覧できる(書き込み履歴は notion:write が必要で、管理者以外は自分の分だけ)。権限ページと変更操作は管理者のみ。

  • ツール呼び出しは統計用に記録し、90 日で削除する(引数は保存しない)。

接続

https://<domain>/ に手順を表示する。

Claude Code:

claude mcp add --transport http --scope user ndmcp https://<domain>/mcp

Claude Code 内で /mcp を開いてログイン。

Codex:

codex mcp add ndmcp --url https://<domain>/mcp
codex mcp login ndmcp

開発

bun install
cp .env.example .env
bun run dev        # .env の PORT で起動(PUBLIC_URL も同じポートにする)
bun run preview    # サンプルデータで UI 確認: http://localhost:3920/dev

Related MCP Connectors

Related MCP Servers