更新日志¶
本项目的所有重要变更都将记录在此文件中。
格式基于 Keep a Changelog,并在需要时保留项目自身的分类方式。
[0.3.3] - 2026-05-31¶
修复¶
- 在
RouteTable边界规范化路由参数 schema,使所有服务适配器都收到标准 object schema。 - 确保 MCP
tools/list响应始终输出 object 形态的inputSchema。 - 增强 OpenAPI 请求模型生成逻辑,兼容空 schema 或非 object 参数 schema。
- 将
toolregistry最低版本要求提升至>=0.11.1,以获得 core 包中的 schema 生成修复。
[0.3.2] - 2026-05-28¶
变更¶
toolregistry最低版本要求提升至>=0.11.0,下游包可依赖最新的ToolConfig元数据字段。- 将 complexipy pre-commit 钩子切换为官方
complexipy-pre-commit,并使用明确的文件过滤。
[0.3.1] - 2026-05-19¶
新增¶
- 路由列表现在会过滤 deferred 工具,与服务端注册表的渐进式披露行为保持一致。
- 部署 profile 过滤现在支持通过配置文件覆盖。
变更¶
toolregistry最低版本要求提升至>=0.10.2。
[0.3.0] - 2026-05-18¶
新增¶
--profileCLI 标志:基于部署场景的标签过滤。--profile remote通过ToolRegistry.disable_by_tags()禁用带file_system、destructive或privileged标签的工具;--profile local不做任何过滤。profile参数同样在run_openapi_server()和run_mcp_server()中以编程方式暴露(#30)。create_registry_from_config()支持 post-register hook:函数新增可选参数post_register_hooks: list[PostRegisterHook] | None。hooks 在任何 source 加载前注册到ToolRegistry;hook 返回非空字符串时自动 disable 对应工具(#31)。apply_profile(registry, profile):新增公开辅助函数,可对任意ToolRegistry应用命名的 profile 过滤。profile→tag 映射通过PROFILE_DISABLE_TAGS字典管理,便于扩展。
变更¶
toolregistry最低版本要求提升至>=0.10.1,以获取disable_by_tags()和add_post_register_hook()。
[0.2.2] - 2026-05-18¶
变更¶
run_openapi_server()和run_mcp_server()支持传入预构建的 registry:两个函数新增可选参数registry: ToolRegistry | None。当提供该参数时,config_path将被忽略,create_registry_from_config不会被调用,下游包可直接注入自定义 registry 而无需重新实现完整的启动流程(#28)。
[0.2.1] - 2026-05-10¶
变更¶
- 将零依赖 vendored 模块重组至
_vendor/子包,结构更清晰。 - 将
loguru替换为轻量级 vendored structlog shim,消除外部日志依赖。 - 将
complexipy切换为本地 pre-commit 钩子。
修复¶
- 将
_vendor/目录从ruff检查中排除,避免对 vendored 代码产生误报。
[0.2.0] - 2026-05-06¶
新增¶
- 统一配置系统:
run_openapi_server()和run_mcp_server()现支持通过--config参数从 JSONC/YAML 配置文件加载工具,支持 Python 类/模块、MCP 服务器和 OpenAPI 端点三种来源,以及拒绝列表/允许列表过滤(#24)。
变更¶
- 适配
toolregistry >= 0.9.1API 变更(废弃的toolregistry.openapi导入路径已迁移至toolregistry.integrations.openapi)。
[0.1.3] - 2026-04-15¶
新增¶
- MCP 会话上下文透传:工具处理函数现可接收 MCP 会话上下文对象,支持有状态的工具实现。
修复¶
- 在 OpenAPI 适配器将输入传递给处理函数前,剔除框架注入的字段(如
__mcp_session__),避免意外的关键字参数错误。 - 将
python-dotenv替换为零依赖的 vendored dotenv 加载器,消除外部依赖。 - 现要求
toolregistry >= 0.6.1以获取 kwargs JSON Schema 修复。
[0.1.2] - 2026-03-22¶
新增¶
- MCP 适配器参数校验:
RouteEntry现在携带来自Tool的parameters_model,在调用处理程序前通过 Pydantic 进行类型强转(例如字符串"8"→int(8))。修复了与将所有参数序列化为字符串的 MCP 客户端(如 Codex)的兼容性问题。
变更¶
- MCP
call_tool处理程序现使用validate_input=False绕过 MCP SDK 的严格 JSON Schema 校验,将类型验证委托给 Pydantic 更宽松的类型强转机制。
[0.1.1] - 2026-03-18¶
修复¶
- RouteTable 与 ToolRegistry 同步:RouteTable 现在能正确同步 ToolRegistry 的外部状态变更(例如在适配器层之外添加/移除/切换工具)。
- 命名空间级别的启用/禁用:修复了 RouteTable 同步中命名空间级别启用/禁用操作的处理,确保批量切换正确传播到命名空间内的所有工具。
变更¶
- 要求
toolregistry >= 0.6.0以支持 RouteTable 同步所使用的on_change回调。
[0.1.0] - 2026-03-14¶
toolregistry-server 作为独立包的首次发布,从 toolregistry-hub 中分离。
新增¶
- 中央路由表(
RouteTable、RouteEntry):统一的路由层,桥接ToolRegistry和协议适配器,支持 ETag 版本控制、观察者模式和动态启用/禁用(#2、PR #7) - OpenAPI 适配器:基于 FastAPI 的 REST API 适配器,自动从 JSON Schema 生成 Pydantic 模型、动态 OpenAPI 模式、按命名空间分组工具(#3、PR #8)
- MCP 适配器:模型上下文协议适配器,包含
list_tools/call_tool处理程序,支持 stdio、SSE 和可流式 HTTP 传输(#4、PR #9) - ETag 缓存:为
/tools和/openapi.json端点提供 HTTP 缓存中间件,支持If-None-Match条件请求(#5、PR #10) - 命令行工具:包含
openapi和mcp子命令的 CLI,支持 JSON/JSONC 配置、可自定义的启动横幅(#6、PR #11、PR #13) - 认证:Bearer 令牌认证模块,支持多令牌、运行时令牌管理和动态启用/禁用
- .env 文件加载:支持从
.env文件加载环境变量,提供--env-file和--no-envCLI 选项(PR #14)