项目简介
本项目是一个MCP(Model Context Protocol)服务器实现,能够连接到GitHub API收集指定用户和仓库的活动数据(如Issue、Pull Request、评论、讨论),并将这些数据构建成协作关系图。构建的图可以存储在CSV文件或Neo4j数据库中。通过MCP协议,本项目将图数据的收集、加载和分析能力暴露给大模型客户端,使其能够利用这些信息进行更深入的交互或分析。
主要功能点
- GitHub数据收集: 根据指定的GitHub用户名、仓库所有者、仓库名称和时间范围,通过GitHub API收集相关活动数据。
- 数据存储: 支持将收集到的活动数据(表示为图的边)保存到CSV文件或写入Neo4j图数据库。
- 图数据加载: 能够从之前保存的CSV文件或Neo4j数据库中加载数据,在内存中构建一个网络图。
- 图数据分析: 对加载的图进行多种分析,包括节点和边的基本统计、度分布、中心性分析、连通性分析以及特定类型的关系分布等,提供关于协作网络的洞察。
- 获取边列表: 能够提取并提供图的边列表,方便客户端或大模型进一步处理或可视化。
- MCP工具暴露: 将数据收集、图分析和边列表获取等功能封装为MCP工具,通过标准的JSON-RPC协议供大模型客户端调用。
安装步骤
- 克隆仓库:
git clone https://github.com/geramirez/gh-graph-explorer.git cd gh-graph-explorer - 安装依赖: 确保已安装 Python 3.8+ 和 'uv'(或 'pip')。使用 'uv' 安装依赖:
注意:'requirements.txt' 文件在仓库中未直接提供,假设其中包含了 'fastmcp'、'gql'、'neo4j'、'networkx' 等必要的库。uv sync # 或 pip install -r requirements.txt - 获取GitHub Token: 生成一个具有读取仓库('read:org', 'read:user', 'read:public_key', 'read:repo_hook' 等相关权限)的GitHub个人访问令牌。
- 设置环境变量: 将您的GitHub Token设置为环境变量 'GITHUB_TOKEN':
- Linux/macOS: 'export GITHUB_TOKEN="your_github_token_here"'
- Windows (cmd): 'set GITHUB_TOKEN="your_github_token_here"'
- Windows (PowerShell): '$env:GITHUB_TOKEN="your_github_token_here"'
- Neo4j设置(可选): 如果计划使用Neo4j存储或加载数据,需要安装并运行Neo4j数据库,并设置相应的环境变量 'NEO4J_URI', 'NEO4J_USERNAME', 'NEO4J_PASSWORD'。
服务器配置 (供MCP客户端使用)
要将此服务器集成到支持MCP协议的大模型客户端(如Claude Desktop),您需要在客户端的配置中添加以下信息。这通常是一个JSON格式的配置文件。
{ "mcpServers": { "gh-graph-explorer": { // 服务器的唯一名称,客户端将使用此名称识别 "command": "uv", // 启动服务器的可执行命令 "args": [ // 传递给命令的参数列表 "--directory", // uv 参数:指定工作目录 "path to directory", // 替换为 gh-graph-explorer 仓库的实际路径 "run", // uv 参数:运行模块 "mcp_server.py" // 要运行的 MCP 服务器入口文件 ], "env": { // 服务器进程所需的环境变量 "GITHUB_TOKEN": "YOUR_GITHUB_TOKEN", // 您的 GitHub 个人访问令牌 (必须设置) "NEO4J_PASSWORD": "your_neo4j_password", // Neo4j 密码 (如果使用 Neo4j) "NEO4J_USERNAME": "your_neo4j_username", // Neo4j 用户名 (如果使用 Neo4j) "NEO4J_URI": "your_neo4j_uri" // Neo4j 连接 URI (如果使用 Neo4j) } } } }
请将上述配置中的占位符(如 'path to directory', 'YOUR_GITHUB_TOKEN' 等)替换为您的实际值。MCP客户端会读取此配置并根据 'command' 和 'args' 启动服务器,通过 'env' 设置必要的环境变量,然后通过标准I/O (默认) 或 SSE 与服务器通信。
基本使用方法
一旦MCP服务器通过客户端配置并成功启动,大模型客户端将能够发现并调用该服务器提供的MCP工具。用户可以通过与大模型的对话或客户端界面来触发这些工具:
- 调用 'collect' 工具: 例如,通过对话指示大模型“请帮我收集用户 'geramirez' 在仓库 'geramirez/gh-graph-explorer' 最近 30 天的 GitHub 活动数据”,客户端可以调用 'collect' 工具并传递 'user="geramirez"', 'owner="geramirez"', 'repo="gh-graph-explorer"', 'days=30' 等参数。服务器将执行数据收集和保存操作。
- 调用 'analyze' 工具: 例如,“请分析一下刚才收集的图数据,看看主要有哪些类型的活动,以及哪些用户最活跃”,客户端可以调用 'analyze' 工具,并可选择传入 'dates' 或 'relationship_types' 等过滤参数。服务器将加载数据并返回分析结果。
- 调用 'get_network' 工具: 例如,“把图数据导出成边列表给我”,客户端可以调用 'get_network' 工具,获取图的边数据。
大模型客户端会负责向用户展示工具的执行结果。
信息
分类
开发者工具