Notion MCP
用于Notion API的MCP服务器,使Claude能够与Notion工作区进行交互。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"notion": {
"args": [
"your-built-file-path"
],
"command": "node",
"env": {
"NOTION_API_TOKEN": "your-integration-token",
"NOTION_MARKDOWN_CONVERSION": "true"
}
}
}
}
该服务需要配置环境变量:NOTION_API_TOKEN
可用工具 (18 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
notion_append_block_children 4 个参数 需填 2 项
Append new children blocks to a specified parent block in Notion. Requires insert content capabilities. You can optionally specify the 'after' parameter to append after a certain block.
必填参数:block_id、children
notion_retrieve_block 2 个参数 需填 1 项
Retrieve a block from Notion
必填参数:block_id
notion_retrieve_block_children 4 个参数 需填 1 项
Retrieve the children of a block
必填参数:block_id
notion_delete_block 2 个参数 需填 1 项
Delete a block in Notion
必填参数:block_id
notion_update_block 3 个参数 需填 2 项
Update the content of a block in Notion based on its type. The update replaces the entire value for a given field.
必填参数:block_id、block
notion_retrieve_page 2 个参数 需填 1 项
Retrieve a page from Notion
必填参数:page_id
notion_update_page_properties 3 个参数 需填 2 项
Update properties of a page or an item in a Notion database
必填参数:page_id、properties
notion_list_all_users 3 个参数
List all users in the Notion workspace. **Note:** This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors.
该工具无需必填参数,直接调用即可
notion_retrieve_user 2 个参数 需填 1 项
Retrieve a specific user by user_id in Notion. **Note:** This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors.
必填参数:user_id
notion_retrieve_bot_user 2 个参数 需填 1 项
Retrieve the bot user associated with the current token in Notion
必填参数:random_string
notion_create_database 4 个参数 需填 2 项
Create a database in Notion
必填参数:parent、properties
notion_query_database 6 个参数 需填 1 项
Query a database in Notion
必填参数:database_id
notion_retrieve_database 2 个参数 需填 1 项
Retrieve a database in Notion
必填参数:database_id
notion_update_database 5 个参数 需填 1 项
Update a database in Notion
必填参数:database_id
notion_create_database_item 3 个参数 需填 2 项
Create a new item (page) in a Notion database
必填参数:database_id、properties
notion_create_comment 4 个参数 需填 1 项
Create a comment in Notion. This requires the integration to have 'insert comment' capabilities. You can either specify a page parent or a discussion_id, but not both.
必填参数:rich_text
notion_retrieve_comments 4 个参数 需填 1 项
Retrieve a list of unresolved comments from a Notion page or block. Requires the integration to have 'read comment' capabilities.
必填参数:block_id
notion_search 6 个参数
Search pages or databases by title in Notion
该工具无需必填参数,直接调用即可
服务介绍
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 您的集成页面。
- 点击“新建集成”。
- 为您的集成命名并选择适当的权限(例如,“读取内容”,“更新内容”)。
-
获取密钥:
- 从您的集成中复制“内部集成令牌”。
- 此令牌将用于身份验证。
-
将集成添加到您的工作区:
- 在 Notion 中打开您希望集成访问的页面或数据库。
- 点击右上角的“...”按钮。
- 点击“连接”按钮,并选择您在上面第 1 步中创建的集成。
-
配置 Claude 桌面:
将以下内容添加到您的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 转换。这可以在查看内容时显著减少 token 消耗,但在尝试编辑页面内容时可能会出现问题。
高级配置
Markdown 转换
默认情况下,所有响应都以 JSON 格式返回。您可以启用实验性的 Markdown 转换以减少 token 消耗:
{
"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" 时),使其更易于阅读,并显著减少 token 消耗。但是,由于此功能是实验性的,在尝试编辑页面内容时可能会出现问题,因为原始结构在转换过程中会丢失。
您可以通过在工具调用中将 format 参数设置为 "json" 或 "markdown" 来逐个请求控制格式:
- 使用
"markdown"可以在仅查看内容时提高可读性 - 使用
"json"当您需要修改返回的内容时
故障排除
如果您遇到权限错误:
- 确保集成具有所需的权限。
- 确认该集成已被邀请到相关的页面或数据库。
- 确认在
claude_desktop_config.json中正确设置了令牌和配置。
工具
所有工具都支持以下可选参数:
format(字符串, "json" 或 "markdown", 默认: "markdown"): 控制响应格式。使用 "markdown" 以获得人类可读的输出,使用 "json" 以便程序化访问原始数据结构。注意:Markdown 转换仅在NOTION_MARKDOWN_CONVERSION环境变量设置为 "true" 时有效。
-
notion_append_block_children- Append child blocks to a parent block.
- Required inputs:
block_id(string): The ID of the parent block.children(array): Array of block objects to append.
- Returns: Information about the appended blocks.
-
notion_retrieve_block- Retrieve information about a specific block.
- Required inputs:
block_id(string): The ID of the block to retrieve.
- Returns: Detailed information about the block.
-
notion_retrieve_block_children- Retrieve the children of a specific block.
- Required inputs:
block_id(string): The ID of the parent block.
- Optional inputs:
start_cursor(string): Cursor for the next page of results.page_size(number, default: 100, max: 100): Number of blocks to retrieve.
- Returns: List of child blocks.
-
notion_delete_block- Delete a specific block.
- Required inputs:
block_id(string): The ID of the block to delete.
- Returns: Confirmation of the deletion.
-
notion_retrieve_page- Retrieve information about a specific page.
- Required inputs:
page_id(string): The ID of the page to retrieve.
- Returns: Detailed information about the page.
-
notion_update_page_properties- Update properties of a page.
- Required inputs:
page_id(string): The ID of the page to update.properties(object): Properties to update.
- Returns: Information about the updated page.
-
notion_create_database- Create a new database.
- Required inputs:
parent(object): Parent object of the database.title(array): Title of the database as a rich text array.properties(object): Property schema of the database.
- Returns: Information about the created database.
-
notion_query_database- Query a database.
- Required inputs:
database_id(string): The ID of the database to query.
- Optional inputs:
filter(object): Filter conditions.sorts(array): Sorting conditions.start_cursor(string): Cursor for the next page of results.page_size(number, default: 100, max: 100): Number of results to retrieve.
- Returns: List of results from the query.
-
notion_retrieve_database- Retrieve information about a specific database.
- Required inputs:
database_id(string): The ID of the database to retrieve.
- Returns: Detailed information about the database.
-
notion_update_database- Update information about a database.
- Required inputs:
database_id(string): The ID of the database to update.
- Optional inputs:
title(array): New title for the database.description(array): New description for the database.properties(object): Updated property schema.
- Returns: Information about the updated database.
-
notion_create_database_item- Create a new item in a Notion database.
- Required inputs:
database_id(string): The ID of the database to add the item to.properties(object): The properties of the new item. These should match the database schema.
- Returns: Information about the newly created item.
-
notion_search- Search pages or databases by title.
- Optional inputs:
query(string): Text to search for in page or database titles.filter(object): Criteria to limit results to either only pages or only databases.sort(object): Criteria to sort the resultsstart_cursor(string): Pagination start cursor.page_size(number, default: 100, max: 100): Number of results to retrieve.
- Returns: List of matching pages or databases.
-
notion_list_all_users- List all users in the Notion workspace.
- Note: This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors.
- Optional inputs:
- start_cursor (string): Pagination start cursor for listing users.
- page_size (number, max: 100): Number of users to retrieve.
- Returns: A paginated list of all users in the workspace.
-
notion_retrieve_user- Retrieve a specific user by user_id in Notion.
- Note: This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors.
- Required inputs:
- user_id (string): The ID of the user to retrieve.
- Returns: Detailed information about the specified user.
-
notion_retrieve_bot_user- Retrieve the bot user associated with the current token in Notion.
- Returns: Information about the bot user, including details of the person who authorized the integration.
-
notion_create_comment- Create a comment in Notion.
- Requires the integration to have 'insert comment' capabilities.
- Either specify a
parentobject with apage_idor adiscussion_id, but not both. - Required inputs:
rich_text(array): Array of rich text objects representing the comment content.
- Optional inputs:
parent(object): Must includepage_idif used.discussion_id(string): An existing discussion thread ID.
- Returns: Information about the created comment.
-
notion_retrieve_comments- Retrieve a list of unresolved comments from a Notion page or block.
- Requires the integration to have 'read comment' capabilities.
- Required inputs:
block_id(string): The ID of the block or page whose comments you want to retrieve.
- Optional inputs:
start_cursor(string): Pagination start cursor.page_size(number, max: 100): Number of comments to retrieve.
- Returns: A paginated list of comments associated with the specified block or page.
许可
此 MCP 服务器依据 MIT 许可证进行授权。这意味着您可以在遵守 MIT 许可证的条款和条件的前提下自由使用、修改和分发该软件。更多详情,请参阅项目仓库中的 LICENSE 文件。