网球阶梯MCP服务器
一个基于Python的MCP(模型上下文协议)服务器,提供工具以跨多个城市(如卡里、奥斯汀、夏洛特、罗利等)与网球排名API进行交互
特点/功能
- 多城市支持连接到任意一个Tennis Ladder实例(卡里、奥斯汀、夏洛特、罗利等)
- 获取联赛设置检索联赛配置和设置
- 获取锦标赛排名获取特定比赛、赛季和级别的玩家排名
- 获取用户统计数据访问详细的球员资料和表现数据
安装
此服务器已在您的MCP设置中安装并配置完毕。
要求
- Python 3.10及以上版本
- UV包管理器
- 依赖项:mcp、httpx、pydantic
可用工具
1. 获取联赛设置
检索特定城市的联赛配置和设置。
参数:
city(字符串,可选):城市名称(默认:“cary”)。支持的城市包括:cary、austin、charlotte、raleigh 等。
示例:
"Get the league settings for Cary Tennis Ladder"
"Get the league settings for Austin Tennis Ladder"
"Get the league settings" (defaults to Cary)2. 获取锦标赛排名
获取锦标赛排名和选手排名。
参数:
city(字符串,可选):城市名称(默认:“cary”)。支持的城市包括:cary、austin、charlotte、raleigh 等。tournament_id(数字,可选):锦标赛ID(默认:1)year(数字,必填):年份(例如,2025)season(字符串,必填):季节 - “秋季”、“春季”、“夏季”或“冬季”level(字符串,必填):比赛级别(例如,“mens-35”表示男子35岁组,“womens-40”表示女子40岁组)
示例:
"Show me the tournament standings for mens-35 fall 2025 in Cary"
"Get the current rankings for womens-40 spring 2025 in Austin"
"Show me the tournament standings for mens-35 fall 2025" (defaults to Cary)3. 获取用户统计数据
获取特定球员的详细统计数据和资料信息。
参数:
city(字符串,可选):城市名称(默认:“cary”)。支持的城市包括:cary、austin、charlotte、raleigh 等。slug(字符串,必填):玩家用户名/别名(例如,“john-doe”)
示例:
"Get stats for player John Doe in Cary"
"Show me the profile for John Doe in Austin"
"Get stats for player John Doe in fall 2025 season" (defaults to Cary)项目结构
tennis-ladder-server/
├── src/
│ └── tennis_ladder_server/
│ ├── __init__.py
│ ├── server.py # Main MCP server with 3 tools
│ ├── models.py # Pydantic data models
│ └── api/
│ ├── __init__.py
│ └── client.py # Async HTTP client
├── .venv/ # Virtual environment
├── pyproject.toml # Project configuration
└── README.md发展
安装服务器
克隆或修改项目后,使用以下命令进行安装:
uv pip install -e .这注册了 tennis-ladder-server 将命令作为入口点。
本地运行
cd /Users/UserName/PathToMCP/tennis-ladder-server
uv run tennis-ladder-server安装依赖项
uv sync
uv pip install -e .做出改变
- 编辑Python文件中的内容
src/tennis_ladder_server/ - 无需构建步骤(Python 是解释型语言)
- 重启MCP服务器以查看更改
测试
该项目包括全面的单元测试和集成测试,以确保可靠性。
运行测试
运行所有测试:
pytest运行测试并生成覆盖率报告:
pytest --cov=src/tennis_ladder_server --cov-report=html运行特定的测试文件:
pytest tests/test_client.py # Client tests only
pytest tests/test_server.py # Server tests only
pytest tests/test_integration.py # Integration tests only按标记运行测试:
pytest -m unit # Unit tests only
pytest -m integration # Integration tests only测试结构
tests/
├── __init__.py
├── conftest.py # Shared fixtures and configuration
├── test_client.py # Unit tests for TennisLadderClient
├── test_server.py # Unit tests for MCP server tools
└── test_integration.py # Integration tests测试覆盖率
测试套件涵盖:
- 客户端初始化 不同的城市
- API方法调用 (获取设置,获取锦标赛排名,获取用户信息)
- 错误处理 (HTTP错误,意外错误)
- 资源清理 (客户关闭)
- MCP工具处理程序 (全部三种工具)
- 多城市支持 在不同的网球排名系统中
- 端到端流程 从工具调用到API响应
- 并发请求处理
- 数据验证和JSON序列化
安装测试依赖项
项目中已包含测试依赖项。请使用以下命令进行安装:
uv sync所需的测试包:
- pytest
- \
pytest-asyncio\翻译成中文是“pytest 异步支持插件”或“用于 pytest 的异步测试插件”。这个插件允许在 pytest 中编写和运行异步测试,支持使用 \async\和 \await\关键字的异步代码 - \
pytest-cov\翻译成中文是“pytest 覆盖率插件” - \
pytest-mock\翻译为中文是“pytest 模拟插件”或“用于 pytest 的 mock 工具”。这个插件或工具主要用于在使用 pytest 进行单元测试时,提供模拟(mock)功能,以便测试代码中的函数、方法或对象,尤其是在这些被测试的元素依赖于外部资源或复杂逻辑时
持续测试
对于开发,您可以以监视模式运行测试:
pytest --watch或者使用 pytest-xdist 进行并行执行:
pytest -n autoAPI终端点
服务器根据城市参数动态连接到网球排名API端点:
POST https://{city}.tennis-ladder.com/api/settings- 联赛设置GET https://{city}.tennis-ladder.com/api/tournaments/{id}- 锦标赛排名PUT https://{city}.tennis-ladder.com/api/users/0- 用户信息
支持的城市Cary(默认)、Austin、Charlotte、Raleigh以及其他Tennis Ladder实例
配置
在您的MCP设置中,服务器已配置于: /Users/UserName/Library/Application Support/Code/User/globalStorage/kilocode.kilo-code/settings/mcp_settings.json
{
"mcpServers": {
"tennis-ladder": {
"command": "uv",
"args": [
"--directory",
"/Users/UserName/PathToMCP/tennis-ladder-server",
"run",
"tennis-ladder-server"
]
}
}
}故障排除
服务器无法启动
- 检查Python版本:
python --version(需要3.10+) - 验证uv是否已安装:
uv --version - 重新安装依赖项:
uv sync
API 错误
- 验证网球积分排名网站是否可访问
- 检查网络连接
- 检查响应中的错误信息
许可证
麻省理工学院(MIT)
