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等传输方式。
    • 准备 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协议的服务端能力,包括资源列举、资源读取、工具/提示暴露,以及必要的安全与委派/合规的实现路径。

服务器信息