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 服务器端解决方案