这是一个为Notion API设计的MCP服务器,使大型语言模型(LLM)能够与Notion工作空间进行交互。该服务器还采用Markdown转换技术,在与LLM通信时减少上下文大小,优化令牌使用并提高交互效率。
以下文章详细解释了上述步骤:
创建Notion集成应用:
获取密钥:
将集成添加到工作空间:
配置Claude桌面版:
在你的claude_desktop_config.json
中添加以下内容:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@suekou/mcp-notion-server"],
"env": {
"NOTION_API_TOKEN": "你的集成令牌"
}
}
}
}

或者
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["你的构建文件路径"],
"env": {
"NOTION_API_TOKEN": "你的集成令牌"
}
}
}
}

NOTION_API_TOKEN
(必需):你的Notion API集成令牌NOTION_MARKDOWN_CONVERSION
:设置为"true"以启用实验性的Markdown转换。这可以显著减少查看内容时的令牌消耗,但在尝试编辑页面内容时可能会导致问题--enabledTools
:以逗号分隔的工具列表,用于启用特定工具(例如"notion_retrieve_page,notion_query_database")。指定后,只有列出的工具可用。如果不指定,则启用所有工具只读工具示例(便于复制粘贴):
node build/index.js --enabledTools=notion_retrieve_block,notion_retrieve_block_children,notion_retrieve_page,notion_query_database,notion_retrieve_database,notion_search,notion_list_all_users,notion_retrieve_user,notion_retrieve_bot_user,notion_retrieve_comments
默认情况下,所有响应都以JSON格式返回。你可以启用实验性的Markdown转换以减少令牌消耗:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@suekou/mcp-notion-server"],
"env": {
"NOTION_API_TOKEN": "你的集成令牌",
"NOTION_MARKDOWN_CONVERSION": "true"
}
}
}
}

或者
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["你的构建文件路径"],
"env": {
"NOTION_API_TOKEN": "你的集成令牌",
"NOTION_MARKDOWN_CONVERSION": "true"
}
}
}
}

当NOTION_MARKDOWN_CONVERSION
设置为"true"时,响应将被转换为Markdown格式(当format
参数设置为"markdown"时),使其更易于阅读并显著减少令牌消耗。然而,由于此功能是实验性的,在尝试编辑页面内容时可能会导致问题,因为在转换过程中丢失了原始结构。
你可以在每个请求的基础上通过将format
参数设置为"json"或"markdown"来控制格式:
如果你遇到权限错误:
claude_desktop_config.json
中的令牌和配置设置正确该项目采用模块化组织以提高可维护性和可读性:
./ ├── src/ │ ├── index.ts # 入口点和命令行处理 │ ├── client/ │ │ └── index.ts # NotionClientWrapper类用于API交互 │ ├── server/ │ │ └── index.ts # MCP服务器设置和请求处理 │ ├── types/ │ │ ├── index.ts # 类型导出 │ │ ├── args.ts # 工具参数接口 │ │ ├── common.ts # 常见模式定义 │ │ ├── responses.ts # API响应类型定义 │ │ └── schemas.ts # MCP工具模式定义 │ ├── utils/ │ │ └── index.ts # 实用函数 │ └── markdown/ │ └── index.ts # Markdown转换实用程序
所有工具都支持以下可选参数:
format
(字符串,"json"或"markdown",默认值:"markdown"):控制响应格式。使用"markdown"获得人类可读的输出,使用"json"以编程方式访问原始数据结构。注意:只有当NOTION_MARKDOWN_CONVERSION
环境变量设置为"true"时,Markdown转换才有效notion_append_block_children
block_id
(字符串):父块的IDchildren
(数组):要追加的块对象数组notion_retrieve_block
block_id
(字符串):要检索的块的IDnotion_retrieve_block_children
block_id
(字符串):父块的IDstart_cursor
(字符串):下一页结果的游标page_size
(数字,默认值:100,最大值:100):要检索的块数notion_delete_block
block_id
(字符串):要删除的块的IDnotion_retrieve_page
page_id
(字符串):要检索的页面的IDnotion_update_page_properties
page_id
(字符串):要更新的页面的IDproperties
(对象):要更新的属性notion_create_database
parent
(对象):数据库的父对象properties
(对象):数据库的属性模式title
(数组):作为富文本数组的数据库标题notion_query_database
database_id
(字符串):要查询的数据库的IDfilter
(对象):过滤条件sorts
(数组):排序条件start_cursor
(字符串):下一页结果的游标page_size
(数字,默认值:100,最大值:100):要检索的结果数notion_retrieve_database
database_id
(字符串):要检索的数据库的IDnotion_update_database
database_id
(字符串):要更新的数据库的IDtitle
(数组):数据库的新标题description
(数组):数据库的新描述properties
(对象):更新的属性模式notion_create_database_item
database_id
(字符串):要添加项目的数据库的IDproperties
(对象):新项目的属性。这些应该与数据库模式匹配notion_search
query
(字符串):在页面或数据库标题中搜索的文本filter
(对象):限制结果仅为页面或仅为数据库的标准sort
(对象):对结果进行排序的标准start_cursor
(字符串):分页开始游标page_size
(数字,默认值:100,最大值:100):要检索的结果数notion_list_all_users
notion_retrieve_user
notion_retrieve_bot_user
notion_create_comment
page_id
的parent
对象或discussion_id
,但不能同时指定两者rich_text
(数组):表示评论内容的富文本对象数组parent
(对象):如果使用,必须包含page_id
discussion_id
(字符串):现有讨论线程的IDnotion_retrieve_comments
block_id
(字符串):你想要检索评论的块或页面的IDstart_cursor
(字符串):分页开始游标page_size
(数字,最大值:100):要检索的评论数此MCP服务器根据MIT许可证获得许可。这意味着你可以自由使用、修改和分发该软件,但须遵守MIT许可证的条款和条件。有关详细信息,请参阅项目存储库中的LICENSE文件。