Skip to main content
Glama
lu1ee

notion-local-mcp

by lu1ee

Notion Local MCP

Notion 데스크탑 앱의 로컬 SQLite 캐시를 읽어 Claude에서 빠르게 Notion 문서를 검색하고 조회하는 MCP 서버입니다.

빠른 시작 (Quick Start)

1. 필수 조건

2. 자동 설정

터미널에서 아래 명령어를 실행하면 자동으로 설정됩니다:

npx @lulee/notion-local-mcp setup
🔧 Notion Local MCP Setup
========================================

🔍 Operating system: macOS
✅ Notion found: /Users/user/Library/Application Support/Notion/notion.db

Which apps do you want to configure?

  1. Claude Desktop Chat
  2. Claude Code (CLI)
  3. Both (recommended)

Enter choice [1-3, default: 3]: 3

========================================

✅ Claude Desktop: Successfully configured notion-local for Claude Desktop
✅ Claude Code: Successfully configured notion-local for Claude Code

🎉 Setup complete!

Please restart your Claude app to apply the changes.

3. 앱 재시작

Claude Desktop 또는 Claude Code를 재시작하면 사용할 수 있습니다.

끝!


Related MCP server: Notion MCP Server

Notion API MCP vs notion-local

Notion API MCP

notion-local

동작 방식

Notion 서버 API 호출

로컬 SQLite 직접 읽기

Notion AI

사용 (시맨틱 검색)

사용 안 함

속도

느림 (네트워크)

빠름 (로컬)

오프라인

불가능

가능

Rate Limit

있음

없음

데이터 최신성

실시간

Notion 앱 동기화 시점

쓰기 기능

있음

없음 (읽기 전용)

권장 사용법:

  • 검색/조회notion-local (빠름, Notion AI 미사용, 오프라인 가능)

  • 생성/수정Notion API MCP (쓰기는 서버 API 필요)


지원 플랫폼

OS

Notion DB 경로

상태

macOS

~/Library/Application Support/Notion/notion.db

✅ 검증됨

Windows

%APPDATA%\Notion\notion.db

✅ 지원 (미검증)

Linux

~/.config/Notion/notion.db

⚠️ 비공식

참고: Notion은 공식 Linux 데스크탑 앱을 제공하지 않습니다. Linux에서는 커뮤니티 비공식 빌드(예: notion-app-electron)에서만 동작할 수 있습니다.


MCP 도구

키워드로 페이지 검색

{
  query: string,          // 검색어 (필수)
  type?: "page" | "all",  // 검색 범위 (기본: page)
  limit?: number          // 최대 결과 수 (기본: 20)
}

notion_local_recent

최근 수정된 페이지 목록

{
  limit?: number,   // 최대 결과 수 (기본: 20)
  days?: number     // 며칠 이내 (기본: 30)
}

notion_local_get_page

페이지 전체 내용 조회

{
  pageId: string,   // 페이지 UUID (필수)
  depth?: number    // 중첩 블록 깊이 (기본: 3)
}

notion_local_parent

페이지의 상위 계층 조회

{
  pageId: string    // 페이지 UUID (필수)
}

notion_local_children

페이지의 하위 페이지 목록

{
  pageId: string,   // 페이지 UUID (필수)
  depth?: number    // 탐색 깊이 (기본: 2)
}

수동 설정 (고급)

자동 설정이 안 될 경우 수동으로 설정할 수 있습니다.

Claude Desktop Chat

~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "notion-local": {
      "command": "npx",
      "args": ["-y", "@lulee/notion-local-mcp"],
      "env": {
        "NOTION_DB_PATH": "/Users/YOUR_USERNAME/Library/Application Support/Notion/notion.db"
      }
    }
  }
}

Claude Code

~/.claude.json:

{
  "mcpServers": {
    "notion-local": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@lulee/notion-local-mcp"],
      "env": {
        "NOTION_DB_PATH": "/Users/YOUR_USERNAME/Library/Application Support/Notion/notion.db"
      }
    }
  }
}

개발

로컬에서 개발하려면:

git clone https://github.com/lulee/notion-local-mcp.git
cd notion-local-mcp
npm install
npm run build
npm run setup  # 로컬 빌드를 Claude에 연결

주의사항

  • 읽기 전용: 로컬 캐시만 읽으며, Notion 데이터를 수정하지 않습니다.

  • Notion 앱 필요: Notion 데스크탑 앱이 설치되어 있어야 캐시가 존재합니다.

  • 동기화 지연: 최근 변경사항은 Notion 앱이 동기화될 때까지 반영되지 않을 수 있습니다.


라이선스

MIT

Available Tools

5 tools
notion_local_childrenA

PREFERRED for Notion hierarchy. Get all child pages under a page. Fast, offline, no API limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoHow many levels deep to traverse (default: 2)
pageIdYesThe UUID of the parent page

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and discloses useful behaviors: 'Fast, offline, no API limits.' 'Get' implies read-only. It doesn't mention potential staleness or output format, but goes beyond a minimal description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each earning its place: 'PREFERRED for Notion hierarchy' (usage), 'Get all child pages under a page' (purpose), 'Fast, offline, no API limits' (behavior). Zero waste and front-loaded with the most important signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool, the description covers purpose, usage, and behavioral traits. With no output schema, missing return-format details is a minor gap, but the tool is well-contextualized among its siblings and adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with clear descriptions (pageId, depth with default). The description's phrase 'all child pages' implies depth-based recursion but adds no syntax details beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get all child pages under a page' with a specific verb and resource. The 'PREFERRED for Notion hierarchy' tag hints at its role among siblings but doesn't explicitly name alternatives, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'PREFERRED for Notion hierarchy' and gives reasons ('Fast, offline, no API limits') for choosing it. This provides clear when-to-use context, but lacks direct 'when not to use' guidance or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notion_local_get_pageA

Get Notion page. Returns summary by default (title + first blocks + link). Show summary and link to user. Use summary=false only when you need full content to answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoHow many levels of nested blocks to include (default: 2)
pageIdYesThe UUID of the page to retrieve
summaryNoReturn summary only (default: true). Set to false for full content.
maxBlocksNoMaximum blocks to return (default: 10 for summary, 100 for full)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden and does disclose key behavioral traits: returns summary by default (title + first blocks + link), and advises displaying the link. It does not cover edge cases like errors or rate limits, but it gives meaningful insight into the tool's default output behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no redundancy. The description is front-loaded with the core purpose and then provides essential usage guidance, earning every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and no annotations, the description adequately explains the default return structure and the summary/full content distinction. It does not detail error handling or full content format, but it is sufficient for an agent to use the tool correctly in most scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value beyond schema by explaining the default behavior of the summary parameter and when to set it to false, which is not fully captured in the schema's brief description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get Notion page' with a specific verb and resource, distinguishing it from sibling tools like search, recent, parent, and children. The purpose is immediately identifiable and not tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use summary mode vs. full content ('Use summary=false only when you need full content to answer'). However, it does not explicitly address alternatives among sibling tools, though the tool name and description make the primary use case obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notion_local_parentA

PREFERRED for Notion hierarchy. Get all ancestor pages up to the root. Fast, offline, no API limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesThe UUID of the page

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and adds useful behavioral context: it is 'Fast, offline, no API limits' and returns a complete set of ancestors. It does not disclose edge cases like invalid IDs or root pages, but the operational traits are clearly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. Every phrase ('PREFERRED', 'up to the root', 'fast, offline, no API limits') adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema and no annotations, the description covers purpose, usage, and behavior adequately. It clearly indicates what pages are returned, making it sufficient for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes pageId (100% coverage), so the description adds no additional parameter-level detail. Per rubric, a baseline of 3 is appropriate when schema covers all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all ancestor pages up to the root, using a specific verb ('Get') and resource ('ancestor pages'). It distinguishes itself from siblings like notion_local_children by orientation toward the hierarchy root.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly marks this as 'PREFERRED for Notion hierarchy,' providing clear usage context and highlighting fast, offline operation. However, it does not explicitly name alternatives or exclusions, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notion_local_recentA

PREFERRED for listing recent Notion pages. Get recently modified pages from local cache. Fast, offline, no API limits. Use this instead of Notion API for browsing recent documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoOnly include pages modified within this many days (default: 30)
limitNoMaximum number of pages to return (default: 10)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the burden. It discloses useful behavioral traits: uses local cache, is fast, offline, and avoids API limits. This goes beyond the basic operation, though it could mention return format or cache staleness, but overall it adds meaningful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences that are mostly efficient, but there is redundancy between the first and last sentences both referring to browsing recent documents. Still, it is concise and front-loaded with key info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (two optional numeric params, no output schema, no annotations), the description covers the essentials: what it does, when to use it, and its operational characteristics. It is complete enough for an agent to select and invoke it correctly, though it lacks explicit return format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description doesn't add extra parameter semantics beyond connecting 'recently modified' to the 'days' parameter, but the schema already explains both parameters clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly identifies the tool as the preferred way to list recent Notion pages, with focus on recently modified pages from local cache. The description distinguishes it from siblings by emphasizing 'recent' and 'local cache', and directly positions it against the Notion API.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool ('for browsing recent documents') and gives a clear alternative ('Use this instead of Notion API'). The 'PREFERRED' label reinforces the recommendation, providing solid usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.4
    • First observednotion_local_children
    • First observednotion_local_get_page
    • First observednotion_local_parent
    • First observednotion_local_recent
    • First observednotion_local_search

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinctly different purpose: search by keyword, list recent pages, get ancestors, get page content, and get child pages. The descriptions clearly differentiate them with no overlapping functionality.

Naming Consistency4/5

All tools share the 'notion_local_' prefix, making the namespace consistent. However, the suffixes mix verbs (search, get_page) and nouns (parent, children, recent), which is a minor deviation from a strict verb_noun pattern.

Tool Count5/5

With five tools, the server is well-scoped for a local Notion cache. Each tool covers a core query need without redundancy, making the count appropriate for its purpose.

Completeness3/5

The read operations cover search, recent, hierarchy, and page content, but there is no tool to sync or refresh the local cache, which is a notable gap for a cache-based server. Users cannot update the data without external mechanisms.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying local meeting notes, calendar events, email metadata, and daily digests from Imprint's database via natural language through Claude Desktop and other MCP clients.
    15
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates Notion with Claude Code, enabling search, read, and write operations on Notion pages and databases via the Model Context Protocol.
    1,069
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables full-text search and browsing of Claude.ai conversation history by ingesting exported conversations into a local SQLite database with FTS5 indexes.
    1
    -