本指南为 SeaTunnel MCP 项目的开发者提供指导,包括如何设置开发环境、代码贡献流程和测试方法。
# 克隆仓库 git clone <repository_url> cd seatunnel-mcp # 创建并激活虚拟环境 python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # 安装开发依赖 pip install -e ".[dev]"
pip install pre-commit pre-commit install
seatunnel-mcp/ ├── docs/ # 文档 ├── examples/ # 示例配置文件 ├── src/ │ └── seatunnel_mcp/ # 主要源代码 │ ├── __init__.py │ ├── __main__.py # 入口点 │ ├── client.py # SeaTunnel API 客户端 │ ├── tools.py # MCP 工具定义 │ └── schema.py # 数据模型定义 ├── tests/ # 测试 ├── .env.example # 环境变量示例 ├── pyproject.toml # 项目配置 └── README.md # 项目说明
client.py
中为 SeaTunnel API 添加相应的方法tools.py
中创建相应的 MCP 工具get_all_tools()
函数以包含新工具示例:添加一个新的工具来获取日志信息
# 在 client.py 中 def get_job_logs(self, jobId: Union[str, int]) -> Dict[str, Any]: """获取作业日志信息。""" response = self._make_request("GET", f"/job-logs/{jobId}") return response.json() # 在 tools.py 中 def get_job_logs_tool(client: SeaTunnelClient) -> Tool: """获取作业日志的工具。""" async def get_job_logs(jobId: Union[str, int]) -> Dict[str, Any]: return client.get_job_logs(jobId=jobId) return Tool( name="get-job-logs", description="获取指定作业的日志信息", fn=AsyncToolFn(get_job_logs), parameters=models.ParametersSchema( properties={ "jobId": models.ParameterSchema( type="string", description="作业 ID", ), }, required=["jobId"], ), ) # 更新 get_all_tools 函数 def get_all_tools(client: SeaTunnelClient) -> List[Tool]: return [ # ... 现有工具 get_job_logs_tool(client), ]
你可以使用以下命令执行这些检查:
# 代码格式化 black src tests # 导入排序 isort src tests # 类型检查 mypy src # 代码风格检查 flake8 src tests
使用 pytest 运行单元测试:
pytest -xvs tests/
带覆盖率报告:
pytest --cov=src tests/
使用 MCP Inspector 进行手动测试:
npx @modelcontextprotocol/inspector python -m src.seatunnel_mcp
对于集成测试,你需要一个运行中的 SeaTunnel 实例。可以使用 Docker 启动一个测试实例:
docker run -d --name seatunnel -p 8090:8090 apache/seatunnel:latest
然后运行集成测试:
pytest -xvs tests/integration/
__init__.py
和 pyproject.toml
中)python -m build twine upload dist/*
如有问题或需要支持,可以: