关于 Notion MCP Server
Notion MCP Server 将 Notion API 封装为 MCP 服务,供 Claude 等客户端读取和管理工作区内容。它支持页面、区块、数据库及评论操作,并可选择 Markdown 或 JSON 响应。
主要功能
- 01搜索页面和数据库
- 02读取及更新页面与区块
- 03查询、创建和更新数据库
- 04管理评论及工作区用户
- 05按需返回 Markdown 或 JSON
- 06可选择启用的工具
适用场景
- 01查找工作区中的页面或数据库
- 02读取页面内容并修改属性
- 03查询数据库并新增条目
- 04检索或添加页面评论
MCP 相关
作为 MCP 服务向客户端提供 Notion 工作区的搜索、读取、写入及评论工具。使用 Notion 集成令牌进行 API 认证,并可配置启用的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Notion MCP 服务
用于 Notion API 的 MCP 服务,可让 Claude 与 Notion 工作区交互。
设置
以下文章详细介绍了上述步骤:
- 英文版:https://dev.to/suekou/operating-notion-via-claude-desktop-using-mcp-c0h
- 日文版:https://qiita.com/suekou/items/44c864583f5e3e6325d9
-
创建 Notion 集成:
- 访问 Notion 集成页面。
- 点击“New Integration”。
- 为集成命名并选择适当的权限(例如“Read content”“Update content”)。
-
获取密钥:
- 从集成中复制“Internal Integration Token”。
- 此令牌将用于身份验证。
-
将集成添加到工作区:
- 在 Notion 中打开你希望集成访问的页面或数据库。
- 点击右上角的“···”按钮。
- 点击“Connections”按钮,然后选择你在上方第 1 步中创建的集成。
-
配置 Claude Desktop: 将以下内容添加到
claude_desktop_config.json:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@suekou/mcp-notion-server"],
"env": {
"NOTION_API_TOKEN": "your-integration-token"
}
}
}
}
或
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["your-built-file-path"],
"env": {
"NOTION_API_TOKEN": "your-integration-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
高级配置
Markdown 转换
默认情况下,所有响应均以 JSON 格式返回。你可以启用实验性的 Markdown 转换,以减少令牌消耗:
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@suekou/mcp-notion-server"],
"env": {
"NOTION_API_TOKEN": "your-integration-token",
"NOTION_MARKDOWN_CONVERSION": "true"
}
}
}
}
或
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["your-built-file-path"],
"env": {
"NOTION_API_TOKEN": "your-integration-token",
"NOTION_MARKDOWN_CONVERSION": "true"
}
}
}
}
将 NOTION_MARKDOWN_CONVERSION 设置为 "true" 后,响应会转换为 Markdown 格式(当 format 参数设置为 "markdown" 时),使其更易于阅读,并显著减少令牌消耗。不过,由于此功能仍处于实验阶段,转换会丢失原始结构,因此编辑页面内容时可能会出现问题。
你可以在工具调用中将 format 参数设置为 "json" 或 "markdown",以按请求控制格式:
- 仅查看内容时使用
"markdown",以提高可读性 - 需要修改返回的内容时使用
"json"
故障排除
如果遇到权限错误:
- 确保集成具有所需的权限。
- 确认已邀请集成访问相关页面或数据库。
- 确认
claude_desktop_config.json中的令牌和配置设置正确。
工具
所有工具均支持以下可选参数:
format(字符串,可选值为 "json" 或 "markdown",默认值:"markdown"):控制响应格式。使用 "markdown" 获取便于阅读的输出,使用 "json" 以编程方式访问原始数据结构。注意:只有将NOTION_MARKDOWN_CONVERSION环境变量设置为 "true" 时,Markdown 转换才会生效。
-
notion_append_block_children- 向父区块追加子区块。
- 必需输入:
block_id(字符串):父区块的 ID。children(数组):要追加的区块对象数组。
- 返回:已追加区块的信息。
-
notion_retrieve_block- 获取特定区块的信息。
- 必需输入:
block_id(字符串):要获取的区块 ID。
- 返回:区块的详细信息。
-
notion_retrieve_block_children- 获取特定区块的子区块。
- 必需输入:
block_id(string):父区块的 ID。
- 可选输入:
start_cursor(string):下一页结果的游标。page_size(number,默认值:100,最大值:100):要获取的区块数量。
- 返回:子区块列表。
-
notion_delete_block- 删除特定区块。
- 必需输入:
block_id(string):要删除的区块 ID。
- 返回:删除确认信息。
-
notion_retrieve_page- 获取特定页面的信息。
- 必需输入:
page_id(string):要获取的页面 ID。
- 返回:页面的详细信息。
-
notion_update_page_properties- 更新页面属性。
- 必需输入:
page_id(string):要更新的页面 ID。properties(object):要更新的属性。
- 返回:已更新页面的信息。
-
notion_create_database- 创建新数据库。
- 必需输入:
parent(object):数据库的父对象。properties(object):数据库的属性架构。
- 可选输入:
title(array):以富文本数组形式表示的数据库标题。
- 返回:已创建数据库的信息。
-
notion_query_database- 查询数据库。
- 必需输入:
database_id(string):要查询的数据库 ID。
- 可选输入:
filter(object):筛选条件。sorts(array):排序条件。start_cursor(string):下一页结果的游标。page_size(number,默认值:100,最大值:100):要获取的结果数量。
- 返回:查询结果列表。
-
notion_retrieve_database- 获取特定数据库的信息。
- 必需输入:
database_id(string):要获取的数据库 ID。
- 返回:数据库的详细信息。
-
notion_update_database- 更新数据库信息。
- 必需输入:
database_id(string):要更新的数据库 ID。
- 可选输入:
title(array):数据库的新标题。description(array):数据库的新描述。properties(object):更新后的属性架构。
- 返回:已更新数据库的信息。
-
notion_create_database_item- 在 Notion 数据库中创建新条目。
- 必需输入:
database_id(string):要添加条目的数据库 ID。properties(object):新条目的属性。这些属性应与数据库架构相匹配。
- 返回:新建条目的信息。
-
notion_search- 按标题搜索页面或数据库。
- 可选输入:
query(string):要在页面或数据库标题中搜索的文本。filter(object):将结果限制为仅页面或仅数据库的条件。sort(object):对结果进行排序的条件start_cursor(string):分页起始游标。page_size(number,默认值:100,最大值:100):要获取的结果数量。
- 返回:匹配的页面或数据库列表。
-
notion_list_all_users- 列出 Notion 工作区中的所有用户。
- 注意:此功能需要升级到 Notion Enterprise 计划并使用 Organization API 密钥,以避免权限错误。
- 可选输入:
- start_cursor(string):列出用户时使用的分页起始游标。
- page_size(number,最大值:100):要获取的用户数量。
- 返回:工作区中所有用户的分页列表。
-
notion_retrieve_user- 在 Notion 中通过 user_id 检索指定用户。
- 注意:此功能需要升级到 Notion Enterprise 计划,并使用 Organization API 密钥,以避免权限错误。
- 必填输入:
- user_id (string):要检索的用户 ID。
- 返回:指定用户的详细信息。
-
notion_retrieve_bot_user- 在 Notion 中检索与当前令牌关联的机器人用户。
- 返回:机器人用户的信息,包括授权该集成的人员详情。
-
notion_create_comment- 在 Notion 中创建评论。
- 需要集成具备“插入评论”权限。
- 指定包含
page_id的parent对象或discussion_id,但不能同时指定两者。 - 必填输入:
rich_text(数组):表示评论内容的富文本对象数组。
- 可选输入:
parent(对象):使用时必须包含page_id。discussion_id(字符串):现有讨论串 ID。
- 返回:已创建评论的信息。
-
notion_retrieve_comments- 从 Notion 页面或块中检索未解决评论列表。
- 需要集成具备“读取评论”权限。
- 必填输入:
block_id(字符串):要检索其评论的块或页面 ID。
- 可选输入:
start_cursor(字符串):分页起始游标。page_size(数字,最大值:100):要检索的评论数量。
- 返回:与指定块或页面关联的分页评论列表。
许可证
此 MCP 服务根据 MIT 许可证授权。这意味着你可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情请参阅项目仓库中的 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。