Kvlar

使用说明(Markdown 格式)

  • 项目简介 Kvlar 是一个基于 MCP 的服务器端实现,核心包含一个策略引擎、一个安全代理以及审计日志系统。它通过标准的 MCP JSON-RPC 协议与客户端通信,能够托管和管理资源、注册并执行工具、定义和渲染提示模板,并提供可扩展的上下文服务框架。

  • 主要功能点

    • MCP 兼容的代理服务:拦截工具调用和数据访问请求,对行为进行策略评估后再转发或返回 deny/approve 响应
    • 策略引擎:基于 YAML/JSON 的策略定义,支持规则的组合、扩展(extends)和第一匹配生效
    • 资源/工具/提示模板管理:对资源、工具、提示进行统一管理,并可被策略规则引用
    • JSON-RPC 通信:使用 newline-delimited JSON 实现请求/响应
    • 传输模式:支持 stdio(与上游 MCP 服务器通过子进程通讯)和 TCP(网络传输)
    • 安全审计:对每次策略决策记录 audit 日志,支持 JSONL/人类可读格式
    • 热加载与健康检查:支持策略热加载、策略统计、健康端点等
  • 安装步骤

    • 克隆仓库并构建工作区:使用 cargo 构建整個工作区(Rust 生态下的多 crate 项目)
    • 运行服务器前的准备:根据需要准备策略文件(policy.yaml)并放在本地可访问位置
    • 构建并启动服务器命令示例(以标准工作流为例,具体路径以实际构建产物为准):
      • 构建:cargo build --workspace
      • 启动服务器并指定策略文件:kvlar proxy --stdio --policy ~/.kvlar/policy.yaml -- npx @modelcontextprotocol/server-filesystem /path/to/root 说明:上面的示例展示了如何通过 stdio 模式包装一个 MCP 服务(此处为服务器文件系统示例),Kvlar 会将原始命令放在 -- 之后,作为被代理的上游服务器执行。
  • 服务器配置(MCP 客户端所需的配置信息) 说明:以下 JSON 描述用于 MCP 客户端配置一个要托管/包装的 MCP 服务器。MCP 客户端需要的只是服务器启动信息(名称、命令、参数等),Kvlar 服务器端会在包装时将其替换为代理启动命令,以便通过 Kvlar 的策略引擎进行拦截和处理。

    { "serverName": "filesystem-demo", "command": "kvlar", "args": [ "proxy", "--stdio", "--policy", "/home/user/.kvlar/policy.yaml", "--", "npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp" ] }

    • serverName:MCP 客户端配置中的服务器名称(如 filesystem-demo、github-server 等)
    • command:要启动的命令,此处为 Kvlar 的代理启动命令
    • args:Kvlar 代理启动时的参数。包括:
      • proxy:启用代理模式
      • --stdio:使用标准输入/输出进行通信
      • --policy /path/to/policy.yaml:应用的策略文件路径
      • --:原始 MCP 服务器的启动命令及其参数(与推入的上游服务器通信)
  • 基本使用方法

    • 初始化策略:Kvlar 提供 starter 模板,方便快速创建策略文件
    • 包装 MCP 服务:使用 kvlar wrap 将现有 MCP 客户端的服务器条目包装成 Kvlar 代理后再启动
    • 运行代理后:LLM 客户端通过 MCP JSON-RPC 与 Kvlar 代理进行交互,Kvlar 会在执行工具调用前进行策略评估并返回相应结果
    • 监控与调试:利用 Kvlar 的审计日志和健康端点了解策略执行情况和代理状态
  • 备注

    • 服务器侧实现包含多 crate:核心策略引擎 kvlar-core、代理实现 kvlar-proxy、以及 CLI 工具 kvlar-cli 等,形成完整的 MCP 服务器端解决方案

服务器信息