README
🚀 GitHub PR分析器与Notion集成
这是一个模型上下文协议(MCP)服务器,可获取GitHub拉取请求的变更信息,并在Notion中创建分析摘要。
教程:请按照DataCamp的MCP教程进行逐步操作。
✨ 主要特性
- 🔍 获取详细的GitHub拉取请求信息,包括:
- 文件变更(新增、删除、修改)
- 拉取请求元数据(标题、描述、作者、时间戳)
- 每个变更文件的差异补丁
- 📝 在Notion中创建包含拉取请求分析的页面
- 🔌 集成MCP服务器,实现工具的无缝使用
📦 安装指南
前提条件
- Python 3.8 或更高版本
- GitHub个人访问令牌
- Notion API密钥和页面ID
安装步骤
- 克隆仓库:
git clone <repository-url>
cd mcp-starter
- 创建并激活Python虚拟环境:
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# 在macOS/Linux上:
source venv/bin/activate
# 在Windows上:
# venv\Scripts\activate
- 安装依赖项:
pip install -r requirements.txt
- 在项目根目录下创建一个
.env文件,并填入你的凭证信息:
GITHUB_TOKEN=your_github_token_here
NOTION_API_KEY=your_notion_api_key_here
NOTION_PAGE_ID=your_notion_page_id_here
获取凭证信息
GitHub令牌:
- 进入GitHub设置 → 开发者设置 → 个人访问令牌
- 生成一个具有
repo权限的新令牌 - 将令牌复制到你的
.env文件中
Notion API密钥:
- 访问https://www.notion.so/my-integrations
- 创建一个新的集成,并复制内部集成令牌
- 将你的Notion页面共享给该集成
Notion页面ID:
- 在浏览器中打开你的Notion页面
- 从URL中复制页面ID(最后一个
/之后、?之前的部分)
💻 使用示例
运行MCP服务器
首先,确保你的虚拟环境已激活:
# 在macOS/Linux上:
source venv/bin/activate
# 在Windows上:
# venv\Scripts\activate
然后运行服务器:
python pr_analyzer.py
服务器提供了两个MCP工具:
1. fetch_pr
从GitHub获取拉取请求信息。 参数:
repo_owner(str):仓库所有者用户名repo_name(str):仓库名称pr_number(int):拉取请求编号
返回值:
- 拉取请求元数据和详细的文件变更信息
2. create_notion_page
创建一个包含分析内容的Notion页面。 参数:
title(str):页面标题content(str):页面内容
返回值:
- 成功或错误消息
直接使用(开发/测试)
你也可以直接使用 github_integration.py 模块:
from github_integration import fetch_pr_changes
# 获取拉取请求变更信息
pr_data = fetch_pr_changes('owner', 'repo', 123)
print(pr_data)
🔧 技术细节
项目结构
mcp-starter/
├── github_integration.py # GitHub API集成
├── pr_analyzer.py # MCP服务器实现
├── requirements.txt # 项目依赖项
├── .env # 环境变量(不在git中)
└── README.md # 本文件
依赖项
主要依赖项包括:
mcp- 模型上下文协议服务器requests- GitHub API调用notion-client- Notion API集成python-dotenv- 环境变量管理pydantic- 数据验证httpx- 异步HTTP客户端
完整列表请参考 requirements.txt。
错误处理
该应用程序包含全面的错误处理机制:
- 捕获并记录API请求失败信息
- 缺少凭证时触发相应的错误消息
- 将堆栈跟踪信息打印到标准错误输出,以便调试
开发
若要贡献代码或进行修改:
- 确保你的
.env文件配置正确 - 在运行MCP服务器之前,使用直接使用方法测试变更
- 查看标准错误输出以获取调试信息
安全注意事项
⚠️ 重要提示
切勿将你的
.env文件提交到版本控制中,因为它包含敏感凭证信息。
将以下内容添加到你的 .gitignore 文件中:
.env
__pycache__/
*.pyc
📄 许可证
本项目采用MIT许可证。
版权所有 (c) 2024
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,允许其无限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向其提供软件的人这样做,但须遵守以下条件:
上述版权声明和本许可声明应包含在所有副本或软件的重要部分中。
软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因合同、侵权或其他方式引起的任何索赔、损害或其他责任负责,无论是在与软件或软件的使用或其他交易有关的任何行动中。
本项目根据Unlicense许可发布到公共领域。
你可以自由使用、修改、分发和利用本软件,用于任何目的,包括商业和非商业用途,无需任何限制或归属要求。
更多详情,请参阅Unlicense。
作者
Kiet Tran (Leo Loves Coding)
支持
如有问题或疑问,请在仓库中创建一个issue。
Scan to join WeChat group