Notion

makenotion
4648
连接 Notion API 以搜索、读取、创建和更新页面、数据库及评论,适用于 AI 代理管理工作区内容和自动化文档处理的场景。

内容

Notion 14

Notion MCP Server 提供简单安装和高效页面编辑的 AI 工具。

notion-search

执行搜索操作: - "internal":在 Notion 工作区和已连接的来源(Slack、Google Drive、Github、Jira、Microsoft Teams、Sharepoint、OneDrive、Linear)上进行语义搜索。支持按创建时间日期和创建者筛选。 - "user":按姓名或电子邮件搜索用户。 根据用户对 Notion AI 的访问权限,自动选择 AI 搜索(包含已连接的来源)或工作区搜索(仅限工作区,速度更快)。使用 `content_search_mode` 来覆盖此行为。 使用 "fetch" 工具在获取搜索结果后获取完整的页面或数据库内容。每个结果的 "url" 字段包含 Notion 结果的页面 ID(直接传递给 fetch 工具的 "id" 参数)或外部连接器结果(Slack、Google Drive 等)的完整 URL。设置 `page_size`(默认值 10,最大 25)和 `max_highlight_length`(默认值 200,设为 0 以省略)尽可能小,以最小化响应大小。 要在数据库中搜索:首先获取数据库以从 `<data-source url="...">` 标签中获取数据源 URL(collection://...),然后使用该 URL 作为 `data_source_url`。对于多源数据库,请在 URL 中匹配视图 ID(?v=...)或单独搜索所有来源。 不要将数据库 URL/ID 与 collection:// 前缀组合用于 `data_source_url`。不要将数据库 URL 用作 `page_url`。 <示例描述="按日期范围筛选搜索(仅限 2024 年创建的文档)"> { "query": "季度收入报告", "query_type": "internal", "filters": { "created_date_range": { "start_date": "2024-01-01", "end_date": "2025-01-01" } } } </示例> <示例描述="团队空间 + 创建者筛选"> {"query": "项目更新", "query_type": "internal", "teamspace_id": "f336d0bc-b841-465b-8045-024475c079dd", "filters": {"created_by_user_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]}} </示例> <示例描述="具有日期 + 创建者筛选的数据库"> {"query": "设计审查", "data_source_url": "collection://f336d0bc-b841-465b-8045-024475c079dd", "filters": {"created_date_range": {"start_date": "2024-10-01"}, "created_by_user_ids": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890", "b2c3d4e5-f6a7-8901-bcde-f12345678901"]}} </示例> <示例描述="用户搜索"> {"query": "john@example.com", "query_type": "user"} </示例>

此工具无需参数

notion-fetch

通过URL或ID获取有关Notion实体的详细信息(页面、数据库或数据源)。 在`id`参数中提供URL或ID。进行多次调用以获取多个实体。 页面使用增强的Markdown格式。有关完整的规范,请在`notion://docs/enhanced-markdown-spec`处获取MCP资源。 数据库返回所有数据源(集合)。每个数据源都有一个唯一ID,显示在`<data-source url="collection://...">`标签中。您可以直接将数据源ID传递给此工具,以获取有关该特定数据源的详细信息,包括其架构和属性。与`update_data_source`和`query_data_sources`工具一起使用数据源ID。多源数据库(例如,带有链接源)将显示多个数据源。 将`include_discussions`设置为true,以查看讨论计数和内联讨论标记,这些标记与`get_comments`工具相关。页面输出将包括一个`<page-discussions>`摘要标签,其中包含讨论计数、预览片段和`discussion://`URL,这些URL与`get_comments`返回的讨论ID匹配。 <示例>{"id": "https://notion.so/workspace/Page-a1b2c3d4e5f67890"}</示例> <示例>{"id": "12345678-90ab-cdef-1234-567890abcdef"}</示例> <示例>{"id": "https://myspace.notion.site/Page-Title-abc123def456"}</示例> <示例>{"id": "page-uuid", "include_discussions": true}</示例> <示例>{"id": "collection://12345678-90ab-cdef-1234-567890abcdef"}</示例>

此工具无需参数

notion-create-pages

## 概述 使用该工具可以创建一张或多张 Notion 页面,页面具有指定的属性和内容。 ## 父页面 使用该工具一次调用创建的所有页面都具有相同的父页面。父页面可以是 Notion 页面(`page_id`)或数据源(`data_source_id`)。如果省略父页面,则页面将作为独立的工作区级私有页面创建,创建者可以稍后自行组织这些页面。 如果您有数据库网址,请始终先将其传递给“获取”工具,以获取数据库下每个数据源的架构和网址。如果数据库有多个数据源,则不能使用`database_id`父类型,因此您需要根据情况和获取工具的结果确定要使用的数据源 ID(数据源网址类似于 `collection://<data_source_id>`)。 如果已知页面应在数据源下创建,请不要在`page_id`参数下使用数据库 ID 或网址;`page_id`仅适用于常规的非数据库页面。 ## 内容 Notion 页面内容是 Notion 风格的 Markdown 格式字符串。 不要在页面内容的顶部包含页面标题。仅在“属性”下包含它。 **重要**:有关完整的 Markdown 规范,请始终先获取位于 `notion://docs/enhanced-markdown-spec` 的 MCP 资源。不要猜测或臆测 Markdown 语法。此规范也适用于 `update-page` 和 `fetch` 等其他工具。 ## 属性 Notion 页面属性是属性名称到 SQLite 值的 JSON 映射。 在数据库中创建页面时: - 使用从获取工具结果中显示的数据源架构中的正确属性名称。 - 始终包含一个标题属性。数据源始终具有一个标题属性,但其名称可能不是“title”,因此请再次依赖获取的数据源架构。 对于数据库外的页面: - 唯一允许的属性是“title”,它是内联 Markdown 格式的页面标题。始终包含“title”属性。 **重要**:某些属性类型需要扩展格式: - 日期属性:分为“date:{property}:start”,“date:{property}:end”(可选)和“date:{property}:is_datetime”(0 或 1) - 地点属性:分为“place:{property}:name”,“place:{property}:address”,“place:{property}:latitude”,“place:{property}:longitude”和“place:{property}:google_place_id”(可选) - 数字属性:使用 JavaScript 数字(非字符串) - 复选框属性:使用“__YES__”表示选中,“__NO__”表示未选中 **特殊属性命名**:名为“id”或“url”的属性(不区分大小写)必须以“userDefined:”为前缀(例如“userDefined:URL”,“userDefined:id”) ## 模板 在数据库中创建页面时,可以应用模板以预填充内容和属性值。使用获取工具获取数据库以查看数据源的`templates`部分中的可用模板。 使用模板时: - 将模板的 ID 作为`template_id`传递到页面对象中。 - 使用模板时不要包含`content`,因为模板提供了它。 - 仍然可以设置`properties`以覆盖模板默认值。 - 模板应用是异步的。页面立即创建,但初始为空;模板内容将在 shortly 后出现。 ## 图标和封面 每个页面都可以选择具有图标和封面图像。 - `icon`:一个表情符号字符(例如“🚀”),一个自定义表情符号(例如“:rocket_ship:”),或外部图像网址。使用“none”删除。省略以保持不变。 - `cover`:外部图像网址。使用“none”删除。省略以保持不变。 ## 示例 ### 创建带有图标和封面的页面 ```json { "pages": [ { "properties": {"title": "我的页面"}, "icon": "🚀", "cover": "https://example.com/cover.jpg" } ] } ``` ### 从数据库模板创建页面 ```json { "parent": {"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "pages": [ { "template_id": "a5da15f6-b853-455d-8827-f906fb52db2b", "properties": { "任务名称": "新的紧急错误" } } ] } ``` ### 创建带有标题和内容的独立页面 ```json { "pages": [ { "properties": {"title": "页面标题"}, "content": "# 第一节 {color=\"blue\"}\n第一节内容\ndetails\n<summary>切换块</summary>\n 切换块内的隐藏内容\n</details>" } ] } ``` ### 在数据库的数据源下创建页面 ```json {

此工具无需参数

notion-update-page

## 概述 更新 Notion 页面的属性或内容。 ## 属性 Notion 页面属性是一个 JSON 映射,属性名称映射到 SQLite 值。 对于数据库中的页面: - **始终**使用“获取”工具获取数据源模式和确切的属性名称。 - 提供一个非空值来更新属性的值。 - 省略的属性保持不变。 **重要**:某些属性类型需要扩展格式: - 日期属性:分为“date:{属性}:start”,“date:{属性}:end”(可选)和“date:{属性}:is_datetime”(0 或 1) - 地点属性:分为“place:{属性}:name”,“place:{属性}:address”,“place:{属性}:latitude”,“place:{属性}:longitude”和“place:{属性}:google_place_id”(可选) - 数字属性:使用 JavaScript 数字(不是字符串) - 复选框属性:使用“__YES__”表示选中,“__NO__”表示未选中 **特殊属性命名**:名为“id”或“url”的属性(不区分大小写)必须以“userDefined:”为前缀(例如“userDefined:URL”,“userDefined:id”) 对于数据库外的页面: - 唯一允许的属性是“title”,即内联 Markdown 格式的页面标题。 ## 内容 Notion 页面内容是 Notion 风格的 Markdown 格式字符串。 **重要**:有关完整的 Markdown 规范,请先获取 `notion://docs/enhanced-markdown-spec` 处的 MCP 资源。**不要**猜测或臆测 Markdown 语法。 使用此工具更新页面的内容之前,请先使用“获取”工具获取现有内容,以查找在“更新内容”命令的 old_str 字段中要使用的 Markdown 代码段。 ### 保留子页面和数据库 当使用“replace_content”时,操作将检查是否会删除任何子页面或数据库。如果是,它将失败并显示一个错误,列出受影响的项目。 要保留子页面/数据库,请在 new_str 中包含它们,使用 `<page url="...">` 或 `<database url="...">` 标签。从“获取”工具输出中获取确切的 URL。 **关键**:故意删除子内容:如果调用因验证失败且需要 `allow_deleting_content` 为 true 而失败,**不要**自动假设应删除内容。在继续之前,**始终**显示要删除的页面列表并要求用户确认。 ## 图标和封面 您可以设置或删除页面的图标和封面,以及任何命令。 - “icon”:一个表情符号字符(例如“🚀”),一个自定义表情符号(例如“:rocket_ship:”),或外部图像 URL。使用“none”删除。省略则保持不变。 - “cover”:外部图像 URL。使用“none”删除。省略则保持不变。 ## 示例 <example description="更新页面图标和封面"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_properties", "properties": {"title": "我的页面"}, "icon": "🚀", "cover": "https://example.com/cover.jpg" } </example> <example description="更新页面属性"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_properties", "properties": { "title": "新页面标题", "status": "进行中", "priority": 5, "checkbox": "__YES__", "date:deadline:start": "2024-12-25", "date:deadline:is_datetime": 0, "place:office:name": "总部", "place:office:latitude": 37.7749, "place:office:longitude": -122.4194 } } </example> <example description="替换整个页面的内容"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "replace_content", "new_str": "# 新章节 更新的内容在这里" } </example> <example description="更新页面中的特定内容(搜索和替换)"> { "page_id": "f336d0bc-b841-465b-8045-024475c079dd", "command": "update_content",

此工具无需参数

notion-move-pages

将一个或多个Notion页面或数据库移动到新的上一级页面。

此工具无需参数

notion-duplicate-page

复制一个Notion页面。该页面必须位于当前工作区内,并且您必须具有访问该页面的权限。复制操作会异步完成,因此请不要依赖返回的ID或URL标识的新页面立即生效。请用户知晓复制操作正在进行中,他们可以稍后使用“获取”工具或点击返回的URL,在Notion应用中查看。

此工具无需参数

notion-create-database

使用 SQL DDL 语法创建一个新的 Notion 数据库。 如果没有提供标题属性,则会自动添加“名称”。返回包含模式、SQLite 定义和数据源 ID 的 Markdown,数据源 ID 在 `<data-source>` 标签中,供 `update_data_source` 和 `query_data_sources` 工具使用。 模式参数接受一个 CREATE TABLE 语句来定义列。 类型语法: - 简单:TITLE,RICH_TEXT,DATE,PEOPLE,CHECKBOX,URL,EMAIL,PHONE_NUMBER,STATUS,FILES - SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...) - NUMBER [FORMAT 'dollar'] / FORMULA('expression') - RELATION('data_source_id') — 单向关系 - RELATION('data_source_id', DUAL) — 双向关系 - RELATION('data_source_id', DUAL 'synced_name') — 双向关系,同步属性名称 - RELATION('data_source_id', DUAL 'synced_name' 'synced_id') — 双向关系,同步名称和 ID(用于自关系) - ROLLUP('rel_prop', 'target_prop', 'function') - UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME - 任意列:COMMENT '描述文本' 颜色:default,gray,brown,orange,yellow,green,blue,purple,pink,red <example description="Minimal">{"schema": "CREATE TABLE ("Name" TITLE)"}</example> <example description="任务数据库">{"title": "Tasks", "schema": "CREATE TABLE ("Task Name" TITLE, "Status" SELECT('To Do':red, 'Done':green), "Due Date" DATE)"}</example> <example description="带父页面和选项">{"parent": {"page_id": "f336d0bc-b841-465b-8045-024475c079dd"}, "title": "Projects", "schema": "CREATE TABLE ("Name" TITLE, "Budget" NUMBER FORMAT 'dollar', "Tags" MULTI_SELECT('eng':blue, 'design':pink), "Task ID" UNIQUE_ID PREFIX 'PRJ')"}</example> <example description="自关系(两步:先创建数据库,然后使用数据源 ID 和 update_data_source 添加自关系)">{"title": "Tasks", "schema": "CREATE TABLE ("Name" TITLE, "Parent" RELATION('ds_id', DUAL 'Children' 'children'), "Children" RELATION('ds_id', DUAL 'Parent' 'parent'))"}</example>

此工具无需参数

notion-update-data-source

SQL DDL 语句更新 Notion 数据源的架构、标题或属性。返回显示更新后的结构和架构的 Markdown。 接受数据源 ID(来自 fetch 响应的 `<data-source>` 标签的集合 ID)或单个数据源数据库 ID。多数据源数据库需要特定的数据源 ID。 `statements` 参数接受以分号分隔的 DDL 语句: - `ADD COLUMN "名称" <类型>` - 添加新属性 - `DROP COLUMN "名称"` - 删除属性 - `RENAME COLUMN "旧名称" TO "新名称"` - 重命名属性 - `ALTER COLUMN "名称" SET <类型>` - 更改类型/选项 与 `create_database` 相同的类型语法。关键类型: - `SELECT('选项':颜色, ...)` / `MULTI_SELECT('选项':颜色, ...)` - `NUMBER [FORMAT '美元']` / `FORMULA('表达式')` - `RELATION('数据源 ID')` / `RELATION('数据源 ID', DUAL)` / `RELATION('数据源 ID', DUAL '同步名称' '同步 ID')` - `ROLLUP('关联属性', '目标属性', '函数')` / `UNIQUE_ID [PREFIX 'X']` - 简单类型:`TITLE`、`RICH_TEXT`、`DATE`、`PEOPLE`、`CHECKBOX`、`URL`、`EMAIL`、`PHONE_NUMBER`、`STATUS`、`FILES` <example description="添加属性">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "ADD COLUMN \"优先级\" SELECT('高':red, '中':yellow, '低':green); ADD COLUMN \"截止日期\" DATE"}</example> <example description="重命名属性">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "RENAME COLUMN \"状态\" TO \"项目状态\""}</example> <example description="删除属性">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "DROP COLUMN \"旧属性\""}</example> <example description="添加自关联">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "statements": "ADD COLUMN \"父级\" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL '子项' 'children'); ADD COLUMN \"子项\" RELATION('f336d0bc-b841-465b-8045-024475c079dd', DUAL '父级' 'parent')"}</example> <example description="更新标题">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "title": "项目跟踪器 2024"}</example> <example description="移至回收站">{"data_source_id": "f336d0bc-b841-465b-8045-024475c079dd", "in_trash": true}</example> 注意:不能删除/创建标题属性。最多一个 `unique_id` 属性。不能更新同步数据库。首先使用 `fetch` 查看当前架构,并从 `<data-source url="collection://...">` 标签中获取数据源

此工具无需参数

notion-create-comment

在页面或特定内容上添加评论。 创建新的评论。提供 `page_id` 以标识页面,然后选择一种定位模式: - 单独的 `page_id`:对整个页面的页面级评论 - `page_id` + `selection_with_ellipsis`:对特定块内容的评论 - `discussion_id`:回复现有的讨论线程(仍然需要 `page_id`) 对于内容定位,请使用 `selection_with_ellipsis`,并从开始和结尾各取约 10 个字符: "#章节标题内容..." <示例描述="页面级评论"> {"page_id": "uuid", "rich_text": [{"text": {"content": "评论"}}]} </示例> <示例描述="评论特定内容"> {"page_id": "uuid", "selection_with_ellipsis": "# 会议纪...要标题", "rich_text": [{"text": {"content": "评论此部分"}}]} </示例> <示例描述="回复讨论"> {"page_id": "uuid", "discussion_id": "discussion://pageId/blockId/discussionId", "rich_text": [{"text": {"content": "回复"}}]} </示例>

此工具无需参数

notion-get-comments

获取Notion页面中的评论和讨论。 返回包含完整评论内容的XML格式讨论。默认情况下,仅返回页面级讨论。 提示:首先使用带`include_discussions: true`的`fetch`工具查看讨论锚定在页面内容的位置,然后使用此工具检索完整的讨论线程。`fetch`输出中的`discussion://` URL与此处返回的讨论ID匹配。 参数: - `include_all_blocks`:包含子块上的讨论(默认:false) - `include_resolved`:包含已解决的讨论(默认:false) - `discussion_id`:通过ID或URL获取特定讨论 <example>{"page_id": "页面uuid"}</example> <example>{"page_id": "页面uuid", "include_all_blocks": true}</example> <example>{"page_id": "页面uuid", "discussion_id": "discussion://页面Id/块Id/讨论Id"}</example>

此工具无需参数

notion-get-teams

获取当前工作空间中的团队(团队空间)列表。显示存在的团队、用户成员状态、ID、名称和角色。 按成员状态对团队进行分类,返回结果限制为最多10条。 <示例> 1. 列出所有团队(最多限制每个类型的团队):{} 2. 按名称搜索团队:{"query": "工程"} 3. 查找特定团队:{"query": "产品设计"} </示例>

此工具无需参数

notion-get-users

当前工作空间中的用户列表。显示工作空间成员和访客的ID、姓名、电子邮件(如有)和类型(个人或机器人)。 支持基于光标的分页,遍历工作空间中的所有用户。 示例: 1. 列出所有用户(第一页):{} 2. 按姓名或电子邮件搜索用户:{"query": "john"} 3. 获取下一页结果:{"start_cursor": "abc123"} 4. 设置自定义页大小:{"page_size": 20} 5. 按ID获取特定用户:{"user_id": "00000000-0000-4000-8000-000000000000"} 6. 获取当前用户:{"user_id":

此工具无需参数

notion-create-view

在 Notion 数据库中创建新的视图。 必须提供“database_id”或“parent_page_id”中的一个: - “database_id”:在现有数据库中添加新的视图选项卡。 - “parent_page_id”:在页面上创建一个内联链接的数据库视图,引用现有的“data_source_id”(类似于UI中的“/linked”命令)。链接的视图块会附加到父页面的末尾。 首先使用“fetch”获取database_id、parent_page_id和data_source_id(来自响应中的<data-source>标签)。调用者必须具有对数据库(或父页面)的编辑权限以及对数据源的访问权限。 支持的类型:表格、看板、列表、日历、时间线、画廊、表单、图表、地图、仪表盘。 可选的“configure”参数接受用于筛选、排序、分组和显示选项的DSL。有关完整的语法,请参阅notion://docs/view-dsl-spec资源。关键指令: - 筛选 “属性” = “值” — 筛选行 - 按 “属性” 升序 — 排序行 - 按 “属性” 分组 — 按属性分组(看板视图必填) - 按 “属性” 显示日历 — 日期属性(日历视图必填) - 按 “开始” 至 “结束” 显示时间线 — 日期范围(时间线视图必填) - 按 “属性” 显示地图 — 位置属性(地图视图必填) - 图表 column|bar|line|donut|number — 图表类型,可选聚合、颜色、高度、排序、堆叠依据、标题 - 表单 关闭|打开 — 关闭/打开表单提交 - 表单 匿名 true|false — 切换匿名提交 - 表单 权限 none|reader|editor — 设置提交权限 - 显示 “属性1”,“属性2” — 设置可见属性 - 封面 “属性” — 封面图片属性 <示例 description="现有数据库的表格视图">{"database_id": "abc123", "data_source_id": "def456", "name": "所有任务", "type": "table"}</示例> <示例 description="按状态分组的看板">{"database_id": "abc123", "data_source_id": "def456", "name": "任务看板", "type": "board", "configure": "按状态分组"}</示例> <示例 description="筛选 + 排序的表格">{"database_id": "abc123", "data_source_id": "def456", "name": "活动", "type": "table", "configure": "筛选 '状态' = '进行中';按 '截止日期' 升序排序"}</示例> <示例 description="日历视图">{"database_id": "abc123", "data_source_id": "def456", "name": "日历", "type": "calendar", "configure": "按 '截止日期' 显示日历"}</示例> <示例 description="仪表盘">{"database_id": "abc123", "data_source_id": "def456", "name": "概览", "type": "dashboard"}</示例> <示例 description="页面上的链接视图">{"parent_page_id": "ghi789", "data_source_id": "def456", "name": "公司任务", "type": "table", "configure": "筛选 '公司' = 'Acme'"}</示例>

此工具无需参数

notion-update-view

更新视图的名称、筛选条件、排序方式或显示配置。 使用“fetch”从数据库响应中获取视图ID。仅包含要更改的字段。“configure”参数与`create_view` 使用相同的DSL。 使用 CLEAR 删除设置: - CLEAR FILTER — 删除所有筛选条件 - CLEAR SORT — 删除所有排序方式 - CLEAR GROUP BY — 删除分组 完整语法请参见 notion://docs/view-dsl-spec 资源。 <示例描述="重命名">{"view_id": "abc123", "name": "Sprint 看板"}</示例> <示例描述="更新筛选条件">{"view_id": "abc123", "configure": "FILTER "状态" = "完成""}</示例> <示例描述="清除筛选条件,添加排序">{"view_id": "abc123", "configure": "CLEAR FILTER; SORT BY "创建时间" DESC"}</示例> <示例描述="更新分组">{"view_id": "abc123", "configure": "GROUP BY "优先级"; SHOW "名称", "状态""}</示例>

此工具无需参数