用于Notion API的MCP服务器,使LLM能够与Notion工作区进行交互。此外,它还采用Markdown转换来减少与LLM通信时的上下文大小,优化令牌使用并提高交互效率。
以下是上述步骤的详细解释,请参阅以下文章:
创建Notion集成
获取密钥
将集成添加到您的工作区
配置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
默认情况下,所有响应都以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”来控制每个请求的格式:
如果您遇到权限错误:
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 # 工具模式定义
│ ├── utils/
│ │ └── index.ts # 实用函数
│ └── markdown/
│ └── index.ts # Markdown转换实用程序
所有工具支持以下可选参数:
format(字符串,“json”或“markdown”,默认:“markdown”):控制响应格式。使用“markdown”以获得人类可读的输出,“json”以编程方式访问原始数据结构。注意:Markdown转换仅在NOTION_MARKDOWN_CONVERSION环境变量设置为“true”时有效。notion_append_block_children
block_id(字符串):父块的ID。children(数组):要追加的块对象数组。notion_retrieve_block
block_id(字符串):要检索的块的ID。notion_retrieve_block_children
block_id(字符串):父块的ID。start_cursor(字符串):结果下一页的游标。page_size(数字,默认:100,最大:100):要检索的块数量。notion_delete_block
block_id(字符串):要删除的块的ID。notion_retrieve_page
page_id(字符串):要检索的页面的ID。notion_update_page_properties
page_id(字符串):要更新的页面的ID。properties(对象):要更新的属性。notion_create_database
parent(对象):数据库的父对象。properties(对象):数据库的属性模式。title(数组):作为富文本数组的数据库标题。notion_query_database
database_id(字符串):要查询的数据库的ID。filter(对象):筛选条件。sorts(数组):排序条件。start_cursor(字符串):结果下一页的游标。page_size(数字,默认:100,最大:100):要检索的结果数量。notion_retrieve_database
database_id(字符串):要检索的数据库的ID。notion_update_database
database_id(字符串):要更新的数据库的ID。title(数组):数据库的新标题。description(数组):数据库的新描述。properties(对象):更新的属性模式。notion_create_database_item
database_id(字符串):要添加项的数据库的ID。properties(对象):新项的属性。这些应符合数据库模式。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或discussion_id的parent对象,但不能同时指定两者。rich_text(数组):表示评论内容的富文本对象数组。parent(对象):如果使用必须包含page_id。discussion_id(字符串):现有的讨论线程ID。notion_retrieve_comments
block_id(字符串):要检索其评论的块或页面的ID。start_cursor(字符串):分页开始游标。page_size(数字,最大:100):要检索的评论数量。此MCP服务器根据MIT许可证发布。这意味着您可以自由地使用、修改和分发软件,但须遵守MIT许可证的条款和条件。更多详情,请参见项目存储库中的LICENSE文件。 </中文翻译>