MCP Server for Notion
<!-- markdownlint-disable MD013 -->
# MCP Server for Notion
[](https://www.gnu.org/licenses/agpl-3.0) [](https://nodejs.org/) [](https://www.typescriptlang.org/) [](https://www.docker.com/)
This tool provides the Notion API as an MCP (Model Context Protocol) server.
It enables AI agents to search, view, create, and update
Notion pages, as well as operate on databases.
## Features
### Page & Database Operations
Supports major operations such as search, retrieval, creation, updates, and appending blocks.
### File-based Operations
Drastically reduces LLM token usage by saving/loading page content (JSON) to/from files.
### Response Extraction (extract)
Optimizes context size by extracting only the necessary properties from the API response.
## Quick Start
### Local Development Environment
1. Install:
```bash
git clone https://github.com/acckkiie/notion-mcp-server
cd notion-mcp-server
npm install
```
2. Configure:
Copy `.env.example` to create `.env` and set your Notion API key.
```bash
cp .env.example .env
# Edit .env: NOTION_API_KEY=secret_...
```
3. Run:
```bash
npm run dev
```
### Image Build
```bash
npm run build
docker build -t notion-mcp-server:latest .
```
## MCP Client Configuration
### Via Docker (Recommended)
Using Docker reduces environment dependencies and enables security control via proxy.
```json
{
"mcpServers": {
"notion-mcp-server": {
"disabled": false,
"command": "bash",
"args": [
"-c",
"docker compose -f /path/to/notion-mcp-server/docker-compose.yml down 2>/dev/null; docker compose --env-file /path/to/notion-mcp-server/.env -f /path/to/notion-mcp-server/docker-compose.yml run --rm -i notion-mcp-server"
],
"env": {
"HOST_WORKSPACE_PATH": "/path/to/your/workspace"
}
}
}
}
```
### Local Execution
```json
{
"mcpServers": {
"notion": {
"command": "node",
"args": [
"/path/to/notion-mcp-server/build/index.js"
],
"env": {
"NOTION_API_KEY": "secret_...",
"HOST_WORKSPACE_PATH": "/path/to/your/workspace"
}
}
}
}
```
## License
[GNU Affero General Public License v3.0 (AGPL-3.0)](LICENSE)
TDQS
Scored across 13 tools
Each tool targets a distinct Notion resource and action: pages, databases, blocks, search, and query operations are clearly separated. Tools like notion_search and notion_query_database work differently enough that an agent should not confuse them.
All tools follow a consistent notion_verb_noun pattern (e.g., notion_retrieve_page, notion_create_database, notion_update_block, notion_append_block_children). The verb and resource order is uniform across the entire tool set, making the naming predictable.
Thirteen tools is well-scoped for Notion's content model, covering pages, databases, blocks, child-block operations, and search. Each tool covers a meaningful operation without excessive fragmentation or overlap.
The tool set provides strong coverage of Notion's core workflows: creating, retrieving, updating, querying, and searching pages, databases, and blocks. Minor gaps exist such as no explicit delete-database or page-deletion tool, though page archiving can be handled via update_page and block deletion is supported.