一个最小的、以生产为导向的MCP形状的工具服务器脚手架,用于构建具有类型化工具契约、显式调用语义和确定性JSON I/O的代理AI服务,通过FastAPI提供服务。此项目提供了一个可运行的启动器,用于以MCP样式的模式将工具暴露给代理运行时:
显式工具注册表\ 机器可读输入模式\ 键入请求/响应合同\ 确定性调用表面\ 清洁的生命周期和错误处理\ 可测试且CI已验证
服务器公开了三个核心HTTP表面\ 客户端/代理运行时 | |GET/工具→ 发现可用的工具+模式 |POST/调用→ 使用键入的JSON参数调用工具 |获取/健康z→ 活性判别 | FastAPI运行时 | 类型验证(Pydantic) | 工具执行 | 结构化JSON结果或错误
工具定义\ 一个稳定的名字 人类可读的描述 机器可读的输入模式 严格键入的输出形状
工具包括\ sayHello–返回带有时间戳的问候语 reverse–反转输入文本并返回元数据
在本地运行\ 创建并激活虚拟环境:\ python-m venv.venv\ source.ven/bin/activate\ pip安装-U pip\ pip安装-e“.\[dev\]”
启动服务器\ ./scripts/run_local.sh
健康检查\ 卷曲http://127.0.0.1:8000/healthz
列出可用工具(包括模式)\ 卷曲http://127.0.0.1:8000/tools|python-m json.tool
调用工具\ 卷曲http://127.0.0.1:8000/invoke \\ -H'内容类型:应用程序/json'\\ d\ “tool”:“sayHello”,\ “args”:{“name”:“Dennis”},\ “trace_id”:“demo-1”\ }'|python-m json.tool
测试\ python-m pytest-q
测试套件验证\ 工具发现\ 输入验证\ 调用成功\ 未知工具的错误行为
GitHub操作工作流\ 依赖项安装\ 用Ruff打闹\ 通过pytest提供完整的测试套件
