MCP Context Provider

使用说明(Markdown 格式)

项目简介

MCP Context Provider 是一个完整的后端实现,基于 MCP(Model Context Protocol)标准,为 LLM 客户端提供统一的上下文资源、工具注册与执行,以及可定制的提示模板渲染能力。它通过 JSON-RPC 风格的接口与客户端通信,支持会话管理、能力声明,以及多传输方式(如标准输入/输出、HTTP 等)。

主要功能点

  • 上下文与记忆:加载静态 Context(JSON 文件,/\contexts 下 *_context.json)并与基于会话的 Instincts(YAML 文件,/instincts 下 *.instincts.yaml)结合,生成注入负载。
  • Tools 注册与执行:提供工具集合,允许 LLM 客户端查询上下文、获取语法规则、自动更正、执行会话初始化等。
  • Instincts 支持:基于触发模式与置信分数,提供学习后的 Instinct 规则,支持批准、拒绝、微调、记录 outcomes 等流程(通过 YAML 注册表实现)。
  • Memory Bridge(可选):与 memory 服务对接,进行记忆的存储、检索、语义发现等,支持跨会话学习。
  • 服务器实现多样性:仓库内含 Python 与 TypeScript 两种实现入口,均可作为 MCP 服务器对外提供服务。
  • MCP 客户端友好:设计了清晰的 API、工具集合和注入 payload 结构,便于客户端在 JSON-RPC 语境下发起请求并获取响应。

安装与运行

  • 全局依赖与构建(TypeScript 实现)
    • 安装依赖并构建:npm install, npm run build
    • 运行入口通常为 dist/server/index.js,默认以 stdio 传输开启服务,亦可通过 --http 启用 HTTP 流式传输
  • Python 实现
    • 直接运行 context_provider_server.py 即可作为 MCP 服务器(默认使用 stdio 传输,需确保 contexts 目录存在并配置好 context 文件)
    • 服务器会读取环境变量 CONTEXT_CONFIG_DIR 指定上下文文件目录
  • 运行时配置
    • MCP 客户端启动服务器的最小需求是提供服务器名称、启动命令(command)以及参数(args)
    • 如下为常见的配置要点(后续客户端可按此格式读取并启动服务器)
      • 服务器名称:mcp-context-provider
      • 启动命令与参数(示例,需根据实际运行方式调整)
        • Python 实现(推荐)
          • command: "python3"
          • args: ["context_provider_server.py"]
          • 说明:从仓库根目录执行,需提前将 CONTEXT_CONFIG_DIR 设置为 "./contexts"
        • TypeScript 实现(如果已打包)
          • command: "node"
          • args: ["dist/server/index.js"]
          • 说明:环境变量可配置 contexts 与 instincts 路径(示例:CONTEXTS_PATH、INSTINCTS_PATH),并可通过内置 env.js 提供配置
  • 服务器配置(JSON 配置示例,供 MCP 客户端理解所需字段)
    • server_name: mcp-context-provider
    • command: python3
    • args: ["context_provider_server.py"]
    • working_dir: <仓库根目录>
    • environment: CONTEXT_CONFIG_DIR: "./contexts" MCP_SERVER_TRANSPORT: "stdio"(默认,若使用 HTTP 传输则改为 "http" 等) 说明:MCP 客户端不需要查看实现细节,只需具备启动命令和参数,即可通过 MCP 协议与服务器协作。上述示例基于仓库中提供的 Python 实现,若使用 TypeScript/Node 实现,请将 command 与 args 替换为实际打包后的入口。

基本使用方法

  • 启动服务器后,客户端可以通过 MCP 的 JSON-RPC 调用获取工具与上下文信息、执行工具、读取资源、以及构建注入负载等。
  • 客户端常用操作路径:
    • 列出可用工具、查询上下文、执行会话初始化、获取当前会话状态等
    • 根据需要,客户端可发起 get_tool_context、get_syntax_rules、list_available_contexts、get_memory_stats 等请求
    • 使用 buildInjection/tool 相关能力,结合 tool 与输入文本,获取注入 payload
  • 连接注意事项
    • 确保服务器可访问(若为 stdio,则需通过标准输入输出通道;若为 HTTP 则需开启对应端口)
    • 若开启 Memory Bridge,需正确配置 memory 服务 baseUrl 与 API Key
  • 运行后查看输出
    • 该实现会输出加载的上下文数量、已发现的上下文以及内置测试与示例结果,便于排错

额外信息

  • 该仓库同时包含 Python 与 TypeScript 两种实现路径,便于在不同技术栈环境中选用合适的 MCP 服务器实现。
  • 资源、工具、提示模板等概念在代码中以模块化方式组织,便于扩展与自定义。

服务器信息