# io.github.kta41/mcp-bruno (pypi · mcp-bruno)

Python MCP server for running and inspecting Bruno API collections.

- Trust score: 68/100 (medium)
- Change this week: −17
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- pypi · `mcp-bruno`: 68/100 (this document), [markdown](https://verifymcp.io/servers/kta41-mcp-bruno/mcp-bruno.md), [page](https://verifymcp.io/servers/kta41-mcp-bruno/mcp-bruno)

## Channel facts

- Registry: `pypi`
- Package: `mcp-bruno`
- Version: `0.1.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it.
  - 1 of 28 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 35 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 80/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 920 tokens (~131/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.kta41/mcp-bruno server?

io.github.kta41/mcp-bruno runs locally as a PyPI package, launched with uvx mcp-bruno. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add kta41-mcp-bruno -- uvx mcp-bruno
```

### Cursor

```json
{
  "mcpServers": {
    "kta41-mcp-bruno": {
      "command": "uvx",
      "args": [
        "mcp-bruno"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "kta41-mcp-bruno": {
      "command": "uvx",
      "args": [
        "mcp-bruno"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add kta41-mcp-bruno -- uvx mcp-bruno
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kta41-mcp-bruno": {
      "type": "local",
      "command": [
        "uvx",
        "mcp-bruno"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add kta41-mcp-bruno --command uvx --arg mcp-bruno
```

### Hermes

```yaml
mcp_servers:
  kta41-mcp-bruno:
    command: "uvx"
    args: ["mcp-bruno"]
```

### Netclaw

```json
{
  "McpServers": {
    "kta41-mcp-bruno": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "mcp-bruno"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add kta41-mcp-bruno -t stdio -c uvx -a mcp-bruno
```

### Other

```json
{
  "mcpServers": {
    "kta41-mcp-bruno": {
      "command": "uvx",
      "args": [
        "mcp-bruno"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 68, −17)

- [security regression] Malware scan: pass → unverified
- [functional] Stability: pass → 0.80

### 2026-10-30 (score 85, 0)

- [security] Stability: 0.97 → pass

### 2026-10-29 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 83, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-24 (score 68, −14)

- [security regression] Malware scan: pass → unverified

### 2026-10-23 (score 82, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-22 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (7)

### `run-collection` (~219 tokens)

Run Bruno collection

Run a Bruno collection with the local `bru` CLI and return normalized JSON with success, request summary, per-request details, failures, and execution timings. Provide `collection` as the collection path; optionally pass `environment` and non-secret `variables` as KEY=value strings. For secrets, pass only names through `inherited_variables`; values are read from the MCP server process.

Input parameters:

- `collection` (string, required): Path to the Bruno collection directory, a .bru/.vru request file, or an opencollection.yml file. When opencollection.yml is provided, the server runs its parent collection directory.
- `environment`: Optional Bruno environment name or environment file accepted by `bru run --env`.
- `inherited_variables`: Optional names of environment variables to read from the MCP server process and pass to Bruno as `--env-var`. Use this for secrets so the LLM only provides variable names, never values.
- `variables`: Optional Bruno environment variables passed as repeated `--env-var` values. Use KEY=value strings.

### `list-collections` (~87 tokens)

List Bruno collections

List Bruno collections below a root directory or configured roots. Use this when the user gives a partial collection name instead of a full path.

Input parameters:

- `query`: Optional case-insensitive text used to filter collection names and paths.
- `root`: Optional Bruno root directory. When omitted, the server uses roots from bruno-mcp.toml or ~/.config/bruno-mcp/config.toml.

### `discover-environments` (~68 tokens)

Discover Bruno environments

Inspect the folder structure around a Bruno collection and return the sibling environments directory, available environment names, and variable names. Secret values are not returned.

Input parameters:

- `collection` (string, required): Path to a Bruno collection under a bruno/collections-style tree. The server will look for a sibling environments directory.

### `list-request-filters` (~61 tokens)

List Bruno request filters

Inspect OpenCollection YAML requests and return enabled and disabled query params that can be used as filter scenarios. Secret values are not returned.

Input parameters:

- `collection` (string, required): Path to the Bruno collection directory or opencollection.yml file to inspect for query filters.

### `run-filter-scenarios` (~188 tokens)

Run Bruno filter scenarios

Run temporary Bruno request variants with selected disabled query params enabled, then validate HTTP status and response payload consistency. Each request is also run once without filters (baseline) to distinguish an ignored filter (response identical to baseline) from a filter that legitimately returns zero matches. Infrastructure failures (auth, routing, timeout, connectivity) are reported as inconclusive, never as filter defects. Source collection files are not modified.

Input parameters:

- `collection` (string, required): Path to the Bruno collection directory or opencollection.yml file.
- `environment`: Optional Bruno environment name.
- `inherited_variables`: Optional secret variable names to inherit from the MCP server process.
- `max_scenarios` (integer): Maximum number of generated scenarios when scenarios are omitted.
- `scenarios`: Optional explicit filter scenarios. When omitted, scenarios are generated from disabled query params.
- `variables`: Optional non-secret KEY=value variables.

### `read-result-artifact` (~89 tokens)

Read Bruno result artifact

Read a bounded, redacted summary from a raw Bruno JSON artifact path returned by run-collection or run-filter-scenarios. Use this when response data is too large to include directly in a tool result.

Input parameters:

- `max_items` (integer): Maximum response items to sample per request.
- `path` (string, required): Path returned by run-collection or run-filter-scenarios as artifact_path.

### `run-full-validation` (~208 tokens)

Run full Bruno validation (endpoints then filters)

Two-phase validation. Phase 1 runs the collection once and checks every endpoint is reachable (HTTP status, no request errors). Phase 2 only runs if phase 1 passes: it tests every documented disabled query filter across every endpoint in temporary request copies, without modifying source files. Each scenario is compared against an unfiltered baseline to distinguish ignored filters from legitimate zero-match results, and infrastructure failures are marked inconclusive instead of failed. Returns a consolidated result stating which phase ran, per-endpoint baseline status, and per-endpoint per-filter pass/fail/skip with the reason.

Input parameters:

- `collection` (string, required): Path to the Bruno collection directory or opencollection.yml file.
- `environment`: Optional Bruno environment name.
- `inherited_variables`: Optional secret variable names to inherit from the MCP server process.
- `max_scenarios` (integer): Maximum number of filter scenarios to run in phase 2, across all endpoints combined.
- `variables`: Optional non-secret KEY=value variables.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/kta41-mcp-bruno/mcp-bruno#diagnostics

## Score history

- 2026-11-05: 68
- 2026-11-04: 85
- 2026-11-03: 85
- 2026-11-02: 85
- 2026-11-01: 85
- 2026-10-31: 85
- 2026-10-30: 85
- 2026-10-29: 85
- 2026-10-28: 84
- 2026-10-27: 84
- 2026-10-26: 84
- 2026-10-25: 83
- 2026-10-24: 68
- 2026-10-23: 82
- 2026-10-22: 67
- 2026-10-21: 66
- 2026-10-20: 66
- 2026-10-19: 65
- 2026-10-18: 65
- 2026-10-17: 64
- 2026-10-16: 64
- 2026-10-15: 63
- 2026-10-14: 63
- 2026-10-13: 62
- 2026-10-12: 71
- 2026-10-05: 51
- 2026-10-04: 56
- 2026-10-03: 56
- 2026-10-02: 56
- 2026-10-01: 56

## Common questions

### What is the io.github.kta41/mcp-bruno server?

io.github.kta41/mcp-bruno is listed in the public MCP registry as io.github.kta41/mcp-bruno. Python MCP server for running and inspecting Bruno API collections. This page covers its PyPI package (mcp-bruno).

### Is the io.github.kta41/mcp-bruno server safe to use?

io.github.kta41/mcp-bruno scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.kta41/mcp-bruno server expose?

io.github.kta41/mcp-bruno exposes 7 tools: run-collection, list-collections, discover-environments, list-request-filters, run-filter-scenarios, and 2 more. Their descriptions and schemas cost roughly 920 tokens of context every time the server is loaded.

### Is the io.github.kta41/mcp-bruno server still maintained?

io.github.kta41/mcp-bruno is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.kta41/mcp-bruno server under?

io.github.kta41/mcp-bruno declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/mcp-bruno/
- Socket report: https://socket.dev/pypi/package/mcp-bruno
- Repository: https://github.com/Kta41/mcp-bruno
- Changelog RSS feed: https://verifymcp.io/servers/kta41-mcp-bruno/mcp-bruno.xml
- Changelog JSON feed: https://verifymcp.io/servers/kta41-mcp-bruno/mcp-bruno.json
- HTML version of this page: https://verifymcp.io/servers/kta41-mcp-bruno/mcp-bruno
