GitHub Fetcher
该项目旨在为大型模型提供一种简单的方法来访问GitHub中的代码文件,并最大限度地减少上下文中的噪音。
一个MCP服务器,通过stdio显示一组集中的GitHub读取端点(仓库、标签、分支、树、文件、统计数据、搜索),以便代理可以只获取他们需要的代码和元数据。
快速启动
- 安装Rust(2024版)并确保
cargo可用。 - 导出GitHub令牌(建议避免速率限制):
export GITHUB_AUTH_TOKEN=ghp_yourtoken. - 运行服务器:
cargo run -- --token-env GITHUB_AUTH_TOKEN. - 将MCP客户端指向stdio传输;默认情况下,所有工具都已启用。限制接触
--tools get_repo,list_repos,tree(逗号分隔)。
CLI标志
--api-base(https://api.github.com默认):覆盖GitHub Enterprise或测试。--token:个人访问令牌;如果省略,--token-env使用。--token-env(GITHUB_AUTH_TOKEN默认值):env-var-name,用于从中读取令牌;设置为空字符串以跳过env查找。--tools:限制暴露哪些工具(get_repo,list_tags,list_branches,tree,get_file,list_repos,search,get_stats).
答复说明
tree和get_stats发出type值:file,dir,symlink,或submodule.get_file可以通过以下方式修剪内容line_range或max_chars(UTF-8安全)。范围从1开始,包括1和2;字符串类似1..200,1...200,..200,1..,1:200,1:,:200,或单个数字N意义线1..=N.list_repos透明地尝试用户和组织范围。
Tools, inputs, and outputs
get_repo
- 输入:
owner(字符串),repo(字符串) - 输出:
repo(可以为null)description(字符串?),stars(u64),forks(u64),license(对象?与key,name,spdx_id,url)
list_tags
- 输入:
owner(字符串),repo(字符串) - 输出:
tags(标签名称数组)
list_brances
- 输入:
owner(字符串),repo(字符串) - 输出:
branches(分支名称数组)
list_repos
- 输入:
owner(字符串),page(使用?,可选),per_page(使用?,可选) - 输出:
repos(数组)带name,full_name,private(布尔),description(字符串?),html_url
树
- 输入:
owner(字符串),repo(字符串),path(string?,默认为root),depth(使用,默认为1,最小值1),ref(字符串?,git ref) - 输出:
entries(树节点阵列),每个节点具有type,name,size(u64?),target(字符串?表示符号链接),submodule_git_url(字符串?),children(嵌套条目)
获取文件
- 输入:
owner(字符串),repo(字符串),path(字符串),ref(string?,git ref),line_range(字符串格式如1..200,1...200,..200,1..,1:200,1:,:200,或一个数字N),max_chars(使用?) - 输出:
content(字符串,解码和可选修剪)
搜索
- 输入:
query(string,支持GitHub代码搜索限定符),page(使用?,可选),per_page(使用?,可选) - 输出:
results(数组)带name,path,repository(满owner/repo)
get_stats
- 输入:
owner(字符串),repo(字符串),path(字符串),ref(字符串?,git ref) - 输出:
item随着type,name,path,size(u64?),target(字符串?),submodule_git_url(字符串?)
发展
- 格式由处理
rustfmt;运行测试cargo test. - 服务器使用以下命令通过stdio与MCP通信
rmcp;没有暴露HTTP服务器。
