Knowledge Context Protocol MCP桥接实现
使用说明(Markdown格式)
-
项目简介
- 本项目实现了MCP服务器的核心能力:将知识库清单 knowledge.yaml 以标准化的MCP资源、工具和提示暴露给MCP客户端;支持会话上下文、权限/委派、数据治理等元数据(按MCP/SPEC的扩展理念实现部分功能)。
- 提供跨语言实现与测试用例,包含Python、Java、TypeScript三种桥接实现,以及相应的MCP服务器端逻辑、资源读取、工具执行和提示渲染。
-
主要功能点
- 解析知识 manifests(knowledge.yaml),构建MCP资源集合(Manifest资源、单元资源)、并为每个单元提供相应的资源URI、MIME类型和权限信息。
- 提供MCP工具(如 search_knowledge、get_unit、get_command_syntax)以JSON-RPC形式供LLM调用,返回匹配项、单位内容或格式化的命令帮助。
- 提供PROMPT/指令定义(Prompts),支持Agent/Prompt接口的渲染与调用。
- 支持子清单(sub-manifests)合并,主Manifest优先级写入,允许对多源知识进行合并展示。
- 对资源内容进行文本/二进制区分读取,文本返回文本内容,二进制返回Base64编码的字节流。
- 提供路径安全性检查(确保 unit 路径不越出manifest根目录),并对路径、依赖和关系进行基于实现的验证逻辑。
- 提供多传输协议的服务器启动路径(stdio、HTTP/SSE等)以及对应的客户端连接方式。
-
安装步骤
- 选择实现语言入口:
- Python实现:bridge/python/kcp_mcp
- 典型入口是通过命令行执行 Python 模块方式启动的 MCP 服务器,默认使用stdio传输。
- Java实现:bridge/java/mcp
- 通过 Maven/Gradle 构建后执行 Java 主类来启动 MCP 服务(多工具/提示实现)。
- TypeScript实现:bridge/typescript
- 通过Node直接运行相应的CLI/模块,支持stdio、HTTP等传输方式。
- Python实现:bridge/python/kcp_mcp
- 准备 knowledge.yaml
- 将 knowledge.yaml 放到工作目录,确保路径安全和单位字段完整性(id、path、intent、scope、audience 等最小字段)。
- 启动服务器的简单示例(以Python实现为例):
- 在知识库根目录执行:python3 -m kcp_mcp knowledge.yaml
- 追加过滤或模式:
- 启动时可加参数过滤代理人(agent)可见单元:--agent-only
- 指定传输:--transport stdio(默认)或 --transport http
- 运行后的客户端连接
- MCP客户端需要提供服务器启动命令与参数的配置(server name、command、args等),以便通过MCP协议接入服务器。客户端配置示例在下方服务器配置中给出JSON格式说明。
- 测试与验证
- 仓库中提供了完整的单元测试、集成测试,用以验证资源列举、资源读取、工具执行、提示渲染及分割指令等功能。
- 选择实现语言入口:
-
服务器配置(MCP客户端需要的启动信息,JSON格式,含server name、command、args等)
- 请基于以下示例进行配置。该示例对应Python实现的入口方式,实际可按你所选语言入口调整:
- 服务器名称(server_name):kcp-mcp-python-bridge
- 命令(command):python3
- 参数(args):["-m", "kcp_mcp", "knowledge.yaml", "--agent-only"]
- 传输类型:stdio(默认),也可改为http/ SSE 等如有需要
- 说明:此配置仅用于MCP客户端了解如何启动并连接到MCP服务器;客户端不需要修改服务器本身,服务器会对外暴露MCP端点与资源。
- 额外说明:若使用子清单或命令清单,需要在启动时将相应路径提供给服务器,服务器会在初始化时合并并暴露对应的资源/工具。
JSON示例(仅为配置示意,按实际环境语言入口调整): { "server_name": "kcp-mcp-python-bridge", "command": "python3", "args": ["-m", "kcp_mcp", "knowledge.yaml", "--agent-only"], "transport": "stdio", "sub_manifests": [] }
-
基本使用方法
- 将 knowledge.yaml 放到工作目录,确保单位字段(id、path、intent、scope、audience 等)完整。
- 启动MCP服务器(以Python入口为例):execute via command above(或等效语言入口)。
- MCP客户端连接与交互:
- 调用 listResources(resources/list)获取可用资源(命名为 manifest 与各知识单元)。
- 调用 readResource(resources/read)请求具体单位的内容,返回文本或二进制数据。
- 调用工具(如 search_knowledge、get_unit、get_command_syntax)实现知识检索、单位读取和命令语法查询。
- 调用 prompts(如 sdd-review、kcp-explore)获取提示文本或对话内容。
- 如需扩展:可通过提供 sub-manifests、命令清单等来增强知识图谱规模与功能。
-
重要说明
- MCP客户端配置只用于连接与使用服务器,实际服务器实现细节与入口命令由仓库提供的语言实现决定。
- 本实现提供了核心MCP协议的服务端能力,包括资源列举、资源读取、工具/提示暴露,以及必要的安全与委派/合规的实现路径。