# https://github.com/ai-aviate/better-mcp-notion Project Manual

Generated on: 2026-05-22 17:35:43 UTC

## Table of Contents

- [Repository Overview](#overview)
- [Entrypoints and Runtime Surface](#entrypoints)
- [Architecture Evidence Map](#architecture)
- [Operations and Verification Boundaries](#operations)

<a id='overview'></a>

## Repository Overview

### Related Pages

Related topics: [Entrypoints and Runtime Surface](#entrypoints), [Architecture Evidence Map](#architecture), [Operations and Verification Boundaries](#operations)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ai-aviate/better-mcp-notion/blob/main/README.md)
- [package.json](https://github.com/ai-aviate/better-mcp-notion/blob/main/package.json)
- [src/errors.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/errors.ts)
- [src/index.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/index.ts)
- [src/server.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/server.ts)
- [src/converter/frontmatter.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/frontmatter.ts)
- [src/converter/to-markdown.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-markdown.ts)
- [src/converter/to-notion.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-notion.ts)
- [src/converter/types.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/types.ts)
- [src/notion/client.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/client.ts)
- [src/notion/helpers.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/helpers.ts)
- [src/tools/comment.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/tools/comment.ts)
</details>

# Repository Overview

This page is generated from repository evidence because the Human Wiki provider was unavailable. It intentionally limits itself to README and file-tree facts.

## README Evidence

# better-mcp-notion

[Japanese / 日本語](./README_ja.md)

**An MCP server that lets you operate Notion with a single Markdown document.**

Existing Notion MCP servers are thin API wrappers that require multiple round-trips for a single operation. better-mcp-notion uses **one Markdown document (YAML frontmatter + body)** to read, create, and update pages in a single call.

## Why better-mcp-notion?

| | Traditional Notion MCP | better-mcp-notion |
|---|---|---|
| Tools | 16-22 tools | **9 tools** |
| Create a DB entry | 3+ calls (search DB, get schema, create page, append blocks) | **1 call** |
| Edit a page | 4+ calls (get page, get blocks, delete blocks, append blocks) | **1 call** (read, edit, write) |
| Format | Raw JSON blocks | **Markdown** |
| Context window | Heavy (tool definitions + JSON) | **Light** |

## Tools

| Tool | Description |
|------|-------------|
| `read` | Read a Notion page as Markdown with frontmatter. Supports recursive child page reading with `depth`. |
| `write` | Create or update pages from Markdown. Supports batch operations and append/prepend. |
| `search` | Search the workspace by keyword. Returns a Markdown-formatted list. |
| `list` | List database records as a table or child pages as a list. Supports natural language filter & sort. |
| `update` | Quick property update without rewriting content. Just pass page + key-value pairs. |
| `schema` | View or modify database schema — add, remove, or rename columns. |
| `comment` | Add or read comments on a page. |
| `delete` | Archive (soft-delete) a page. |
| `move` | Move a page to a different parent page or database. |

## Quick Start

### 1. Create a Notion Integration

1. Go to [notion.so/profile/integrations](https://www.notion.so/profile/integrations) and create a new integration
2. Copy the API key (`ntn_...`)
3. Share the pages/databases you want to access with the integration ("Connect to" in the page menu)

### 2. Add to your MCP client

#### Claude Code

```bash
claude mcp add better-notion -- npx better-mcp-notion
```

Then set the environment variable:
```bash
export NOTION_API_KEY=ntn_your_api_key_here
```

#### Claude Desktop / Cursor / Windsurf

Add to your MCP config file (e.g. `claude_desktop_config.json`, `.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "better-notion": {
      "command": "npx",
      "args": ["-y", "better-mcp-notion"],
      "env": {
        "

[excerpt truncated]

## Selected Source Inventory

- `README.md`
- `package.json`
- `src/errors.ts`
- `src/index.ts`
- `src/server.ts`
- `src/converter/frontmatter.ts`
- `src/converter/to-markdown.ts`
- `src/converter/to-notion.ts`
- `src/converter/types.ts`
- `src/notion/client.ts`
- `src/notion/helpers.ts`
- `src/tools/comment.ts`

| File | Evidence role | Size |
|---|---|---|
| `README.md` | README/product and usage evidence | 7142 bytes |
| `package.json` | package/runtime metadata | 1357 bytes |
| `src/errors.ts` | implementation surface | 1907 bytes |
| `src/index.ts` | implementation surface | 379 bytes |
| `src/server.ts` | implementation surface | 983 bytes |
| `src/converter/frontmatter.ts` | implementation surface | 9313 bytes |
| `src/converter/to-markdown.ts` | implementation surface | 1818 bytes |
| `src/converter/to-notion.ts` | implementation surface | 1095 bytes |
| `src/converter/types.ts` | implementation surface | 1611 bytes |
| `src/notion/client.ts` | implementation surface | 14345 bytes |
| `src/notion/helpers.ts` | implementation surface | 1711 bytes |
| `src/tools/comment.ts` | implementation surface | 3181 bytes |

Source: `[README.md:1-120]()`

---

<a id='entrypoints'></a>

## Entrypoints and Runtime Surface

### Related Pages

Related topics: [Repository Overview](#overview), [Architecture Evidence Map](#architecture), [Operations and Verification Boundaries](#operations)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ai-aviate/better-mcp-notion/blob/main/README.md)
- [package.json](https://github.com/ai-aviate/better-mcp-notion/blob/main/package.json)
- [src/errors.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/errors.ts)
- [src/index.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/index.ts)
- [src/server.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/server.ts)
- [src/converter/frontmatter.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/frontmatter.ts)
- [src/converter/to-markdown.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-markdown.ts)
- [src/converter/to-notion.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-notion.ts)
- [src/converter/types.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/types.ts)
- [src/notion/client.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/client.ts)
- [src/notion/helpers.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/helpers.ts)
- [src/tools/comment.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/tools/comment.ts)
</details>

# Entrypoints and Runtime Surface

The files below are the highest-signal candidates for how the project is installed, started, configured, or embedded. Treat this as an evidence map, not an inferred API contract.

| File | Evidence role | Size |
|---|---|---|
| `README.md` | README/product and usage evidence | 7142 bytes |
| `package.json` | package/runtime metadata | 1357 bytes |
| `src/errors.ts` | implementation surface | 1907 bytes |
| `src/index.ts` | implementation surface | 379 bytes |
| `src/server.ts` | implementation surface | 983 bytes |
| `src/converter/frontmatter.ts` | implementation surface | 9313 bytes |
| `src/converter/to-markdown.ts` | implementation surface | 1818 bytes |
| `src/converter/to-notion.ts` | implementation surface | 1095 bytes |
| `src/converter/types.ts` | implementation surface | 1611 bytes |
| `src/notion/client.ts` | implementation surface | 14345 bytes |
| `src/notion/helpers.ts` | implementation surface | 1711 bytes |
| `src/tools/comment.ts` | implementation surface | 3181 bytes |

Source: `[README.md:1-120](https://github.com/ai-aviate/better-mcp-notion/blob/main/README.md)`

---

<a id='architecture'></a>

## Architecture Evidence Map

### Related Pages

Related topics: [Repository Overview](#overview), [Entrypoints and Runtime Surface](#entrypoints), [Operations and Verification Boundaries](#operations)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ai-aviate/better-mcp-notion/blob/main/README.md)
- [package.json](https://github.com/ai-aviate/better-mcp-notion/blob/main/package.json)
- [src/errors.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/errors.ts)
- [src/index.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/index.ts)
- [src/server.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/server.ts)
- [src/converter/frontmatter.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/frontmatter.ts)
- [src/converter/to-markdown.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-markdown.ts)
- [src/converter/to-notion.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-notion.ts)
- [src/converter/types.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/types.ts)
- [src/notion/client.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/client.ts)
- [src/notion/helpers.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/helpers.ts)
- [src/tools/comment.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/tools/comment.ts)
</details>

# Architecture Evidence Map

This section maps source paths into likely architectural areas based on repository layout only. Claims that require execution are intentionally not made here.

- `.`: `README.md`, `package.json`
- `src`: `src/errors.ts`, `src/index.ts`, `src/server.ts`, `src/converter/frontmatter.ts`, `src/converter/to-markdown.ts`, `src/converter/to-notion.ts`

Source: `[package.json:1-120](https://github.com/ai-aviate/better-mcp-notion/blob/main/package.json)`

---

<a id='operations'></a>

## Operations and Verification Boundaries

### Related Pages

Related topics: [Repository Overview](#overview), [Entrypoints and Runtime Surface](#entrypoints), [Architecture Evidence Map](#architecture)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ai-aviate/better-mcp-notion/blob/main/README.md)
- [package.json](https://github.com/ai-aviate/better-mcp-notion/blob/main/package.json)
- [src/errors.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/errors.ts)
- [src/index.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/index.ts)
- [src/server.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/server.ts)
- [src/converter/frontmatter.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/frontmatter.ts)
- [src/converter/to-markdown.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-markdown.ts)
- [src/converter/to-notion.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/to-notion.ts)
- [src/converter/types.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/converter/types.ts)
- [src/notion/client.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/client.ts)
- [src/notion/helpers.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/notion/helpers.ts)
- [src/tools/comment.ts](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/tools/comment.ts)
</details>

# Operations and Verification Boundaries

Operational guidance is limited to files that are present in the repository. Before using this project in an agent workflow, verify install, quickstart, and runtime behavior in a sandbox.

- Documentation signal: `README.md`
- Runtime/package signal: `package.json`
- Source inspection signal: `src/errors.ts`
- Source inspection signal: `src/index.ts`
- Source inspection signal: `src/server.ts`
- Source inspection signal: `src/converter/frontmatter.ts`
- Source inspection signal: `src/converter/to-markdown.ts`
- Source inspection signal: `src/converter/to-notion.ts`
- Source inspection signal: `src/converter/types.ts`
- Source inspection signal: `src/notion/client.ts`

Source: `[src/errors.ts:1-120](https://github.com/ai-aviate/better-mcp-notion/blob/main/src/errors.ts)`

---

---

## Doramagic Pitfall Log

Project: ai-aviate/better-mcp-notion

Summary: Found 6 potential pitfall items; 0 are high/blocking. Highest priority: capability - 能力判断依赖假设.

## 1. capability · 能力判断依赖假设

- Severity: medium
- Evidence strength: source_linked
- Finding: README/documentation is current enough for a first validation pass.
- User impact: 假设不成立时，用户拿不到承诺的能力。
- Suggested check: 将假设转成下游验证清单。
- Guardrail action: 假设必须转成验证项；没有验证结果前不能写成事实。
- Evidence: capability.assumptions | mcp_registry:io.github.ai-aviate/better-notion:0.3.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ai-aviate%2Fbetter-notion/versions/0.3.2 | README/documentation is current enough for a first validation pass.

## 2. maintenance · 维护活跃度未知

- Severity: medium
- Evidence strength: source_linked
- Finding: 未记录 last_activity_observed。
- User impact: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- Suggested check: 补 GitHub 最近 commit、release、issue/PR 响应信号。
- Guardrail action: 维护活跃度未知时，推荐强度不能标为高信任。
- Evidence: evidence.maintainer_signals | mcp_registry:io.github.ai-aviate/better-notion:0.3.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ai-aviate%2Fbetter-notion/versions/0.3.2 | last_activity_observed missing

## 3. security_permissions · 下游验证发现风险项

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: 下游已经要求复核，不能在页面中弱化。
- Suggested check: 进入安全/权限治理复核队列。
- Guardrail action: 下游风险存在时必须保持 review/recommendation 降级。
- Evidence: downstream_validation.risk_items | mcp_registry:io.github.ai-aviate/better-notion:0.3.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ai-aviate%2Fbetter-notion/versions/0.3.2 | no_demo; severity=medium

## 4. security_permissions · 存在评分风险

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: 风险会影响是否适合普通用户安装。
- Suggested check: 把风险写入边界卡，并确认是否需要人工复核。
- Guardrail action: 评分风险必须进入边界卡，不能只作为内部分数。
- Evidence: risks.scoring_risks | mcp_registry:io.github.ai-aviate/better-notion:0.3.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ai-aviate%2Fbetter-notion/versions/0.3.2 | no_demo; severity=medium

## 5. maintenance · issue/PR 响应质量未知

- Severity: low
- Evidence strength: source_linked
- Finding: issue_or_pr_quality=unknown。
- User impact: 用户无法判断遇到问题后是否有人维护。
- Suggested check: 抽样最近 issue/PR，判断是否长期无人处理。
- Guardrail action: issue/PR 响应未知时，必须提示维护风险。
- Evidence: evidence.maintainer_signals | mcp_registry:io.github.ai-aviate/better-notion:0.3.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ai-aviate%2Fbetter-notion/versions/0.3.2 | issue_or_pr_quality=unknown

## 6. maintenance · 发布节奏不明确

- Severity: low
- Evidence strength: source_linked
- Finding: release_recency=unknown。
- User impact: 安装命令和文档可能落后于代码，用户踩坑概率升高。
- Suggested check: 确认最近 release/tag 和 README 安装命令是否一致。
- Guardrail action: 发布节奏未知或过期时，安装说明必须标注可能漂移。
- Evidence: evidence.maintainer_signals | mcp_registry:io.github.ai-aviate/better-notion:0.3.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ai-aviate%2Fbetter-notion/versions/0.3.2 | release_recency=unknown

<!-- canonical_name: ai-aviate/better-mcp-notion; human_manual_source: deepwiki_human_wiki -->
