Bruno MCP服务器
MCP服务器,通过stdio将Bruno请求作为MCP工具公开。
需求
要将此服务器与MCP客户端(Cursor、Claude Desktop等)一起使用,您需要:
- Node.js>=18
- Bruno CLI(
bru)已安装并可用于PATH - Bruno集合根目录包含
bruno.json
此服务器通过Bruno CLI运行请求,因此它受 Bruno CLI的局限性,包括 存储在Bruno UI中的机密对CLI不可用.
与MCP客户端一起使用
此服务器旨在由MCP客户端启动,而不是作为独立应用程序启动。
光标配置示例:
{
"mcpServers": {
"bruno": {
"command": "npx",
"args": [
"-y",
"bruno-mcp-tools",
"--collection",
"/absolute/path/to/collection",
"--prefix",
"cat_api"
]
}
}
}本地构建示例(未发布):
{
"mcpServers": {
"bruno-local": {
"command": "node",
"args": [
"/absolute/path/to/repo/dist/index.js",
"--collection",
"/absolute/path/to/collection"
]
}
}
}CLI标志
| 标志 | 必填 | 说明 |
|---|---|---|
| `--bru | ||
| ` | xor | 通往单一路径 .bru 请求文件 |
| `--collection | ||
| ` | xor | Bruno集合目录的路径 |
--env | 否 | 布鲁诺环境通过 bru run --env |
--prefix | no | 工具前缀(已净化为 [a-z0-9_]) |
--name | 否 | 仅在单一模式下覆盖工具名称 |
规则:
- 正是其中之一
--bru和--collection是必需的。 --name在收集模式下被忽略。- 收集模式需要收集根(
bruno.json在收集路径中)。
可用工具
单请求模式(--bru)
- 只显示一个工具。
- 工具名称:
- --name 如果提供 - 否则 {prefix}_{filename_without_ext}
收集模式(--collection)
- 递归发现
.bru文件夹。 - 每个发现的请求显示一个工具。
- 工具名称格式:
{prefix}_{relative_path_without_ext} - 路径分隔符
/成为_. - 非字母数字字符变为
_. collection.bru被忽略。- 这
environments文件夹被排除在外(Bruno环境定义不作为工具公开)。 - 名称是确定的,并在启动时锁定。
例子:
auth/login.bru->cat_api_auth_login
工具描述和可发现性
MCP客户端(和模型)使用每个工具 描述 决定何时调用它。在Bruno UI中向请求添加文档可以提高可观察性,并帮助选择正确的工具。当请求有文档时,该文本用作工具的描述;否则,描述为通用的“执行Bruno请求:\ ”。
工具输入
所有工具都使用相同的输入模式:
{
"type": "object",
"properties": {
"vars": {
"type": "object",
"additionalProperties": { "type": "string" }
}
},
"additionalProperties": false
}变量和环境
- 如果
--env通过后,布鲁诺在那种环境中奔跑。 - 如果请求使用模板变量(
{{var}})以及--env未通过:
- 所有必需的变量必须通过以下方式提供 vars - 否则工具调用失败 E_ENV_REQUIRED
vars 转发为:
- Bruno运行时覆盖:
--env-var key=value - 进程环境兼容性:
MCP_VAR_=value
示例工具调用参数:
{
"vars": {
"query": "air",
"attach_image": "1"
}
}秘密(Bruno CLI限制)
存储在Bruno UI环境中的秘密不可用于Bruno CLI。 Bruno将秘密值保存在Electron的安全存储(或加密的本地文件)中,CLI不使用这些值。因此,当此MCP服务器通过以下方式运行请求时 bru,您在Bruno应用程序中标记为“secret”的任何变量都不会被注入——它们将丢失或为null。
官方解释和背景: .
解决方法:
- 不要将Bruno“secret”变量用于CLI。 请改用常规环境变量。将环境文件(例如,放在
environments/)in.gitignore所以它没有被承诺。然后,CLI可以在您通过时加载该env--env. - 用一
.env文件 (gitignored)并从中引用变量。请参阅 Bruno docs:dotenv文件。此MCP服务器无法读取.env自身;在Bruno系列中使用它(例如。{{process.env.VAR}})并确保在MCP服务器运行时设置了env(例如,在加载了env的情况下运行客户端.env). - 通过工具传递值
vars. 对于MCP驱动的运行,客户端可以在vars工具调用论证;它们被传递为--env-var到bru。避免在脚本中记录或回显这些内容。 - CI/自动化: 在管道中,从您的秘密管理器注入env变量(例如,编写一个临时env文件或set
process.env在启动MCP服务器之前或之前bru run).
工具输出格式
工具响应以可读文本的形式返回:
Status:
Headers:
Body:
正文在65536字节以上被截断:
[truncated to 65536 bytes]
安全说明
- 工具映射在启动时被发现并锁定。
- 只能调用已知的已发现工具。
- 在工具执行期间没有发现动态文件系统。
- Stdout是为MCP协议流量保留的。
- 仅限标准传输(无HTTP传输)。
维护人员注意事项
npm install
npm run lint
npm run build
npm test