这是一个基于Model Context Protocol (MCP)的服务器,通过FastMCP接口提供全面访问MLB统计数据和棒球数据的功能。
此MCP服务器作为AI应用程序与MLB数据源之间的桥梁,使棒球统计信息、比赛信息、球员数据等能够无缝集成到AI工作流程和应用程序中。
所有MLB/统计数据/比赛/球员/球队等功能都作为MCP工具暴露,而不是RESTful HTTP端点。这些工具可以通过使用MCP协议的/mcp/端点访问。要查看可用工具及其描述,请在服务器运行时访问/tools/。
get_mlb_standings - 当前MLB排名,支持按联盟和赛季筛选get_mlb_schedule - 特定日期、日期范围或球队的比赛日程get_mlb_team_info - 详细的球队信息get_mlb_player_info - 球员传记信息get_mlb_boxscore - 完整的比赛比分板get_mlb_linescore - 局分比赛分数get_mlb_game_highlights - 比赛视频亮点get_mlb_game_scoring_plays - 逐球数据,支持事件筛选get_mlb_game_pace - 比赛持续时间和节奏统计get_mlb_game_lineup - 比赛的详细出场名单get_multiple_mlb_player_stats - 传统的球员统计get_mlb_sabermetrics - 高级的棒球统计(WAR, wOBA等)get_mlb_roster - 各种类型的球队阵容get_mlb_search_players - 按姓名搜索球员get_mlb_search_teams - 按姓名搜索球队get_mlb_players - 某项运动/赛季的所有球员get_mlb_teams - 某项运动/赛季的所有球队get_mlb_draft - 按年份的选秀信息get_mlb_awards - 获奖者get_current_date - 当前日期get_current_time - 当前时间要查看完整的列表和详细描述,请在服务器运行时访问/tools/或/docs。
以下HTTP端点可用:
/ - 重定向到/docs/docs - 交互式API文档和工具列表/health/ - 健康检查端点/mcp/info - MCP服务器信息/tools/ - 所有可用MCP工具的列表/mcp/ (POST) - MCP协议端点,用于兼容MCP的客户端注意:没有MLB/统计数据/比赛/球员/球队等的RESTful HTTP端点。所有此类功能都是通过
/mcp/端点的MCP工具访问的。
要通过Smithery自动安装MLB API服务器到Claude Desktop:
npx -y @smithery/cli install @guillochon/mlb-api-mcp --client claude
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/guillochon/mlb-api-mcp.git
cd mlb-api-mcp
uv venv
source .venv/bin/activate # 在Unix/macOS上
# 或
.venv\Scripts\activate # 在Windows上
uv pip install -e .
git clone https://github.com/guillochon/mlb-api-mcp.git
cd mlb-api-mcp
docker build -t mlb-api-mcp .
docker run -p 8000:8000 mlb-api-mcp
要在本地时区运行容器,传递TZ环境变量(例如,对于纽约):
docker run -e TZ=America/New_York -p 8000:8000 mlb-api-mcp
用您的所需IANA时区名称替换America/New_York。
服务器将在http://localhost:8000上可用,包括:
http://localhost:8000/mcp/http://localhost:8000/docs您还可以使用其他选项运行容器:
# 以分离模式运行
docker run -d -p 8000:8000 --name mlb-api-server mlb-api-mcp
# 使用自定义端口映射
docker run -p 3000:8000 mlb-api-mcp
# 查看日志
docker logs mlb-api-server
# 停止容器
docker stop mlb-api-server
# 删除容器
docker rm mlb-api-server
本地运行MCP服务器:
# 对于stdio传输(默认,适用于Smithery等MCP客户端)
uv run python main.py
# 对于HTTP传输(适用于Web访问)
uv run python main.py --http
服务器将以以下方式启动:
http://localhost:8000/mcp/http://localhost:8000/docs可用此服务器可以集成到任何兼容MCP的应用程序中。服务器提供了以下工具:
一旦服务器运行,访问http://localhost:8000/docs即可获得全面的API文档,包括:
/tools/本项目使用:
pip install pre-commit
pre-commit install
现在,每当您提交代码时,代码检查都会自动运行。您也可以手动运行它们:
pre-commit run --all-files
欢迎贡献!请随时提交问题或拉取请求。
本项目是开源的。请参阅许可证文件了解详情。
本项目包括全面的测试覆盖率,并生成覆盖率报告。
# 运行所有测试并生成覆盖率报告(默认)
uv run pytest
# 运行带有详细输出的测试
uv run pytest -v
# 运行特定测试文件
uv run pytest tests/test_mlb_api.py
# 运行特定测试函数
uv run pytest tests/test_mlb_api.py::test_get_mlb_standings
# 不带覆盖率运行测试
uv run tests/run_coverage.py test
# 生成HTML覆盖率报告
uv run tests/run_coverage.py html
# 清理覆盖率文件
uv run tests/run_coverage.py clean
mlb_api.py 和 generic_api.pyhtmlcov/index.html)和XML(coverage.xml)测试套件包括:
添加新功能时:
tests/test_mlb_api.py中添加相应的测试案例示例测试结构:
def test_new_function_success(mcp):
"""测试新功能的成功执行"""
new_function = get_tool(mcp, 'new_function')
with patch('mlb_api.external_api_call', return_value={'data': 'success'}):
result = new_function(param='value')
assert 'data' in result
def test_new_function_error_handling(mcp):
"""测试新功能的错误处理"""
new_function = get_tool(mcp, 'new_function')
with patch('mlb_api.external_api_call', side_effect=Exception("API Error")):
result = new_function(param='value')
assert 'error' in result