gemmy-notion-mcp
Provides tools for managing Notion pages, blocks, databases, comments, and users, including batch operations and partial failure handling.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gemmy-notion-mcpappend a bullet list with meeting agenda to Notion page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gemmy-notion-mcp
Notion API MCP 서버. Claude Code에서 Notion 페이지/블록/DB 조작.
Based on awkoy/notion-mcp-server (MIT)
설치
.mcp.json:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "github:gemmy-jaeheon/gemmy-notion-mcp"],
"env": {
"NOTION_TOKEN": "ntn_YOUR_TOKEN",
"NOTION_PAGE_ID": "YOUR_PAGE_ID"
}
}
}
}Related MCP server: Notion MCP Server
공식 MCP vs 이 Fork
기능 | 공식 (@notionhq) | 이 Fork |
블록 CRUD | ✅ | ✅ |
데이터베이스 | ✅ | ✅ |
코멘트/유저 | ✅ | ✅ |
배치 작업 | ❌ | ✅ |
부분 실패 처리 | ❌ | ✅ |
Windows 호환 | ⚠️ | ✅ |
기능
블록 (notion_blocks)
Action | 설명 |
| 블록 추가 |
| 블록 조회 |
| 하위 블록 조회 |
| 블록 수정 |
| 블록 삭제 |
| 여러 블록 한번에 추가 |
| 여러 블록 한번에 수정 |
| 여러 블록 한번에 삭제 |
| 추가/수정/삭제 혼합 |
지원 블록: paragraph, heading, callout, quote, toggle, bulleted_list, numbered_list, to_do, code, divider, image
페이지 (notion_pages)
create_page, update_page_properties, archive_page, restore_page, search_pages
데이터베이스 (notion_database)
create_database, query_database, update_database
코멘트 (notion_comments)
get_comments, add_page_comment, add_discussion_comment
유저 (notion_users)
list_users, get_user, get_bot_user
사용 예시
"이 페이지에 체크리스트 3개 추가해줘"
"테스트 DB에서 Status가 Todo인 항목만 조회"
"회의록 페이지 만들고 콜아웃으로 요약 넣어줘"Available Tools
5 toolsnotion_blocksC
Perform various block operations (retrieve, update, delete, append children, batch operations)
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | A union of all possible block operations. Each operation has a specific action and corresponding parameters. Use this schema to validate the input for block operations such as appending, retrieving, updating, deleting, and performing batch operations. Available actions include: 'append_block_children', 'retrieve_block', 'retrieve_block_children', 'update_block', 'delete_block', 'batch_append_block_children', 'batch_update_blocks', 'batch_delete_blocks', and 'batch_mixed_operations'. Each operation requires specific parameters as defined in the corresponding schemas. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It names 'delete' and 'batch operations' but does not say that delete is an archive (soft delete), that batch operations may be partially failing, whether operations are atomic, what permissions are needed, or that retrieve_block_children paginates. For a 9-action mutating multiplexer this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the scope stated up front and the operation list compactly parenthesized. No filler, though it is arguably too terse for the surface area it fronts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a large action-discriminated union with nine branches, no annotations, and no output schema. The description omits action-selection guidance, batch semantics, return behavior, and the soft-delete behavior of delete_block, leaving critical context undocumented despite the rich parameter schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the per-action const descriptions ('Use this action to append children to a block') already explain each branch, so the schema does the heavy lifting. The description's parenthetical action list maps onto the action enum but adds no syntax, format, or constraint detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (blocks) and enumerates the operations the tool performs (retrieve, update, delete, append children, batch). This distinguishes it from the notion_pages/notion_database siblings by resource scope, though the framing 'various block operations' is slightly loose rather than a single specific verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus notion_pages, nor on when to choose single-operation actions over the batch_* variants, nor on the difference between retrieve_block and retrieve_block_children. The per-action schema descriptions carry all the routing logic; the tool description itself provides none.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notion_commentsC
Perform various comment operations (get, add to page, add to discussion)
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | A union of all possible comment operations. Each operation has a specific action and corresponding parameters. Use this schema to validate the input for comment operations such as getting, adding to page, and adding to discussion. Available actions include: 'get_comments', 'add_page_comment', and 'add_discussion_comment'. Each operation requires specific parameters as defined in the corresponding schemas. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and largely drops it. It does not state that two of the three actions are mutating, that comments cannot be edited or deleted through this tool, what permission level is required, or whether posting notifies users — all material facts for an agent deciding whether to call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no waste, but the brevity reflects under-specification rather than disciplined editing. For a three-action union tool this is too thin to be considered appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a discriminated union of three actions with a deep nested rich_text schema, no annotations and no output schema. The description supplies none of the connective context an agent needs — action selection, return shape, pagination behavior for get_comments, or how to obtain a discussion_id — so it is well short of adequate for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema is unusually detailed, including per-action descriptions for block_id, page_id, discussion_id and the rich_text union. The description adds nothing beyond that, so the baseline of 3 applies — the schema, not the description, is doing all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (comments) and enumerates the three concrete operations: get, add to page, add to discussion. That distinguishes it from the sibling tools (notion_pages, notion_blocks, notion_database, notion_users), though 'various' adds vagueness and the action naming in the description does not exactly match the schema's action constants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling tools, nor on how to choose between the three actions. It also omits prerequisites the agent would need, such as where a discussion_id comes from and whether reading comments requires different access than posting them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notion_databaseC
Perform various database operations (create, query, update)
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | A union of all possible database operations. Each operation has a specific action and corresponding parameters. Use this schema to validate the input for database operations such as creating, querying, and updating databases. Available actions include: 'create_database', 'query_database', and 'update_database'. Each operation requires specific parameters as defined in the corresponding schemas. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does not meet it. It never discloses that update_database mutates existing schema (potentially destructive to property definitions), that create_database requires a parent, or that query_database is a read-only paginated call. Only the bare word 'update' hints at mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded and free of padding, so it is concise. The problem is under-specification rather than verbosity — the space saved is not spent on anything useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a three-action union tool with a large nested schema and no annotations or output schema. The description should route the agent between actions and between this tool and notion_pages/notion_blocks, but it gives only a parenthetical verb list, leaving an agent unable to confidently choose an action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the payload union itself documents each action and its nested params, so the schema does the heavy lifting. The description merely repeats the action list already present in the payload description, adding no semantic value about action selection or parameter interplay.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (database) and three verbs (create, query, update), which does separate it from siblings like notion_pages and notion_blocks. But 'various database operations' is a vague umbrella that doesn't say what a database operation actually accomplishes or which action maps to which intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no statement of when to call this versus notion_pages, no indication of when to pick create vs query vs update, and no prerequisites such as needing a parent page or existing database_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notion_pagesC
Perform various page operations (create, archive, restore, search, update)
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | A union of all possible page operations. Each operation has a specific action and corresponding parameters. Use this schema to validate the input for page operations such as creating, archiving, restoring, searching, and updating pages. Available actions include: 'create_page', 'archive_page', 'restore_page', 'search_pages', and 'update_page_properties'. Each operation requires specific parameters as defined in the corresponding schemas. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses almost nothing: it does not say that archive/restore are mutations, that archive is reversible via restore, what permissions or parent-page defaults apply, or that search results are paginated (page_size 1-100, start_cursor). Only the bare action names hint at behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification for a five-way multiplexed tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations mean the description should explain return shape, pagination and destructive semantics, and it does none of these. For a complex action-union tool the rich schema compensates substantially, but an agent reading only the description would not know that archive is destructive-but-reversible or how to page through search results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is effectively 100% — the single 'payload' parameter is a fully documented discriminated union with per-action descriptions. The description adds no parameter meaning of its own, so the baseline 3 for high schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (Notion pages) and enumerates the five operations (create, archive, restore, search, update), which is enough to distinguish it from siblings notion_blocks, notion_database, notion_comments and notion_users. It is clear at the level of 'page operations' but does not describe what any individual operation does, leaving that to the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the sibling database/block tools, nor on how to pick among the five actions. The parenthetical action list merely names alternatives rather than stating selection conditions; the actual 'use this action to…' guidance lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notion_usersC
Perform various user operations (list, get, get bot)
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | A union of all possible user operations. Each operation has a specific action and corresponding parameters. Use this schema to validate the input for user operations such as listing, getting a single user, and getting the bot user. Available actions include: 'list_users', 'get_user', and 'get_bot_user'. Each operation requires specific parameters as defined in the corresponding schemas. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but discloses almost nothing beyond the operation names. It does not mention permissions, pagination behavior, rate limits, whether listing includes bot users, or any other operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted text, but it is under-specified for a three-action union schema. Being concise is good here, but the terseness leaves important context to the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema is rich and fully describes the available actions and parameters, which covers most invocation needs. However, with no annotations and no output schema, the description should provide more behavioral context, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the action, page_size, start_cursor, and user_id parameters in detail. The description adds no parameter meaning beyond listing operation categories, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (users) and lists the operations (list, get, get bot), making the tool’s purpose clear. It does not explicitly differentiate from sibling tools, but the resource name is sufficient to distinguish it from pages, blocks, database, and comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor about prerequisites or exclusions. The action names imply usage, but the description itself provides no routing context.
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.
5 tool updates
v1.0.0- First observed
notion_blocks - First observed
notion_comments - First observed
notion_database - First observed
notion_pages - First observed
notion_users
TDQS
Scored across 5 tools
Each tool maps to a distinct Notion resource (pages, blocks, databases, comments, users), so an agent can generally choose the right tool by resource. However, each tool bundles multiple operations, creating some internal ambiguity, and page-level versus block-level updates may be confused in edge cases.
All tools use the consistent notion_<resource> prefix, and four of five resources are pluralized uniformly. The singular notion_database is a minor deviation from the otherwise plural resource naming pattern.
Five resource-oriented tools are reasonable for a Notion integration and keep the surface compact. The tradeoff is that several tools are broad multi-operation wrappers rather than focused single-action tools, which makes the count feel slightly under-granular.
The surface covers the major Notion resources and supports key lifecycle operations such as page create/archive/restore/search/update, block append/update/delete, and database create/query/update. Some gaps exist, such as explicit page retrieval or delete for databases/comments, but agents can likely work around them.
Maintenance
Related MCP Connectors
Hosted Notion MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
Zotero MCP server for Claude and ChatGPT: search, citations, safe writes, PDF passages and pages.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA simple Model Context Protocol (MCP) server that integrates with Notion's API to manage my personal todo list through Claude.209MIT
- AlicenseAqualityBmaintenanceMCP Server for the Notion API, enabling Claude to interact with Notion workspaces.31844 npm925MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Notion API, enabling management of pages, blocks, databases, data sources, comments, and users through natural language.4 npm3MIT
- FlicenseAqualityCmaintenanceEnables interaction with Notion workspaces through a comprehensive set of tools for managing pages, blocks, databases, users, comments, and search. Provides both a clean Python API and an MCP server for use with Claude Desktop.21-