Skip to main content
Glama
Glebsky

Notion Terminal MCP

by Glebsky

Notion Terminal MCP

MCP Node.js TypeScript License: MIT

認証済みで本番環境に対応したリモートのModel Context Protocol (MCP)サーバーであり、Notion Custom Agents、Claude、Cursor、および自律型AIエージェントに対して、Streamable HTTPを介してターミナル実行ファイルシステムツールを提供します。

公式のNgrok Node.js SDK@ngrok/ngrok)による、設定不要のパブリックトンネリングを内蔵しています。


機能

  • Streamable HTTP トランスポート: Express上で動作する最新のMCPサーバー実装です。

  • 🌐 内蔵Ngrokトンネル: @ngrok/ngrokを使用して、単一のコマンド(npm run start または npm run dev)でローカルMCPサーバーをNotionに公開します。

  • 💻 ターミナル実行: PowerShellまたはcmdコマンドを、設定可能なタイムアウト、作業ディレクトリ、再帰的なプロセスツリー終了とともに実行します。

  • 📁 ファイルシステム操作: ファイルとディレクトリの読み取り、書き込み、移動、一覧表示、状態取得、削除のための完全なツールセットです。

  • 🔒 セキュリティとサンドボックス:

    • サンドボックスモード(FULL_ACCESS=false: 設定されたFILES_ROOT内での厳格なパス封じ込めと、パストラバーサル防御を提供します。

    • フルホストモード(FULL_ACCESS=true: 完全なホスト自動化が必要な場合の無制限アクセス。

    • タイミングセーフ認証: BearerトークンとAPIキーに対する定数時間比較(crypto.timingSafeEqual)。

    • ホストヘッダー検証: DNSリバインディングと不正なホストヘッダースプーフィングを防止します。

  • 🤖 エージェントファースト設計: AIモデル向けに最適化された詳細な仕様とJSONスキーマ(AGENT_SPEC.md)。


クイックスタート

1. インストール

リポジトリをクローンして依存関係をインストールします:

git clone https://github.com/Speedstu/notion-terminal-mcp.git
cd notion-terminal-mcp
npm install

2. 環境設定

.env.example.env にコピーするか、セットアップスクリプトを実行します:

# Automated setup (generates a secure 32+ character API key)
.\setup.ps1

または手動で:

Copy-Item .env.example .env
# Generate a secure token:
npm run token

.env ファイルを編集します:

# Required: Secure API Key for Notion
MCP_API_KEY=your_generated_32_char_api_key

PORT=3000
HOST=127.0.0.1

# Ngrok Public Tunnel (Optional but recommended for Notion)
NGROK_ENABLED=true
NGROK_AUTHTOKEN=your_ngrok_authtoken_here
NGROK_DOMAIN=your-static-name.ngrok-free.app

# Security & Sandboxing
FULL_ACCESS=false
FILES_ROOT=./workspace
ALLOWED_HOSTS=localhost:3000;127.0.0.1:3000;*.ngrok-free.app;*.ngrok.app;*.ngrok-free.dev

3. ビルドと実行

# Build TypeScript
npm run build

# Start production server
npm run start

ホットリロードでの開発用:

npm run dev

NGROK_ENABLED=true で起動すると、サーバーはNotionに貼り付ける準備ができた接続情報を出力します:

============================================================
             NOTION MCP AGENT CONNECTION READY             
============================================================
URL to paste into Notion:  https://your-domain.ngrok-free.app/mcp

Authentication Header:
  Header Name:   Authorization
  Header Value:  Bearer <your_token>
============================================================

Notionカスタムエージェントへの接続

  1. Notionで、設定とメンバー接続 を開きます(またはNotion Agent設定を開きます)。

  2. 新しいカスタムMCP接続を追加します。

  3. サーバーURLを次に設定します:

    https://your-domain.ngrok-free.app/mcp
  4. 認証を設定します:

    • ヘッダー名: Authorization

    • ヘッダー値: Bearer <YOUR_MCP_API_KEY>

  5. 接続をテストします。Notionは自動的に7つのツール(terminal_executefile_readfile_writefile_listfile_statfile_mkdirfile_movefile_delete)を検出します。


利用可能なMCPツール

完全なJSONスキーマ、パラメータ、戻り値の型については、AGENT_SPEC.mdを参照してください。

Tool

Description

terminal_execute

PowerShellまたはcmdコマンドを、UTF-8エンコーディングとタイムアウトオプション付きで実行します。

file_search

ファイル名のグロブ(*.ts)および/またはファイル内のテキスト/正規表現検索(Grep)でファイルを検索します。

file_replace

ファイル内の正確なコードまたはテキストのブロックを、完全に書き換えることなく安全に置換します。

file_read

ファイル内容を読み取ります(UTF-8またはBase64)。大きなファイルにはオフセットページネーションを使用します。

file_write

ファイルにコンテンツを作成、上書き、または追加します(不足しているディレクトリも作成します)。

file_list

ディレクトリ内容を再帰的またはフラットに、ファイルサイズ付きで一覧表示します。

file_stat

ファイル/ディレクトリのメタデータ(サイズ、作成/変更タイムスタンプ、モード)を検査します。

file_mkdir

ディレクトリを再帰的に作成します。

file_move

ファイルとディレクトリを移動または名前変更します。

file_delete

ファイルまたはディレクトリを安全に削除します(ディレクトリにはrecursive: trueが必要です)。


設定リファレンス (.env)

Variable

Default

Description

MCP_API_KEY

required

認証用の秘密鍵(最小32文字)。

PORT

3000

HTTPサーバーのポート。

HOST

127.0.0.1

バインドするホストアドレス。

NGROK_ENABLED

false

起動時に自動ngrokトンネル作成を有効/無効にします。

NGROK_AUTHTOKEN

""

Ngrok authtoken(ngrok CLIでグローバルに設定されている場合は任意)。

NGROK_DOMAIN

""

静的/カスタムngrokドメイン(例: xyz.ngrok-free.app)。

ALLOWED_HOSTS

localhost:3000;...

許可されたHostヘッダーのセミコロン区切りリスト。

FULL_ACCESS

false

falseの場合、ファイル操作とターミナルのcwdFILES_ROOTに制限します。

FILES_ROOT

./workspace

FULL_ACCESS=falseの場合のサンドボックスのベースディレクトリ。

COMMAND_TIMEOUT_MS

120000

ターミナルコマンドのデフォルトタイムアウト(2分)。

MAX_OUTPUT_BYTES

1048576

stdout/stderrキャプチャの最大サイズ(1 MB)。

MAX_FILE_BYTES

10485760

リクエストごとのファイル読み書きの最大サイズ(10 MB)。


プロジェクト構造

notion-terminal-mcp/
├── src/
│   ├── config.ts              # Type-safe environment and validation
│   ├── index.ts               # Server entry point & lifecycle
│   ├── server.ts              # Express setup & MCP Streamable HTTP endpoint
│   ├── middleware/
│   │   ├── auth.ts            # Timing-safe token authentication
│   │   └── host.ts            # Host header validation
│   ├── tools/
│   │   ├── command.ts         # Process tree management & execution
│   │   ├── filesystem.ts      # Sandboxed filesystem CRUD operations
│   │   ├── index.ts           # MCP tool registrations
│   │   └── types.ts           # MCP result helpers & interfaces
│   └── tunnel/
│       └── ngrok.ts           # Ngrok SDK manager & Notion connection banner
├── AGENT_SPEC.md              # Technical specification for AI Agents
├── package.json
├── tsconfig.json
└── setup.ps1                  # PowerShell initial setup script

NPMスクリプト

  • npm run build — TypeScriptをdist/にコンパイルします。

  • npm run startdist/index.jsから本番サーバーを実行します。

  • npm run devtsx watchで開発サーバーを実行します。

  • npm run check — ファイルを出力せずにTypeScriptの型チェックを行います。

  • npm run tokenMCP_API_KEY用の暗号学的に安全なランダムトークンを生成します。


セキュリティポリシー

セキュリティに関する考慮事項と脆弱性報告のガイドラインについては、SECURITY.mdを確認してください。

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

  • Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.

  • StremAI MCP: shared memory for AI coding agents. Connected agents can recall. OAuth + local stdio.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Glebsky/notion-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server