Bruno API

by djkz

Not rated
GitHub

About

Bridges AI systems with Bruno API collections, enabling direct execution of HTTP requests defined in .bru format with automatic environment variable parsing and schema generation for API testing and workflow automation.

Details

Author
djkz
Repository
djkz/bruno-api-mcp
Categories
Productivity, Developer Tools, AI, Infrastructure
Tags
#integration, #web

- Automatic conversion of Bruno API collections to MCP tools
- Environment management for different API configurations
- HTTP with SSE transport
- Cross-origin support
- Built-in tools for API collection management

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Bruno API
    Command (node, npx, python, etc.) node
    Arguments
    • Argument 1 --loader
    • Argument 2 ts-node/esm
    • Argument 3 src/index.ts
    • Argument 4 --bruno-path
    • Argument 5 /path/to/bruno/collection

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

1. Install dependencies:

   npm install
   

2. Start the server with your Bruno API collection:

   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]
   

Options:

- --bruno-path or -b: Path to your Bruno API collection directory (required)
- --environment or -e: Name of the environment to use (optional)
- --include-tools: Comma-separated list of tool names to include, filtering out all others (optional)
- --exclude-tools: Comma-separated list of tool names to exclude (optional)

Both formats are supported for the tool filtering options:

   --include-tools tool1,tool2,tool3    # Space-separated format
   --include-tools=tool1,tool2,tool3    # Equals-sign format
   

3. Connect from clients:
- Local connection: http://localhost:8000/sse
- From Windows to WSL: http://<WSL_IP>:8000/sse
- Get your WSL IP with: hostname -I | awk '{print $1}'

npm run start:local

Run all tests:

npm test

Run specific test file:

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

Lists all available environments in your Bruno API collection:

- No parameters required
- Returns:
- List of available environments
- Currently active environment

You can specify a different environment for a specific request:

{
  "environment": "us-dev"
}

This will use the variables from the specified environment instead of the default one.

List Environments

Lists all available environments in your Bruno API collection. No parameters required. Returns a list of available environments and the currently active environment.

Echo

Echoes back a message you send, useful for testing. Parameter: message (string).

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "bruno api": {
            "cwd": "string",
            "env": {},
            "args": [
                "--loader",
                "ts-node/esm",
                "src/index.ts",
                "--bruno-path",
                "/path/to/bruno/collection"
            ],
            "shell": false,
            "command": "node"
        }
    }
}

Linux

{
    "cwd": "string",
    "env": [],
    "args": [
        "--loader",
        "ts-node/esm",
        "src/index.ts",
        "--bruno-path",
        "/path/to/bruno/collection"
    ],
    "shell": false,
    "command": "node"
}

Macos

{
    "cwd": "string",
    "env": [],
    "args": [
        "--loader",
        "ts-node/esm",
        "src/index.ts",
        "--bruno-path",
        "/path/to/bruno/collection"
    ],
    "shell": false,
    "command": "node"
}

Windows

{
    "cwd": "string",
    "env": [],
    "args": [
        "--loader",
        "ts-node/esm",
        "src/index.ts",
        "--bruno-path",
        "/path/to/bruno/collection"
    ],
    "shell": false,
    "command": "node"
}

Bruno API MCP Server

A Model Context Protocol (MCP) server that exposes Bruno API collections as MCP tools. This server allows you to interact with your Bruno API collections through the MCP protocol, making your API collections accessible to AI agents and other MCP clients.

Why This Matters: Source Code and Data Working Together

When developers need to integrate APIs, they typically face three core challenges:

1. Debugging across system boundaries: Diagnosing issues across separate code and data environments requires constant context switching, making troubleshooting inefficient.

2. Creating custom tooling: Each third-party API integration requires building and maintaining custom tooling, causing development overhead and technical debt.

3. Building service UIs: Developing user interfaces for every backend service adds significant complexity and maintenance costs.

This server solves these precise problems by collocating your source code with your data. It transforms Bruno API collections into Model Context Protocol tools, enabling you to:

- Debug across previously separate environments with complete context
- Turn any API into an agent-ready tool without additional custom development
- Build headless services that can be controlled through AI interfaces

For development teams that need to accelerate API integration while reducing maintenance overhead, this approach fundamentally changes what's possible - making previously complex integrations straightforward and accessible.

Features

- Automatic conversion of Bruno API collections to MCP tools
- Environment management for different API configurations
- HTTP with SSE transport
- Cross-origin support
- Built-in tools for API collection management

Usage

1. Install dependencies:

   npm install
   

2. Start the server with your Bruno API collection:

   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]
   

Options:

- --bruno-path or -b: Path to your Bruno API collection directory (required)
- --environment or -e: Name of the environment to use (optional)
- --include-tools: Comma-separated list of tool names to include, filtering out all others (optional)
- --exclude-tools: Comma-separated list of tool names to exclude (optional)

Both formats are supported for the tool filtering options:

   --include-tools tool1,tool2,tool3    # Space-separated format
   --include-tools=tool1,tool2,tool3    # Equals-sign format
   

3. Connect from clients:
- Local connection: http://localhost:8000/sse
- From Windows to WSL: http://<WSL_IP>:8000/sse
- Get your WSL IP with: hostname -I | awk '{print $1}'

Predefined Scripts

The repository includes several predefined npm scripts for common use cases:

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.