
fr0zon3/notion-mcp
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Notion mcp для подключения агентов ИИ к Notion через markdown | Чтение и запись notion markdown
Обзор
Ориентированный на производство MCP-сервер, который соединяет AI-агентов с Notion через стандартный markdown вместо сырого API JSON. Агенты читают и записывают маркировку GFM. Сервер занимается преобразованием блоков, отображением схем базы данных, OAuth и опциональной сохранением с поддержкой Redis для многоэкземплярных развертываний. - — обработчики инструментов остаются в server.ts для сохранения стабильного публичного контракта MCP; поддерживающие модули решают перекрёстные вопросы. - — абстракция CacheStore позволяет работать в памяти (по умолчанию) или Redis без изменения логики клиента Notion. - — если Redis настроен, но недоступен, сервер фиксирует предупреждение и продолжает сохранять сохранение в памяти и файле. - Node.js 20+ — интеграция с Notion с общими страницами Скопируйте .env.example в .env при запуске с клонированной проверки: Тесты безопасности, зависящие от Symlink, автоматически пропускаются на платформах, где создание симлинков недоступно (что часто встречается на Windows без режима разработчика). 1. Форковать репозиторий и создать ветвь функции из основной 2.
Обзор (машинный перевод)
Ориентированный на производство MCP-сервер, который соединяет AI-агентов с Notion через стандартный markdown вместо сырого API JSON.
Агенты читают и записывают маркировку GFM. Сервер занимается преобразованием блоков, отображением схем базы данных, OAuth и опциональной сохранением с поддержкой Redis для многоэкземплярных развертываний.
Основные моменты
| Возможности | Подробности |
|---|---|
| Markdown-first I/O | 42 MCP-инструмента; агенты никогда не строят блок Notion JSON |
| Верность туда и обратно | 24 типа блоков, включая переключатели, столбцы, вызовы, таблицы, загрузки |
| Эргономика базы данных | Записать { "Status": "Done" } — конвертация схемы происходит автоматически |
| Двойной транспорт | Stdio (API токен) и HTTP (OAuth или защищённый от носителя статический токен) |
| Настройки безопасности по умолчанию | Префикс уведомления содержимого, очистка URL, содержание корневого файла рабочего пространства |
| Необязательный Redis | Общий кэш схемы и сохранение токена OAuth с плавным запасом |
| Профили CLI | Доступ к Notion с низким уровнем контекста через easy-notion с режимами только чтения/чтения |
Архитектура
Workflow запроса (вызов инструмента)
Структура проекта
Дизайнерские решения
- Модуль одного сервера — обработчики инструментов остаются в ‘server’.
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
easy-notion-mcp
Production-oriented MCP server that connects AI agents to Notion through standard markdown instead of raw API JSON.
Agents read and write GFM markdown. The server handles block conversion, database schema mapping, OAuth, and optional Redis-backed persistence for multi-instance deployments.
Feature highlights
| Capability | Details |
|---|---|
| Markdown-first I/O | 42 MCP tools; agents never construct Notion block JSON |
| Round-trip fidelity | 24 block types including toggles, columns, callouts, tables, uploads |
| Database ergonomics | Write { "Status": "Done" } — schema conversion is automatic |
| Dual transport | Stdio (API token) and HTTP (OAuth or bearer-protected static token) |
| Security defaults | Content-notice prefix, URL sanitization, workspace-root file containment |
| Optional Redis | Shared schema cache and OAuth token persistence with graceful fallback |
| CLI profiles | Low-context Notion access via easy-notion with readonly/readwrite modes |
Architecture
flowchart TB
subgraph clients [MCP Clients]
CC[Claude Code / Cursor]
HTTP[HTTP MCP clients]
end
subgraph transport [Transport Layer]
STDIO[index.ts — stdio]
HTTP_SRV[http.ts — Express]
end
subgraph core [Application Core]
SRV[server.ts — MCP tools & resources]
NC[notion-client.ts — Notion SDK wrapper]
MD[markdown converters]
end
subgraph persistence [Persistence — optional]
MEM[(In-memory cache)]
REDIS[(Redis)]
FS[(Encrypted token files)]
end
CC --> STDIO
HTTP --> HTTP_SRV
STDIO --> SRV
HTTP_SRV --> SRV
SRV --> NC
SRV --> MD
NC --> MEM
NC --> REDIS
HTTP_SRV --> FS
HTTP_SRV --> REDIS
Request workflow (tool call)
sequenceDiagram
participant Agent
participant MCP as MCP Server
participant Cache as Cache Store
participant Notion as Notion API
Agent->>MCP: tools/call (e.g. read_page)
MCP->>Notion: blocks.children.list (paginated)
Notion-->>MCP: block tree
MCP->>MCP: blocks → markdown
MCP-->>Agent: { markdown, warnings? }
Agent->>MCP: tools/call (add_database_entry)
MCP->>Cache: get schema:dbId
alt cache miss
Cache->>Notion: dataSources.retrieve
Notion-->>Cache: schema
Cache-->>MCP: schema
else cache hit
Cache-->>MCP: schema
end
MCP->>MCP: convert property values
MCP->>Notion: pages.create
Notion-->>MCP: page
MCP-->>Agent: { id, url }
Project structure
easy-notion-mcp/
├── src/
│ ├── index.ts # Stdio entry point
│ ├── http.ts # HTTP/OAuth entry point
│ ├── cli.ts # Profile-based CLI
│ ├── server.ts # MCP tool & resource handlers
│ ├── notion-client.ts # Notion SDK integration
│ ├── config/env.ts # Typed environment parsing
│ ├── logging/logger.ts # Structured logging
│ ├── persistence/ # Cache + Redis integration
Установка
npx -y easy-notion-mcpКонфигурация
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "easy-notion-mcp"],
"env": {
"NOTION_TOKEN": "ntn_your_integration_token"
}
}
}
}