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 Transport: Современная реализация MCP-сервера на Express.

  • 🌐 Встроенный Ngrok-туннель: Откройте доступ к вашему локальному MCP-серверу для Notion одной командой (npm run start или npm run dev) с помощью @ngrok/ngrok.

  • 💻 Выполнение команд терминала: Выполняйте команды PowerShell или cmd с настраиваемыми таймаутами, рабочими каталогами и рекурсивным завершением дерева процессов.

  • 📁 Операции с файловой системой: Полный набор инструментов для чтения, записи, перемещения, просмотра списка, получения информации и удаления файлов и каталогов.

  • 🔒 Безопасность и песочница:

    • Режим песочницы (FULL_ACCESS=false): Строгое ограничение путей внутри настроенного FILES_ROOT с защитой от обхода пути.

    • Полный доступ к хосту (FULL_ACCESS=true): Неограниченный доступ, когда вам нужна полная автоматизация хоста.

    • Безопасная аутентификация: Сравнение за постоянное время (crypto.timingSafeEqual) для Bearer-токенов и API-ключей.

    • Проверка заголовка Host: Предотвращает DNS-ребдинг и несанкционированную подмену заголовка Host.

  • 🤖 Дизайн, ориентированный на агентов: Подробные спецификации и JSON-схемы, оптимизированные для AI-моделей (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 Custom Agents

  1. В Notion откройте Settings & membersConnections (или откройте конфигурацию вашего Notion Agent).

  2. Добавьте новое Custom MCP Connection.

  3. Установите Server URL на:

    https://your-domain.ngrok-free.app/mcp
  4. Установите Authentication:

    • Header Name: Authorization

    • Header Value: Bearer <YOUR_MCP_API_KEY>

  5. Проверьте подключение. Notion автоматически обнаружит все 7 инструментов (terminal_execute, file_read, file_write, file_list, file_stat, file_mkdir, file_move, file_delete).


Доступные MCP-инструменты

Полные JSON-схемы, параметры и типы возвращаемых значений см. в AGENT_SPEC.md.

Инструмент

Описание

terminal_execute

Выполнение команд PowerShell или cmd с кодировкой UTF-8 и опциями таймаута.

file_search

Поиск файлов по имени с помощью glob (*.ts) и/или поиск текста/регулярных выражений внутри файлов (Grep).

file_replace

Безопасная замена точного блока кода или текста в файле без полной перезаписи.

file_read

Чтение содержимого файла (UTF-8 или Base64) с постраничной разбивкой для больших файлов.

file_write

Создание, перезапись или добавление содержимого в файлы (создаёт недостающие каталоги).

file_list

Рекурсивный или плоский список содержимого каталога с размерами файлов.

file_stat

Просмотр метаданных файла/каталога (размер, время создания/изменения, режим).

file_mkdir

Рекурсивное создание каталогов.

file_move

Перемещение или переименование файлов и каталогов.

file_delete

Безопасное удаление файлов или каталогов (recursive: true обязательно для каталогов).


Справочник по конфигурации (.env)

Переменная

По умолчанию

Описание

MCP_API_KEY

обязательно

Секретный ключ для аутентификации (минимум 32 символа).

PORT

3000

Порт для HTTP-сервера.

HOST

127.0.0.1

Адрес хоста для привязки.

NGROK_ENABLED

false

Включить/отключить автоматическое создание ngrok-туннеля при запуске.

NGROK_AUTHTOKEN

""

Ngrok-автотокен (необязателен, если настроен глобально через ngrok CLI).

NGROK_DOMAIN

""

Статический/пользовательский ngrok-домен (например, xyz.ngrok-free.app).

ALLOWED_HOSTS

localhost:3000;...

Список разрешённых заголовков Host, разделённых точкой с запятой.

FULL_ACCESS

false

При false ограничивает файловые операции и cwd терминала до FILES_ROOT.

FILES_ROOT

./workspace

Базовый каталог для песочницы, когда FULL_ACCESS=false.

COMMAND_TIMEOUT_MS

120000

Таймаут по умолчанию для команд терминала (2 минуты).

MAX_OUTPUT_BYTES

1048576

Максимальный размер захвата stdout/stderr (1 МБ).

MAX_FILE_BYTES

10485760

Максимальный размер файла для чтения/записи на запрос (10 МБ).


Структура проекта

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 start — Запуск продакшен-сервера из dist/index.js.

  • npm run dev — Запуск сервера разработки с tsx watch.

  • npm run check — Проверка типов TypeScript без создания файлов.

  • npm run token — Генерация криптографически безопасного случайного токена для MCP_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