MCP发布服务器
提供GitHub发布信息和PyPI包版本的MCP(模型上下文协议)服务器。
特性
- GitHub发布:从任何GitHub存储库查询最新稳定版本
- PyPI集成:查找Python包的最新生产版本
- 智能回退:当GitHub版本不可用时,自动回退到PyPI
- 存储库别名:为常用存储库配置短别名
工具
get_latest_release-返回GitHub存储库的最新稳定版本(带PyPI回退)get_pypi_version-直接向PyPI查询任何Python包的最新稳定版本
配置
环境变量
创建可选 .env 在项目根目录下的文件中配置GitHub令牌:
export GITHUB_TOKEN="github_pat_TOKEN"GitHub令牌是可选的,但建议避免API速率限制。服务器将在没有它的情况下工作,但速率限制较低。
存储库映射
在中配置存储库别名和PyPI包 repo_mapping.json:
{
"fastapi": {
"repo": "tiangolo/fastapi",
"aliases": ["FastAPI"],
"pypi_package": "fastapi"
},
"nomad": {
"repo": "hashicorp/nomad",
"aliases": ["Nomad"]
}
}领域:
repo:GitHub存储库位于owner/name格式(必填)aliases:此存储库的备选名称列表(可选)pypi_package:用于回退查找的PyPI包名称(可选)
使用Docker运行
docker-compose up --build服务器将在以下时间可用 http://localhost:8000/mcp.
本地运行
uv sync
uv run uvicorn server:app --host 0.0.0.0 --port 8000VSCode集成
将以下内容添加到VSCode设置中(.vscode/mcp.json 或用户设置):
{
"mcp": {
"servers": {
"releases-server": {
"url": "http://localhost:8000/mcp"
}
}
}
}或添加到 ~/.vscode/mcp.json:
{
"servers": {
"releases-server": {
"url": "http://localhost:8000/mcp"
}
}
}添加配置后,重新启动VSCode或重新加载窗口。这 get_latest_release 和 get_pypi_version Copilot将可以使用这些工具。
PyPI集成
运作原理
服务器包括两种查询PyPI的方法:
- 直接PyPI查找:使用
get_pypi_version()直接向PyPI查询任何包 - 自动回退:何时
get_latest_release()找不到GitHub版本,如果出现以下情况,它会自动检查PyPIpypi_package配置在repo_mapping.json
PyPI功能
- 过滤掉预发布和开发版本
- 仅返回稳定的生产版本
- 包括包元数据(摘要、主页、URL)
- 优雅地处理不存在的包
使用示例
直接PyPI查找:
from server import get_pypi_version
# Query any package directly
result = get_pypi_version("django")
print(result)
# Output:
# Latest stable version for django (from PyPI):
# Version: 6.0.1
# Summary: A high-level Python web framework...
# PyPI URL: https://pypi.org/project/django/6.0.1/自动回退:
from server import get_latest_release
# Configure in repo_mapping.json:
# {
# "my-package": {
# "repo": "owner/repo",
# "pypi_package": "my-package"
# }
# }
# If GitHub fails, automatically falls back to PyPI
result = get_latest_release("my-package")测试PyPI集成:
uv run python3 -c "
from server import get_latest_pypi_version
result = get_latest_pypi_version('requests')
print(f\"Version: {result['version']}\")
"运行集成测试
使用以下命令运行集成套件 pytest (依赖关系由以下人员临时处理 uv).测试将自动加载 GITHUB_TOKEN 来自你的 .env 文件(如果存在):
uv run pytest test_integration.py -v或运行特定的测试类别:
# Test GitHub functionality
uv run pytest test_integration.py -k "github" -v
# Test PyPI functionality
uv run pytest test_integration.py -k "pypi" -v
# Test with verbose output
uv run pytest test_integration.py -v -s