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 提供配置
- Python 实现(推荐)
- 服务器配置(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 服务器实现。
- 资源、工具、提示模板等概念在代码中以模块化方式组织,便于扩展与自定义。