目录

ohos-native-mcp

原生 MCP 协议栈原型 —— 面向泛在操作系统(OpenHarmony)的 Model Context Protocol 传输/上下文/安全三层实现。

本仓库是 OpenHarmony 开源任务挑战赛「赛题一:泛在操作系统原生的 MCP 协议栈设计」的初赛源代码交付物,配套设计文档见 docs/(另有赛道设计文档 MCP协议栈设计.md)。

定位:这是一个宿主机可编译、可运行、可复现基准的 C++ 原型,用来验证「把 MCP 的传输层换成 OS 原生 IPC」在性能、通信效率、安全三项赛题硬指标上的真实收益。它不依赖 OpenHarmony 全量源码即可跑通全部基准;与 OpenHarmony communication_ipc / AccessToken / SAMgr 的对接点见 docs/OHOS_INTEGRATION.md(诚实标注哪些需 OHOS 构建环境)。

为什么要 OS 原生 MCP

MCP 把「语义层(JSON-RPC 2.0 的 initialize / tools/list / tools/call …)」与「传输层(stdio / SSE / Streamable-HTTP)」刻意解耦。现状传输在端侧多 Agent 同机互调场景下不划算:即便本机也要走 loopback TCP + HTTP 报文解析 + 每会话建连,大上下文还要反复 JSON 编解码与 memcpy。本原型保持语义层与生态兼容,只把传输层换成 OS 原生信道(此处用 Unix domain socket + 连接池化作为 OpenHarmony IPC/Binder 的宿主机等价物),并叠加上下文效率层与安全层。

三层与赛题指标对应

实现 赛题指标
传输层 src/transport.cpp:UDS/TCP + 长度前缀分帧 + 连接池化(对照「每调用新建连接」的 HTTP 基线) ①减少中间层开销,性能 ≥10%
上下文效率层 src/context.cpp:zstd 压缩 + 内容寻址 LRU 缓存(重复上下文只传 16B 引用) ②压缩/缓存优化上下文,通信效率 ≥10%
安全层 src/security.cpp:AES-256-GCM 认证加密(身份+机密性一体)+ HMAC 能力令牌(逐工具授权) ③数据加密 + 身份认证,防恶意 Agent
协议核心 src/broker.cpp:JSON-RPC 2.0 派发(initialize/tools/list/tools/call/批量/通知) 兼容现有 MCP API

目录结构(按 System Ability 组织)

include/mcp/   json / jsonrpc 模型、transport、context、security、broker、session 接口
src/           各层实现
apps/          mcp_broker_sad(Broker System-Ability 守护进程)、mcp_client_demo(端到端客户端)
bench/         bench_transport、bench_context、run_bench.sh(一键复现)
tests/         ctest:test_json / test_broker / test_security / test_context
demo/          bench.txt(基准真实输出,随仓库提交作为证据)
docs/          TEST_REPORT.md(测试报告·真数据)、OHOS_INTEGRATION.md(OHOS 集成点·诚实标注)

构建与运行(宿主机,Linux)

依赖:CMake ≥ 3.16、C++17 编译器、libzstd-devlibssl-dev

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
ctest --test-dir build --output-on-failure     # 全部单元测试
./build/bench_transport                          # 传输层 A/B 基准
./build/bench_context                            # 上下文效率基准

端到端演示(两个终端):

./build/mcp_broker_sad --socket /tmp/ohos-mcp.sock   # 终端 1:启动 Broker SA
./build/mcp_client_demo --socket /tmp/ohos-mcp.sock  # 终端 2:initialize→tools/list→tools/call + 拒绝非法 Agent

一键复现全部基准并写入 demo/bench.txt

bash bench/run_bench.sh

基准方法学(诚实边界)

  • 传输层对照只差一个变量(传输方式),MCP 语义与 tool 逻辑完全相同,是最干净的 A/B。
  • 主基线 A = TCP + 每调用新建连接(对应 MCP-over-HTTP 无 keep-alive);D = UDS + 连接池(本方案传输);E = D + AEAD 加密。
  • 上下文层给出四档场景,含「唯一且不可压缩」的最坏情况(收益≈0,如实报告),到「重复上下文」的现实多 Agent 场景。
  • 极小负载在 loopback 上差距可能不足 10%,赢面在连接复用 + 中大负载 + 高并发;交叉点在报告中明确标出,不挑数据。
  • 全部数字由 bench/run_bench.sh 在本机真实编译真实运行产出,见 demo/bench.txtdocs/TEST_REPORT.md

与 OpenHarmony 的关系

宿主机原型用 UDS 作为 OpenHarmony IPC 的等价物验证机理;落到 OpenHarmony 时,传输绑定替换为 MessageParcel + SendRequest + Ashmem 零拷贝,Broker 注册为 SAMgr 系统能力,安全层对接 AccessToken/ATM。接口已按此切分(Transport / SecurityContext / McpBroker 可独立替换实现)。详见 docs/OHOS_INTEGRATION.md

许可

Apache-2.0(见 LICENSE / NOTICE)。第一方源码原创;仅在构建期链接系统库 zstd(BSD-3)与 OpenSSL(Apache-2.0),不内嵌其源码。

关于

Native MCP protocol stack prototype for the ubiquitous OS (OpenHarmony): MCP-over-IPC transport, context compression/caching, and built-in AEAD security.

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

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