使用说明
Notion MCP 服务器(用于 ChatGPT)
一个模型上下文协议(MCP)服务器,用于将您的Notion账户与ChatGPT连接,从而实现对特定Notion页面的受控访问。
特点/功能
- 🔒(锁形符号,常用于表示安全、保密或锁定状态) 页面特定的访问控制 - 仅授予对特定Notion页面的访问权限
- 🔍(放大镜图标,通常表示搜索或查看细节) 搜索功能 - 在您授权的Notion页面中进行搜索
- 📄 代表一张纸或文档的符号。 获取全部内容 - 获取包括区块在内的完整页面内容
- 🔐 OAuth 支持 - 使用Notion进行安全认证
- 🚀 火箭或快速上升的符号 由FastMCP提供支持 - 使用FastMCP构建,便于部署
建筑学
这个MCP服务器实现了两个必需的工具:
-
search- 在授权的Notion页面中搜索- 返回值:
{results: [{id, title, url}]}
- 返回值:
-
fetch- 获取特定页面的完整内容- 返回值:
{id, title, text, url, metadata}
- 返回值:
设置
先决条件
- Python 3.8及以上版本
- Notion账户
- Notion集成(API密钥)
安装
- 克隆此存储库:
git clone <your-repo-url>
cd ChatGPT\ Notion\ MCP\ Server
- 安装依赖项:
pip install -r requirements.txt
- 创建一个
.env包含您的配置文件:
NOTION_API_KEY=your_notion_api_key
ALLOWED_PAGE_IDS=page_id_1,page_id_2,page_id_3
PORT=8000
获取您的Notion API密钥
- 访问 https://www.notion.so/my-integrations
- 点击“新建集成”
- 给它起个名字(例如,“ChatGPT MCP 服务器”)
- 复制“内部集成令牌”
- 与您的集成共享特定页面:
- 打开你想要授权访问的每个页面
- 点击“分享”→“邀请”→选择您的集成
获取页面ID
- 在浏览器中打开一个Notion页面
- 该URL将看起来像:
https://www.notion.so/Page-Title-32charPageID - 复制末尾的32位字符ID
- 添加多个页面ID到
ALLOWED_PAGE_IDS(用逗号分隔)
运行服务器
本地开发
python server.py
服务器将在 http://localhost:8000
部署到Replit
- 将此仓库导入到Replit
- 在Replit Secrets中添加环境变量
- 运行该项目
连接到ChatGPT
通过ChatGPT设置
- 打开ChatGPT设置 → 连接器
- 添加一个新的MCP服务器
- 输入您的服务器URL(例如。,
https://your-server.repl.co/sse/) - 添加
search并且fetch工具
通过API(深入研究)
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "o4-mini-deep-research",
"input": [...],
"tools": [
{
"type": "mcp",
"server_label": "notion",
"server_url": "https://your-server.com/sse/",
"allowed_tools": ["search", "fetch"],
"require_approval": "never"
}
]
}'
安全考虑事项
- ⚠️ 仅添加您希望ChatGPT访问的页面ID
- 🔒 保护好你的
NOTION_API_KEY秘密 - 🛡️ 审查 OpenAI MCP 安全指南
- ✅ 在生产环境中使用 HTTPS
- 🔐 考虑在多用户场景中实施OAuth
测试
在本地测试您的服务器:
# Search test
curl http://localhost:8000/test-search?query=test
# Fetch test
curl http://localhost:8000/test-fetch?page_id=YOUR_PAGE_ID
故障排除
“页面未找到”错误
- 确保页面已与您的集成共享
- 验证页面ID是否在(其中)
ALLOWED_PAGE_IDS
“未经授权”错误
- 检查你的
NOTION_API_KEY是正确的 - 验证集成是否可以访问这些页面
连接问题
- 确保您的服务器可公开访问
- 检查防火墙设置
- 验证HTTPS已启用(生产环境必需)
