目录

ohmcp — OpenHarmony 原生 MCP 协议栈

面向 OpenHarmony 泛在操作系统的原生 MCP(Model Context Protocol)协议栈参考实现。 以 Rust 编写,针对端侧多 Agent 场景重新设计传输层与上下文通道,在与官方 MCP SDK 同语义的 JSON-RPC 基线对比下,实现显著的通信效率与延迟优化。

OpenHarmony 开源任务挑战赛 · 赛题一《泛在 OS 原生 MCP 协议栈》参赛作品。

核心设计

层 crate 说明
帧格式 ohmcp-core OHMF 二进制帧:17 字节定长头(magic/版本/标志/类型/request_id/长度),替代 JSON-RPC 文本信封
传输 ohmcp-transport Unix Domain Socket 帧化读写;写路径批量聚合减少 syscall,读路径增量零拷贝解码;可选双向共享内存大 payload 通道(memfd 环形缓冲 + SCM_RIGHTS fd 传递,上下行零套接字拷贝);DSoftBus Session 适配 PoC(softbus.rs)
上下文优化 ohmcp-cache LZ4 透明压缩(512B 阈值);内容寻址结果缓存 sha256(tool ‖ args),命中时仅回传 32 字节 CACHE_REF
安全 ohmcp-security HMAC-SHA256 挑战应答认证(令牌不过网);X25519 临时密钥交换(前向保密);会话级 ChaCha20-Poly1305 AEAD(帧头入 AAD 防篡改);工具粒度 ACL
服务端 ohmcpd 用户态守护进程,每连接异步任务,共享工具注册表与服务端缓存
客户端 ohmcp-client 单连接多路复用;“机会主义内联读”分发(顺序调用零任务切换,并发调用自动复用)
测试 ohmcp-bench 与 JSON-RPC 基线(对齐官方 SDK 传输语义)的七场景对比基准

性能(vs 官方 SDK 语义 JSON-RPC 基线)

同机 UDS、同一工具执行逻辑,仅协议栈不同(ohmcp 全程开启认证 + 加密):

场景 吞吐提升 p50 延迟 线上字节
latency-echo(5k 小消息) +20% ~ +65% −17% ~ −36% −3.8%
bulk-kb-search(5k 大结果) +15% ~ +20% −10% ~ −13% −81.0%
bulk-doc-64k(整文档拉取) +5% ~ +24% −13% ~ −21% −95.6%
bulk-doc-64k(共享内存通道) +52% −32% −99.8%
upload-256k(双向共享内存) +81% ~ +170% −47% ~ −67% −99.99%
repeat-cached(热点重复调用) +37% ~ +59% −26% ~ −36% −94.1%
pipeline-64(单连接 64 路复用) +138% ~ +157% −59% ~ −64% —
concurrent-16(16 Agent) +30% ~ +41% −23% ~ −33% —

(每场景 3 次运行取吞吐中位数,区间为多次完整基准运行观测范围)

七场景吞吐对比

复现:

cargo run --release -p ohmcp-bench -- --json bench-results.json
cargo run --release -p ohmcp-bench --bin demo   # 端到端多 Agent 演示

端到端演示输出

端到端多 Agent 演示

=== ohmcp 多 Agent 演示(认证 + 加密开启) ===

[voice-assistant] 可用工具: ["echo", "kb.search", "kb.dump", "kb.blob", "device.status", "math.sum"]
[voice-assistant] kb.search 首次调用: 991 字节, 98µs
[voice-assistant] kb.search 重复调用(线上仅 32 字节 CACHE_REF): 47µs
[voice-assistant] 本地缓存: 1 命中 / 0 未命中
[system-scheduler] device.status: {"content":[{"type":"text","text":"{\"battery\":87,...}"}]}
[calc-agent] math.sum: {"content":[{"type":"text","text":"100"}]}
[doc-agent] kb.dump 经共享内存通道: 65959 字节结果, 320µs(套接字仅 12 字节引用)
[doc-agent] 收到资源更新推送: ohmcp://docs/protocol
[doc-agent] 重读更新后内容: 协议文档已更新(v2)
[calc-agent] 越界调用被拒: server error: {"code":-32601,"message":"unknown tool: fs.delete_all"}
[rogue-agent] 错误令牌被拒: auth failed: Some("invalid token")

=== 演示完成:多 Agent 复用单守护进程,全程加密,缓存/订阅生效 ===

快速开始

# 构建(.cargo/config.toml 默认启用 target-cpu=native)
cargo build --release

# 启动守护进程(开启认证)
./target/release/ohmcpd --socket /tmp/ohmcpd.sock --token my-secret

# 客户端调用(库 API)
use ohmcp_client::OhmcpClient;

let c = OhmcpClient::connect("/tmp/ohmcpd.sock", "agent-1", Some(b"my-secret")).await?;
let tools = c.list_tools().await?;
let result = c.call_tool("kb.search", serde_json::json!({"query": "鸿蒙", "top_k": 5})).await?;

测试

cargo test --workspace                     # 42 单元 + 17 端到端集成测试,59 项全绿
cargo clippy --workspace --all-targets -- -D warnings   # 零警告(CI 强制)

CI(GitHub Actions):fmt + clippy(-D warnings) + 全量测试 + 基准烟雾。

文档

许可证

Apache-2.0。全部代码为原创实现,第三方仅以 crates.io 依赖形式引用。

关于

OpenHarmony原生MCP协议栈 - 第八届CCF开源创新大赛 OpenHarmony开源任务挑战赛 赛题一

2.5 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号