Skip to main content
Glama
liuqihonggit

@jingjingbox/mcp-cli-bridge

by liuqihonggit

@jingjingbox/mcp-cli-bridge

MCP-CLI 桥接服务器 - 通过 MCP 协议调用 CLI 工具,为 AI 助手提供强大的知识图谱和文件读取能力。

目录


Related MCP server: mcp_server_for_claudes_toolbox

简介

@jingjingbox/mcp-cli-bridge 是一个基于 Model Context Protocol (MCP) 的桥接服务器,它将 CLI 工具的能力通过 MCP 协议暴露给 AI 助手(如 TraeCN)。

项目定位

维度

说明

目标平台

Windows x64

技术栈

.NET 10.0, NativeAOT, C# 13

通信协议

MCP Protocol + JSON-RPC 2.0

设计理念

进程隔离、渐进式加载、零配置

核心价值

设计原则概览

原则

实现方式

优势

MCP 接口统一

Host 层暴露少量管理工具,CLI 内部工具通过 tool_execute 间接调用

降低上下文成本,避免一次性加载上万个命令

零配置发现

自动扫描同目录下的 CLI.exe 文件,无需配置文件

即插即用,简化部署流程

进程隔离架构

每个 CLI 插件运行在独立进程中,通过 JSON-RPC 2.0 通信

插件崩溃不影响主服务,安全隔离

渐进式加载

LLM 动态获取工具描述,按需探索系统能力

支持未来上万级命令规模扩展

关键约束说明

约束项

规则

详细文档

CLI 工具缓存

禁止缓存 CLI 内部工具列表和描述

AGENTS.md - 关键约束

构建发布

必须通过 build.ps1 脚本发布到 publish/ 目录

AGENTS.md - 构建发布规则

插件隔离

src/Plugins/ 为外部插件,内部项目不得直接引用

AGENTS.md - CLI 服务隔离

接口暴露

MCP Server 只暴露 Host 层工具,CLI 工具通过 tool_execute 调用

AGENTS.md - 架构依赖关系

💡 为什么这样设计?

传统方案会将所有工具定义静态缓存到上下文中,当工具数量达到万级时会导致:

  • 上下文窗口爆炸式增长

  • LLM 处理效率急剧下降

  • 内存占用过高

本项目采用动态发现 + 渐进式加载策略,LLM 只在需要时才获取具体工具详情。


核心特性

特性

描述

技术实现

🧠 知识图谱管理

创建实体、建立关系、搜索节点,构建完整的知识网络

MemoryCli 插件

📄 文件读取

高效读取文件头部或尾部内容,支持大文件处理

FileReaderCli 插件

🔒 进程隔离

CLI 插件运行在独立进程中,崩溃不影响主服务

ProcessPool 管理

⚡ NativeAOT 编译

极致性能,超小体积,快速启动

.NET 10.0 AOT

🔄 渐进式加载

工具按需加载,不占用上下文空间

tool_describe 动态获取

🔍 动态发现

LLM 通过 MCP 协议实时探索系统能力

tool_search / tool_list


系统要求

组件

版本要求

说明

操作系统

Windows x64

当前仅支持 Windows 平台

Node.js

>= 14.0.0

用于运行 npm 包入口脚本

.NET 运行时

10.0 (已包含)

NativeAOT 编译产物自带运行时

⚠️ 注意: 本项目专为 TraeCN AI 助手设计,确保环境满足上述要求后再安装使用。


安装

方式一:全局安装(推荐用于长期使用)

npm install -g @jingjingbox/mcp-cli-bridge@latest

方式二:使用 npx(推荐用于临时使用)

无需预先安装,直接运行:

npx @jingjingbox/mcp-cli-bridge@latest

⚠️ 版本更新提示

  • 如果之前安装过旧版本,npm install -g 不会自动更新,请加 @latest 强制获取最新版

  • npx 同理,如果全局已安装旧版,npx 会优先使用全局版本,加 @latest 可跳过全局缓存

  • 清理旧缓存:npm uninstall -g @jingjingbox/mcp-cli-bridge && npm cache clean --force

安装验证

安装成功后,可通过以下命令验证:

# 全局安装后 - 确认版本号
mcp-cli-bridge --version

# 或使用 npx
npx @jingjingbox/mcp-cli-bridge@latest --help

# 查看已安装版本
npm list -g @jingjingbox/mcp-cli-bridge

配置

环境变量

变量名

描述

必填

示例值

MCP_MEMORY_PATH

MemoryCli 知识图谱数据存储目录

✅ 是

D:\MCP\Memory

数据文件说明

设置 MCP_MEMORY_PATH 后,系统会自动创建以下数据文件:

文件名

用途

格式

memory.jsonl

存储知识图谱实体数据

JSON Lines

memory_relations.jsonl

存储实体间关系数据

JSON Lines


TraeCN 配置示例

配置一:使用 npx(推荐)

{
  "mcpServers": {
    "cli-bridge": {
      "type": "stdio",
      "command": "npx",
      "args": ["@jingjingbox/mcp-cli-bridge@latest"],
      "enabled": true,
      "env": {
        "MCP_MEMORY_PATH": "D:\\MCP\\Memory"
      }
    }
  }
}

配置二:全局安装后使用

{
  "mcpServers": {
    "cli-bridge": {
      "type": "stdio",
      "command": "mcp-cli-bridge",
      "enabled": true,
      "env": {
        "MCP_MEMORY_PATH": "D:\\MCP\\Memory"
      }
    }
  }
}

配置三:本地开发(无需发布)

直接指向本地构建的 exe,开发调试时无需发布到 npm:

{
  "mcpServers": {
    "cli-bridge-dev": {
      "type": "stdio",
      "command": "g:\\Project\\AI相关\\McpHost\\publish\\McpHost.exe",
      "enabled": true,
      "env": {
        "MCP_MEMORY_PATH": "D:\\MCP\\Memory"
      }
    }
  }
}

⚠️ 路径必须是绝对路径,且要先运行 build.ps1 生成 publish/McpHost.exe

💡 配置提示

  • 请将 MCP_MEMORY_PATH 替换为您希望存储知识的实际路径

  • 建议使用绝对路径,避免相对路径导致的路径解析问题

  • 首次运行时会自动创建数据文件,无需手动创建


插件目录

本包包含以下 CLI 插件(通过 MCP 协议按需加载):

插件名称

分类

功能描述

包含命令数

主要用途

MemoryCli

知识图谱

实体、关系、观察记录的 CRUD 操作

7

构建和管理知识网络

FileReaderCli

文件操作

文件头部/尾部高效读取

2

快速预览文件内容

💡 插件扩展性

  • 未来会持续添加更多插件(如代码分析、API 调用等)

  • 新插件只需放入 Plugins/ 目录即可自动被发现

  • 所有插件都遵循相同的 CLI 通信协议

插件通信协议

Host 与 CLI 插件之间采用 JSON-RPC 2.0 格式通信:

请求格式:

{
  "jsonrpc": "2.0",
  "method": "tool_name",
  "params": { ... },
  "id": 1
}

响应格式:

{
  "jsonrpc": "2.0",
  "result": { ... },
  "id": 1
}

详细协议说明请查看:AGENTS.md - CLI 服务隔离


使用方式

渐进式发现流程(推荐)

LLM 通过以下三步流程动态探索系统能力,避免一次性加载所有工具:

┌─────────────────────────────────────────────────────┐
│  Step 1: 发现阶段                                    │
│  tool_list / tool_search → 查看可用的 CLI 插件       │
└──────────────────────┬──────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────┐
│  Step 2: 描述获取阶段                                │
│  tool_describe / list_tools → 获取命令详情和参数Schema │
└──────────────────────┬──────────────────────────────┘
                       ↓
┌─────────────────────────────────────────────────────┐
│  Step 3: 执行阶段                                   │
│  tool_execute → 执行具体的 CLI 工具命令              │
└─────────────────────────────────────────────────────┘

内置帮助系统

每个插件都支持自描述机制,提供多层级帮助信息:

层级

调用方式

输出格式

适用场景

MCP 层

tool_describe

JSON Schema

LLM 解析参数结构

CLI 层

list_tools 命令

人类可读文本

开发者查看帮助

命令行

MemoryCli.exe -h

用法摘要

快速参考

Host 层管理工具

这些是 McpHost 直接暴露的管理接口(唯一暴露给 MCP 客户端的工具):

工具名称

描述

参数说明

tool_search

搜索可用的 CLI 工具

支持关键词模糊匹配

tool_list

列出所有可用工具

返回插件及工具清单

tool_describe

获取工具详细描述

返回 JSON Schema

tool_execute

执行指定的 CLI 工具命令

传入工具名和参数

package_status

检查包安装状态

查看已安装插件

package_install

安装指定包

从注册源安装新插件

provider_list

列出工具提供者信息

查看插件元数据

⚠️ 重要: CLI 内部工具(如 memory_create_entities、file_reader_read_head)不会直接暴露给 MCP 客户端,必须通过 tool_execute 间接调用。


架构设计

项目目录结构

McpHost/
├── lib/                              # 📦 外部依赖库
│   └── McpProtocol/                  # MCP 协议实现(独立 NuGet 包)
│       ├── src/McpProtocol/          #    协议服务器核心
│       └── src/McpProtocol.Contracts/#    协议模型与常量
│
├── src/                              # 💻 源代码
│   │
│   ├── Common/                       # 🔧 共享基础设施
│   │   ├── Caching/                  #    缓存中间件
│   │   ├── CliProtocol/              #    CLI 通信协议
│   │   ├── Configuration/            #    配置管理
│   │   ├── IoC/                      #    轻量级容器
│   │   ├── Json/                     #    JSON 序列化(AOT 安全)
│   │   ├── Logging/                  #    日志框架
│   │   ├── Middleware/               #    中间件管道
│   │   ├── Plugins/                  #    工具注册系统
│   │   ├── Reflection/               #    方法调用器
│   │   ├── Security/                 #    安全验证体系
│   │   └── Tools/                    #    工具元数据
│   │
│   ├── Common.Contracts/             # 📋 契约层(接口 + DTO)
│   │   ├── Caching/                  #    缓存接口
│   │   ├── IoC/                      #    容器抽象
│   │   ├── Middleware/               #    中间件接口
│   │   ├── Models/                   #    数据传输对象
│   │   ├── Plugins/                  #    工具提供者接口
│   │   └── Security/                 #    安全接口
│   │
│   ├── McpHost/                      # 🎯 MCP 主机服务
│   │   ├── Middleware/               #    请求处理管道
│   │   ├── Plugins/                  #    CLI 插件管理
│   │   ├── ProcessPool/              #    进程池管理
│   │   ├── Services/                 #    包管理服务
│   │   └── Tools/                    #    Host 层工具暴露
│   │
│   └── Plugins/                      # 🔌 CLI 插件(外部进程)
│       ├── MemoryCli/                #    知识图谱插件
│       └── FileReaderCli/            #    文件读取插件
│
├── tests/                            # 🧪 测试套件
│   ├── Benchmarks/                   #    性能基准测试
│   ├── E2E/                          #    端到端测试
│   ├── SecurityTests/                #    安全专项测试
│   └── UnitTests/                    #    单元测试
│
├── index.js                          # npm 入口文件
├── package.json                      # npm 包配置
├── build.ps1                         # AOT 构建脚本
└── McpHost.slnx                      # 解决方案文件

核心组件职责

组件

类型

职责

依赖关系

McpProtocol

DLL (NuGet)

MCP 协议实现,可被其他项目复用

无外部依赖

Common

DLL

共享基建:缓存、日志、安全、IoC、JSON序列化

→ Common.Contracts

Common.Contracts

DLL

契约层:接口定义和纯 DTO(禁止包含实现)

无外部依赖

McpHost

EXE

MCP 服务器主机,工具暴露和进程管理

→ Common, McpProtocol

Plugins/

EXE

CLI 插件,独立进程隔离运行

→ Common, Common.Contracts

依赖关系图

Plugins (EXE) ──→ Common (DLL) ──→ Common.Contracts (DLL)
                        ↑
McpHost (EXE) ───────────┘     McpProtocol (DLL/NuGet)

⚠️ 架构约束

  • Plugins 不能引用 McpHost: CLI 插件只能依赖 Common 和 Common.Contracts

  • Common.Contracts 禁止实现: 该项目只能包含接口、抽象类和纯 DTO

  • 通信必须通过协议: 插件与 Host 之间的交互必须通过 JSON-RPC 2.0 协议

详细架构说明请查看:AGENTS.md - 架构依赖关系

进程隔离机制

特性

实现方式

保障

独立进程

每个 CLI 插件运行在单独的进程中

崩溃不传播

进程池管理

ProcessPool 统一管理进程生命周期

资源可控

超时控制

可配置的超时时间,超时自动终止

避免挂死

资源限制

限制并发进程数和内存占用

防止资源耗尽

详细生命周期和安全机制请查看:AGENTS.md - CLI 服务隔离


技术栈

技术

版本

用途

选择理由

.NET

10.0

运行时框架

最新特性,长期支持

NativeAOT

内置

编译模式

极致性能,超小体积,快速启动

C#

13

编程语言

现代语法,高性能

JSON-RPC

2.0

CLI 通信协议

轻量级,易于实现

MCP Protocol

最新

AI 通信协议

行业标准,广泛支持

System.CommandLine

NuGet

CLI 参数解析

支持 -h 帮助,类型安全

性能指标

指标

目标值

说明

启动时间

< 100ms

NativeAOT 冷启动

包体积

< 10MB

AOT 编译优化

内存占用

< 50MB

基础运行内存

工具调用延迟

< 50ms

进程内执行(不含 CLI 启动)


开发指南

源码仓库

本项目同时在 Gitee 和 GitHub 上维护:

平台

地址

访问特点

Gitee

https://gitee.com/JJbox/memory

国内访问更快

GitHub

https://github.com/JJbox-io/McpHost

国际访问,Issue 跟踪

# 从 Gitee 克隆(国内推荐)
git clone https://gitee.com/JJbox/memory.git

# 或从 GitHub 克隆(国际推荐)
git clone https://github.com/JJbox-io/McpHost.git

开发环境准备

步骤

命令/操作

说明

1. 克隆仓库

git clone <url>

获取源代码

2. 安装 .NET SDK

下载 .NET 10.0 SDK

开发编译必需

3. 配置环境变量

设置 MCP_MEMORY_PATH

测试 MemoryCli 时需要

4. 验证安装

dotnet --version

确保 SDK 可用

构建流程

# 使用 PowerShell 执行构建脚本
.\build.ps1

💡 构建脚本功能

build.ps1 会自动完成以下工作:

  1. 清理 publish/ 目录

  2. AOT 编译所有项目(McpHost、MemoryCli、FileReaderCli)

  3. 复制必要文件到 publish/ 目录

  4. 验证所有必需文件是否存在

⚠️ 重要: 禁止手动复制文件到 publish/ 目录!所有发布文件必须通过构建脚本自动复制。

详细构建流程、文件规则和错误处理请查看:AGENTS.md - 构建发布规则

测试

测试类型

命令

说明

单元测试

dotnet test McpHost.slnx -c Release

运行所有单元测试

E2E 测试

dotnet run --project tests\E2E\MyMemoryServer.E2E.csproj -c Release

端到端集成测试

性能测试

dotnet run --project tests\Benchmarks -c Release

基准性能测试

标准开发流程

遵循以下标准开发流程以确保代码质量和稳定性:

1. 编译 → 2. 测试 → 3. E2E → 4. 发布 → 5. 推送

阶段

命令

验证点

编译

dotnet build McpHost.slnx -c Release

编译成功,无警告

测试

dotnet test McpHost.slnx -c Release

所有测试通过

E2E

dotnet run --project tests\E2E\MyMemoryServer.E2E.csproj -c Release

集成测试通过

发布

.\build.ps1

publish/ 目录生成正确

推送

git push origin main

代码同步到远程

📖 详细开发规范

本项目有严格的开发规范和行为准则,所有开发者必须遵守:

  • AGENTS.md - 项目说明书

    • 架构设计和组件职责

    • 构建发布流程和规则

    • CLI 插件系统和通信协议

    • 环境配置要求

  • CLAUDE.md - AI 行为红线手册

    • ❌ 绝对禁止的操作(代码编写禁令、操作禁令)

    • ✅ 必须执行的开发流程和质量要求

    • 🔄 强制性工作流程(经验复用、渐进式迁移)

    • 🛡️ 安全红线和异常处理规范

在开始任何开发工作前,务必先阅读这两份文档!

代码质量要求

要求类别

具体规则

参考文档

NativeAOT 兼容

禁止动态类型、反射 emit、动态代码生成

CLAUDE.md - 代码编写禁令

GlobalUsings

禁止在 .cs 文件内写 using 语句

CLAUDE.md - 代码编写禁令

类型安全

禁止硬编码,使用 typeof()/nameof()

CLAUDE.md - 代码编写禁令

参数封装

方法参数不超过 3 个,多参数封装为类

CLAUDE.md - 代码质量强制要求

异步编程

所有异步操作必须传入 CancellationToken

CLAUDE.md - 代码质量强制要求

异常处理

外部请求必须 try-catch 并记录日志

CLAUDE.md - 代码质量强制要求

Git 规范

先备份、无分页模式、npm 发布后才 commit

CLAUDE.md - 开发流程强制要求

常见问题排查

问题现象

可能原因

解决方案

参考文档

CLI 插件加载失败

引用了 McpHost 项目

移除对 McpHost 的引用

AGENTS.md - 常见问题速查

进程池耗尽

超时配置不当或异常未处理

检查超时配置和异常处理

AGENTS.md - 常见问题速查

npm 发布失败版本已存在

版本号未递增

更新 package.json 版本号

AGENTS.md - 构建发布规则

NativeAOT 编译失败

使用了不兼容的特性

检查是否使用了动态类型等

CLAUDE.md - 代码编写禁令


许可证

本项目采用 MIT 许可证开源。

作者

JJbox


📚 相关文档

  • AGENTS.md - 项目说明书(架构、构建、发布规范)

  • CLAUDE.md - AI 行为红线手册(开发规范、安全准则)

如需了解更详细的技术实现、开发流程或问题排查,请查阅以上文档。

Related MCP Connectors

Related MCP Servers