HashiCorp保险库MCP服务器
一种模型上下文协议(MCP)服务器,提供通过可流式HTTP API与HashiCorp Vault交互的工具。
特性
此MCP服务器为Vault KV操作提供以下工具:
- vault_kv_read:使用可选版本和装载点在指定路径上从Vault读取机密
- vault_kv_create:在指定路径上创建/向Vault写入机密
- vault_kv_list:列出装载点中指定路径处的机密
- vault_kv_delete:从指定路径的Vault中删除最新版本的机密
安全功能
- 可选承载令牌身份验证:使用基于令牌的身份验证保护您的MCP端点
- TLS/HTTPS支持:使用自定义证书启用加密连接
- CORS配置:控制对服务器的跨源访问
安装
npm install
npm run build先决条件
此服务器使用 hashi-vault-js 图书馆与HashiCorp Vault通信。确保你有:
- Node.js 18或更高版本
- 正在运行的HashiCorp Vault服务器
- 有效的Vault身份验证令牌
配置
服务器支持以下环境变量:
保险库配置(必需)
VAULT_ADDR:Vault服务器的地址(默认值:http://127.0.0.1:8200)VAULT_TOKEN:您的Vault身份验证令牌VAULT_URL:完整Vault API URL(默认值:${VAULT_ADDR}/v1)VAULT_TIMEOUT:请求超时(毫秒)(默认值:5000)VAULT_CACERT:用于Vault TLS验证的CA证书路径(可选)
MCP服务器配置
MCP_PORT:MCP服务器API的端口(默认值:3000)
安全配置(可选)
MCP_AUTH_TOKEN:API身份验证的承载令牌(如果未设置,则禁用身份验证)MCP_TLS_ENABLED:设置为"true"启用HTTPS(默认值:false)MCP_TLS_KEY:TLS私钥的路径(默认值:./certs/mcp-server.key)MCP_TLS_CERT:TLS证书的路径(默认值:./certs/mcp-server.crt)MCP_TLS_CA:CA证书的路径(默认值:./certs/ca.crt)
看 .env.example 获取完整的配置模板。
用法
运行服务器
基本(HTTP,无身份验证):
npm start使用身份验证:
export MCP_AUTH_TOKEN="your-secure-token-here"
npm start使用HTTPS:
export MCP_TLS_ENABLED="true"
export MCP_TLS_KEY="./certs/mcp-server.key"
export MCP_TLS_CERT="./certs/mcp-server.crt"
npm start服务器将公开以下端点:
/health-健康检查端点(未受保护)/mcp-客户端连接的MCP端点(如果MCP_AUTH_TOKEN已设置)
认证
当 MCP_AUTH_TOKEN 已设置,所有请求 /mcp 必须包括:
Authorization: Bearer 有关详细的身份验证设置,请参阅 认证.md.
与Gemini CLI一起使用
将此配置添加到Gemini配置文件中:
MacOS: ~/.config/gemini-cli/config.json
无身份验证:
{
"mcpServers": {
"vault": {
"url": "http://localhost:3000/mcp",
"transport": "http",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream"
}
}
}
}使用身份验证:
{
"mcpServers": {
"vault": {
"url": "http://localhost:3000/mcp",
"transport": "http",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream",
"Authorization": "Bearer your-secure-token-here"
}
}
}
}使用HTTPS:
{
"mcpServers": {
"vault": {
"url": "https://localhost:3000/mcp",
"transport": "http",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream",
"Authorization": "Bearer your-secure-token-here"
}
}
}
}有关更多详细信息,请参阅 双子座_CLI_SETUP.md.
注意:在连接Gemini CLI之前,请确保服务器正在运行。
与Claude Desktop一起使用
将此配置添加到Claude Desktop:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"vault": {
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer your-secure-token-here"
}
}
}
}有关更多详细信息,请参阅 COPILOT_SETUP.md.
与其他MCP客户端一起使用
连接到端点 http://localhost:3000/mcp (或 https:// 如果启用了TLS),则使用任何MCP兼容客户端。服务器支持使用StreamableHTTPServerTransport的GET和POST请求。
工具示例
阅读秘密
{
"tool": "vault_kv_read",
"arguments": {
"path": "myapp/config",
"mount": "secret",
"version": 1
}
}创造/书写秘密
{
"tool": "vault_kv_create",
"arguments": {
"path": "myapp/config",
"mount": "secret",
"data": {
"username": "admin",
"password": "secret123",
"api_key": "abc-xyz-123"
}
}
}列出秘密
{
"tool": "vault_kv_list",
"arguments": {
"mount": "secret",
"folder": "myapp"
}
}删除密码
{
"tool": "vault_kv_delete",
"arguments": {
"path": "secret/data/myapp/config"
}
}使用cURL进行测试
# List available tools
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer your-token" \
-d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":1}'有关更多示例,请参见 测试.md.
发展
构建
npm run build观看模式
npm run watch保险库设置
为了进行测试,您可以在开发模式下运行Vault:
vault server -dev这将在以下时间启动Vault http://127.0.0.1:8200 输出中显示根令牌。
安全说明
保险库安全
- 永远不要承诺你的
VAULT_TOKEN到版本控制 - 使用适当的Vault策略限制访问
- 考虑使用AppRole或其他身份验证方法进行生产
- 确保您的Vault服务器在生产环境中使用TLS
- 使用
VAULT_CACERT验证Vault的TLS证书
MCP服务器安全
- 启用身份验证:设置
MCP_AUTH_TOKEN保护您的MCP端点 - 使用HTTPS:启用
MCP_TLS_ENABLED用于生产中的加密连接 - 生成强代币:使用
openssl rand -hex 32用于身份验证令牌 - 旋转令牌:定期更改身份验证令牌
- 网络接入:使用防火墙或反向代理来限制访问
- 环境安全:从不承诺
.env带有真实令牌的文件 - 证书管理:确保TLS证书和密钥的安全(
chmod 600)
有关详细的安全指南,请参阅 认证.md.
快速开始
- 克隆并安装:
git clone
cd hashi-vault-mcp
npm install- 配置环境:
cp .env.example .env
# Edit .env with your Vault details- 构建并运行:
npm run build
npm start- 测试服务器:
curl http://localhost:3000/health其他文件
- 身份验证设置 -承载令牌身份验证和TLS的详细指南
- Gemini CLI设置 -配置Gemini CLI以使用此服务器
- Claude桌面设置 -配置Claude桌面集成
- 测试指导 -测试脚本和故障排除
故障排除
连接问题
- 验证Vault是否正在运行:
vault status - 检查
VAULT_ADDR匹配您的Vault服务器地址 - 确保
VAULT_TOKEN具有适当的权限 - 对于HTTPS Vault,设置
VAULT_CACERT到您的CA证书路径
身份验证错误
- 验证
MCP_AUTH_TOKEN服务器和客户端之间的匹配 - 检查授权标头格式:
Bearer - 确保在客户端配置中设置了令牌
TLS/HTTPS问题
- 验证配置的路径中是否存在证书文件
- 检查证书文件权限
- 对于自签名证书,客户端可能需要信任CA或使用
-k旗帜
许可证
麻省理工学院
