返回市场
概念MCP服务器

概念MCP服务器

作者:makenotion3520 星标更新:2025-08-23

项目介绍

Notion MCP Server

[!NOTE]

我们推出了 Notion MCP,这是一个远程MCP服务器,具有以下改进:

  • 通过标准OAuth进行简单安装。无需再处理JSON或API令牌。
  • 针对AI代理的强大工具。这些工具设计时考虑了优化的令牌消耗。

了解更多并试用 这里

notion-mcp-sm

此项目实现了用于Notion APIMCP服务器

mcp-demo

安装

1. 在Notion中设置集成:

前往 https://www.notion.so/profile/integrations 并创建一个新的内部集成或选择一个现有的集成。

创建Notion集成令牌

虽然我们限制了Notion API暴露的范围(例如,您无法通过MCP删除数据库),但将其暴露给LLMs仍存在一定的风险。安全意识较强的用户可能希望进一步配置集成的能力

例如,您可以仅授予“读取内容”访问权限来创建一个只读集成令牌:

Notion集成令牌能力显示已选中读取内容

2. 将内容连接到集成:

确保相关页面和数据库已连接到您的集成。

为此,请访问内部集成设置中的访问选项卡。编辑访问权限并选择您想要使用的页面。 集成访问选项卡

编辑集成访问

或者,您可以单独授予页面访问权限。您需要访问目标页面,点击三个点,并选择“连接到集成”。

添加集成令牌到Notion连接

3. 向客户端添加MCP配置:

使用npm:

光标 & 克劳德:

在您的.cursor/mcp.jsonclaude_desktop_config.json(MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json)中添加以下内容。

选项1:使用NOTION_TOKEN(推荐)

{
  "mcpServers": {
    "notionApi": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "NOTION_TOKEN": "ntn_****"
      }
    }
  }
}

选项2:使用OPENAPI_MCP_HEADERS(适用于高级用例)

{
  "mcpServers": {
    "notionApi": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\" }"
      }
    }
  }
}

Zed

在您的settings.json中添加以下内容:

{
  "context_servers": {
    "some-context-server": {
      "command": {
        "path": "npx",
        "args": ["-y", "@notionhq/notion-mcp-server"],
        "env": {
          "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\" }"
        }
      },
      "settings": {}
    }
  }
}
使用Docker:

有两种方法可以使用Docker运行MCP服务器:

选项1:使用官方Docker Hub镜像:

在您的.cursor/mcp.jsonclaude_desktop_config.json中添加以下内容:

使用NOTION_TOKEN(推荐):

{
  "mcpServers": {
    "notionApi": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "NOTION_TOKEN",
        "mcp/notion"
      ],
      "env": {
        "NOTION_TOKEN": "ntn_****"
      }
    }
  }
}

使用OPENAPI_MCP_HEADERS(适用于高级用例):

{
  "mcpServers": {
    "notionApi": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "OPENAPI_MCP_HEADERS",
        "mcp/notion"
      ],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer ntn_****\",\"Notion-Version\":\"2022-06-28\"}"
      }
    }
  }
}

这种方法:

  • 使用官方Docker Hub镜像
  • 通过环境变量正确处理JSON转义
  • 提供更可靠的配置方法
选项2:本地构建Docker镜像:

您也可以本地构建并运行Docker镜像。首先,构建Docker镜像:

docker compose build

然后,在您的.cursor/mcp.jsonclaude_desktop_config.json中添加以下内容:

使用NOTION_TOKEN(推荐):

{
  "mcpServers": {
    "notionApi": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "NOTION_TOKEN=ntn_****",
        "notion-mcp-server"
      ]
    }
  }
}

使用OPENAPI_MCP_HEADERS(适用于高级用例):

{
  "mcpServers": {
    "notionApi": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "OPENAPI_MCP_HEADERS={\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\"}",
        "notion-mcp-server"
      ]
    }
  }
}

别忘了将ntn_****替换为您集成的秘密。从您的集成配置选项卡中找到它:

从开发者门户的配置选项卡复制您的集成令牌

通过Smithery安装

smithery徽章

要通过Smithery自动安装Claude Desktop的Notion API服务器:

npx -y @smithery/cli install @makenotion/notion-mcp-server --client claude

传输选项

Notion MCP服务器支持两种传输模式:

STDIO传输(默认)

默认传输模式使用标准输入/输出进行通信。这是大多数客户端(如Claude Desktop)使用的标准MCP传输。

# 使用默认stdio传输运行
npx @notionhq/notion-mcp-server

# 或明确指定stdio
npx @notionhq/notion-mcp-server --transport stdio

可流式HTTP传输

对于基于Web的应用程序或偏好HTTP通信的客户端,您可以使用可流式HTTP传输:

# 使用可流式HTTP传输在端口3000(默认)上运行
npx @notionhq/notion-mcp-server --transport http

# 在自定义端口上运行
npx @notionhq/notion-mcp-server --transport http --port 8080

# 使用自定义认证令牌运行
npx @notionhq/notion-mcp-server --transport http --auth-token "your-secret-token"

当使用可流式HTTP传输时,服务器将在http://0.0.0.0:<port>/mcp可用。

认证

可流式HTTP传输需要bearer token认证以保证安全性。您有三种选择:

选项1:自动生成的令牌(推荐用于开发)

npx @notionhq/notion-mcp-server --transport http

服务器将生成一个安全随机令牌并在控制台中显示:

生成的认证令牌:a1b2c3d4e5f6789abcdef0123456789abcdef0123456789abcdef0123456789ab
在授权头中使用此令牌:Bearer a1b2c3d4e5f6789abcdef0123456789abcdef0123456789abcdef0123456789ab

选项2:命令行中的自定义令牌(推荐用于生产)

npx @notionhq/notion-mcp-server --transport http --auth-token "your-secret-token"

选项3:环境变量中的自定义令牌(推荐用于生产)

AUTH_TOKEN="your-secret-token" npx @notionhq/notion-mcp-server --transport http

如果同时提供了命令行参数--auth-tokenAUTH_TOKEN环境变量,则命令行参数优先。

发送HTTP请求

所有对可流式HTTP传输的请求都必须在授权头中包含bearer令牌:

# 示例请求
curl -H "Authorization: Bearer your-token-here" \
     -H "Content-Type: application/json" \
     -H "mcp-session-id: your-session-id" \
     -d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}' \
     http://localhost:3000/mcp

注意: 确保在使用任何传输模式时设置NOTION_TOKEN环境变量(推荐)或OPENAPI_MCP_HEADERS环境变量,其中包含您的Notion集成令牌。

示例

  1. 使用以下指令
在页面“开始”上评论“Hello MCP”

AI将正确规划两个API调用,v1/searchv1/comments,以完成任务。

  1. 类似地,以下指令将导致名为“Notion MCP”的新页面添加到父页面“开发”中
在页面“开发”中添加一个标题为“Notion MCP”的页面
  1. 您还可以直接引用内容ID
获取页面1a6b35e6e67f802fa7e1d27686f017f2的内容

开发

构建

npm run build

执行

npx -y --prefix /path/to/local/notion-mcp-server @notionhq/notion-mcp-server

发布

npm publish --access public