Bruno API MCP Server

Bruno API MCP Server

将 Bruno API 集合公开为模型上下文协议 (MCP) 工具,允许 AI 代理和 MCP 客户端与您的 API 集合进行交互。

Category
访问服务器

README

Bruno API MCP 服务器

一个模型上下文协议 (MCP) 服务器,将 Bruno API 集合公开为 MCP 工具。该服务器允许您通过 MCP 协议与您的 Bruno API 集合进行交互,使您的 API 集合可供 AI 代理和其他 MCP 客户端访问。

为何重要:源代码和数据协同工作

当开发者需要集成 API 时,他们通常面临三个核心挑战:

  1. 跨系统边界调试:诊断跨越独立代码和数据环境的问题需要不断切换上下文,导致故障排除效率低下。

  2. 创建自定义工具:每个第三方 API 集成都需要构建和维护自定义工具,从而导致开发开销和技术债务。

  3. 构建服务 UI:为每个后端服务开发用户界面增加了显著的复杂性和维护成本。

该服务器通过将您的源代码与您的数据并置来解决这些精确的问题。它将 Bruno API 集合转换为模型上下文协议工具,使您能够:

  • 在以前分离的环境中进行调试,并具有完整的上下文
  • 将任何 API 转换为可用于代理的工具,而无需额外的自定义开发
  • 构建可以通过 AI 界面控制的无头服务

对于需要加速 API 集成并降低维护开销的开发团队来说,这种方法从根本上改变了可能性 - 使以前复杂的集成变得简单易用。

特性

  • 自动将 Bruno API 集合转换为 MCP 工具
  • 用于不同 API 配置的环境管理
  • 带有 SSE 传输的 HTTP
  • 跨域支持
  • 用于 API 集合管理的内置工具

用法

  1. 安装依赖项:

    npm install
    
  2. 使用您的 Bruno API 集合启动服务器:

    node --loader ts-node/esm src/index.ts --bruno-path /path/to/bruno/collection [--environment env_name] [--include-tools tool1,tool2,tool3] [--exclude-tools tool4,tool5]
    

    选项:

    • --bruno-path-b:您的 Bruno API 集合目录的路径(必需)
    • --environment-e:要使用的环境的名称(可选)
    • --include-tools:要包含的工具名称的逗号分隔列表,过滤掉所有其他工具(可选)
    • --exclude-tools:要排除的工具名称的逗号分隔列表(可选)

    工具过滤选项支持以下两种格式:

    --include-tools tool1,tool2,tool3    # 空格分隔格式
    --include-tools=tool1,tool2,tool3    # 等号格式
    
  3. 从客户端连接:

    • 本地连接:http://localhost:8000/sse
    • 从 Windows 连接到 WSL:http://<WSL_IP>:8000/sse
    • 使用以下命令获取您的 WSL IP:hostname -I | awk '{print $1}'

预定义脚本

该存储库包含几个用于常见用例的预定义 npm 脚本:

# 使用默认设置启动服务器
npm start

# 使用 CFI API 路径启动
npm run start:cfi

# 使用本地环境启动
npm run start:local

# 仅包含特定工具启动
npm run start:include-tools

# 排除特定工具启动
npm run start:exclude-tools

开发

运行测试

运行所有测试:

npm test

运行特定测试文件:

npm test test/bruno-parser-auth.test.ts

调试

服务器使用 debug 库进行详细日志记录。您可以通过设置 DEBUG 环境变量来启用不同的调试命名空间:

# 调试所有内容
DEBUG=* npm start

# 调试特定组件
DEBUG=bruno-parser npm start    # 调试 Bruno 解析器操作
DEBUG=bruno-request npm start   # 调试请求执行
DEBUG=bruno-tools npm start     # 调试工具创建和注册

# 调试多个特定组件
DEBUG=bruno-parser,bruno-request npm start

# 在 Windows CMD 中:
set DEBUG=bruno-parser,bruno-request && npm start

# 在 Windows PowerShell 中:
$env:DEBUG='bruno-parser,bruno-request'; npm start

可用的调试命名空间:

  • bruno-parser:Bruno API 集合解析和环境处理
  • bruno-request:请求执行和响应处理
  • bruno-tools:工具创建和注册到 MCP 服务器

工具

列出环境

列出您的 Bruno API 集合中所有可用的环境:

  • 无需参数
  • 返回:
    • 可用环境列表
    • 当前活动环境

回声

回显您发送的消息(用于测试):

  • 参数:message (字符串)

Bruno API 集合结构

您的 Bruno API 集合应遵循标准的 Bruno 结构:

collection/
├── collection.bru       # 集合设置
├── environments/       # 环境配置
│   ├── local.bru
│   └── remote.bru
└── requests/          # API 请求
    ├── request1.bru
    └── request2.bru

您集合中的每个请求都将自动转换为 MCP 工具,使其可以通过 MCP 协议使用。

将自定义参数与工具一起使用

调用从您的 Bruno API 集合生成的工具时,您可以通过提供以下内容来自定义请求:

环境覆盖

您可以为特定请求指定不同的环境:

{
  "environment": "us-dev"
}

这将使用指定环境中的变量,而不是默认变量。

变量替换

您可以为单个请求覆盖特定变量:

{
  "variables": {
    "dealId": "abc123",
    "customerId": "xyz789",
    "apiKey": "your-api-key"
  }
}

这些变量将在 URL、标头和请求正文中被替换。例如,如果您的请求 URL 是:

{{baseUrl}}/api/deal/{{dealId}}

并且您提供 { "variables": { "dealId": "abc123" } },则实际使用的 URL 将是:

https://api.example.com/api/deal/abc123

查询参数

您可以直接添加或覆盖查询参数:

{
  "query": {
    "limit": "10",
    "offset": "20",
    "search": "keyword"
  }
}

无论这些查询参数是否在原始请求中定义,都将添加到 URL 中。例如,如果您的请求 URL 是:

{{baseUrl}}/api/deals

并且您提供 { "query": { "limit": "10", "search": "keyword" } },则实际使用的 URL 将是:

https://api.example.com/api/deals?limit=10&search=keyword

这种方法比使用变量覆盖查询参数更清晰和更明确。

自定义 Body 参数

您还可以在请求正文中提供自定义参数:

{
  "body": {
    "name": "John Doe",
    "email": "john@example.com"
  }
}

完整示例

这是一个结合了所有四种类型自定义的完整示例:

{
  "environment": "staging",
  "variables": {
    "dealId": "abc123",
    "apiKey": "test-key-staging"
  },
  "query": {
    "limit": "5",
    "sort": "created_at"
  },
  "body": {
    "status": "approved",
    "amount": 5000
  }
}

许可证

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选