绿色MCP
Greentic平台的执行器和组件工具 wasix:mcp 界面。工作区目前提供可重用的Rust 图书馆(greentic-mcp-exec)其可以加载Wasm组件、验证其来源, 在Greentic主机中导入并执行导出的MCP入口点。
工作区布局
greentic-mcp/
├─ crates/
│ ├─ mcp-adapter/ # MCP adapter component template (wasix:mcp@25.06.18)
│ └─ mcp-exec/ # executor library (package: greentic-mcp-exec)
└─ Cargo.toml # workspace manifestgreentic-mcp-exec
公共API:
use greentic_types::{EnvId, TenantCtx, TenantId};
use greentic_mcp_exec::{ExecConfig, ExecRequest, RuntimePolicy, ToolStore, VerifyPolicy};
use serde_json::json;
use std::path::PathBuf;
let tenant = TenantCtx {
env: EnvId("dev".into()),
tenant: TenantId("acme".into()),
team: None,
user: None,
trace_id: Some("trace-123".into()),
correlation_id: None,
deadline: None,
attempt: 0,
idempotency_key: None,
};
let cfg = ExecConfig {
store: ToolStore::LocalDir(PathBuf::from("./tools")),
security: VerifyPolicy::default(),
runtime: RuntimePolicy::default(),
http_enabled: false,
secrets_store: None,
};
let result = greentic_mcp_exec::exec(
ExecRequest {
component: "weather_api".into(),
action: "forecast_weather".into(),
args: json!({"location": "AMS"}),
tenant: Some(tenant),
},
&cfg,
)?;主要特点:
- 解析器 –从本地目录或单文件HTTP源(带缓存)读取Wasm字节。
- 验证器 –执行前检查摘要/签名策略。
- 描述桥梁 –呼叫
greentic:component/component@1.0.0描述工具实现它时的世界,直接从每个组件中显示模式/默认元数据。 - 跑者 –启动Wasmtime组件环境,注册
runner-host-v1进口自greentic-interfaces,并调用该工具的MCPexec出口。 - 错误 结构化错误类型将解析、验证和运行时失败映射到对调用者友好的变体。
mcp-adapter
访客组件模板:
- 出口
greentic:component/node@0.6.0和进口wasix:mcp@25.06.18. - 接受JSON有效载荷
{operation?, tool?, arguments?}:
- 默认为 list 当没有提供工具时;默认为 call 当工具存在时。 - 地图 list → list-tools, call → call-tool(tool, arguments). - 支持在运行时调用速记工具 operation 是一个工具id(例如 get_weather)有效载荷作为参数传递。
- 退货
{ok: true, result: ...}用于文本/图像/音频/资源(链接)块的内容/结构化内容/元和轻量级卡片/消息信封;诱导表面{ok: true, elicitation: ...}. - 错误使用
{ok: false, error { code, message, status, tool, protocol, details }}带代码MCP_TOOL_ERROR,MCP_ROUTER_ERROR,或MCP_CONFIG_ERROR. - 设计用于在包构建时与路由器组件组合;最终合并的工件是组件流应该引用的。
- 看
crates/mcp-adapter/README.md详细的有效载荷/响应合同和组成说明。
greentic-types
从crates.io中取出;提供 TenantCtx、标识符和多租户流的支持类型。
架构所有权
MCP节点配置模式随实现该工具的Wasm组件一起提供。每个组件负责返回 describe-json 有效载荷(匹配 greentic:component@1.0.0)包括其模式/默认值。此存储库仅桥接运行时协议,不尝试复制每个工具的JSON模式。
发展
rustup target add wasm32-wasip2
cargo fmt
cargo clippy --all-targets -- -D warnings
cargo test
RUN_ONLINE_TESTS=1 cargo test -p greentic-mcp-exec --test online_weather除非满足以下条件,否则将跳过在线天气集成测试 RUN_ONLINE_TESTS=1 已设置。
为了更快地运行本地MCP,请选择发布版本并启用Wasmtime缓存:
cargo run -p greentic-mcp-exec --release -- router --router /path/to/component.wasm --list-tools
cat > /tmp/wasmtime-cache.toml -v` 自动推。
- 然后,发布工作流运行,在调用之前进行调试和测试 `katyo/publish-crates@v2` 将更新的crates发布到crates.io。
- 发布是幂等的;如果指定的版本已经存在,工作流将成功退出,而不会推送任何新内容。
### MCP适配器发布
- greentic mcp为构建和发布mcp适配器 `wasix:mcp@25.06.18` 致GHCR:
- `ghcr.io/greenticai/greentic-mcp-adapter:25.06.18-v`
- `ghcr.io/greenticai/greentic-mcp-adapter:25.06.18-stable` (移动指针)
- 推送的工件是 `mcp_adapter_25_06_18.component.wasm`,实施 `greentic:component/node@0.6.0` 进口 `wasix:mcp@25.06.18`.
- 看 `.github/workflows/publish-mcp-adapter.yml` 和 `scripts/build_adapter.sh` 用于构建/发布步骤。
## 路线图
- 实施OCI和Warg解析器,包括签名验证。
- 发布规范文档,并添加由真实工具WASM支持的端到端示例。
## 许可证
MIT或Apache-2.0双重许可。看 `LICENSE-MIT` 和
`LICENSE-APACHE` 一旦添加到存储库中。