e2m2e.api.mcp#

MCP 服务子包(ADR 0014)。

  • envelope:统一信封 {status, data, error, meta} 与异常翻译。

  • tools:由 Facade 纯派生的工具规格(placeholder 不注册)。

  • worker:长任务 worker 子进程(JSON 行协议,不依赖 [mcp] extra)。

  • server:create_server(facade)``(依赖 ``[mcp] extra)。

工具面派生、执行策略(LONG_RUNNING_TOOLS)、帧契约的单一来源在执行核心 e2m2e.api.execution``(#601):不依赖 ``[mcp] extra 的消费方(sidecar、 worker)直接从那里导入,不经本包转口——本包的惰性导出会拽起 server 的 SDK 依赖。

server 惰性导出:sidecar(ADR 0035)复用 envelope/tools 但不依赖 [mcp] extra,本包在缺 mcp 库时仍可导入。

Submodules#

Classes#

ToolSpec

一个可注册的 MCP 工具规格。

Functions#

error_envelope(→ Envelope)

构造失败信封。

invoke_tool(→ Envelope)

执行一个 Facade 工具方法并包成信封。

ok_envelope(→ Envelope)

构造成功信封。

tool_spec(→ ToolSpec | None)

单个工具的规格:按需构造 schema,不重建全量清单(#601)。

tool_specs(→ list[ToolSpec])

由暴露类纯派生工具规格(placeholder 不注册)。

Package Contents#

e2m2e.api.mcp.error_envelope(code: str, message: str, details: dict[str, Any] | None = None) → Envelope#

构造失败信封。

e2m2e.api.mcp.invoke_tool(method: Any, arguments: dict[str, Any], *, extra_kwargs: dict[str, Any] | None = None) → Envelope#

执行一个 Facade 工具方法并包成信封。

入参经 request_model 校验(ValidationError → INVALID_PARAMS), OrbitError 原样翻译,其余异常归为 ``INTERNAL_ERROR``(只保留异常类型 名,不泄漏 traceback)。校验与错误翻译见 dispatch_tool()。

e2m2e.api.mcp.ok_envelope(data: Any, meta: dict[str, Any] | None = None) → Envelope#

构造成功信封。

class e2m2e.api.mcp.ToolSpec#

一个可注册的 MCP 工具规格。

name: str#
description: str#
input_schema: dict[str, Any]#
method: collections.abc.Callable[..., Any]#
e2m2e.api.mcp.tool_spec(facade: Any, name: str) → ToolSpec | None#

单个工具的规格:按需构造 schema,不重建全量清单(#601)。

属主解析跨暴露类(ADR 0043 决策 5,单一入口 resolve_tool_method());无 exposed_apis 的 单一对象(测试桩)按自身解析。未知工具或 placeholder 返回 None—— placeholder 不注册,调用未知工具同义。

e2m2e.api.mcp.tool_specs(facade: Any) → list[ToolSpec]#

由暴露类纯派生工具规格(placeholder 不注册)。