Enables programmatic creation and management of Bruno API testing collections, environments, and requests, including generation of .bru files for HTTP methods, support for authentication methods, and addition of test scripts and assertions.
Provides code quality checking for the development of the Bruno MCP server.
Supports repository cloning as part of the installation process, enabling version control of Bruno API testing collections.
Enables installation, building, and running the MCP server through npm commands, with support for dependency management.
Offers code formatting capabilities for the development of the Bruno MCP server.
Supports building the Bruno MCP server project from TypeScript source code.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bruno MCP Servercreate a collection for my e-commerce API tests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bruno MCP Server
A Model Context Protocol (MCP) server for generating Bruno API testing files programmatically.
Overview
Bruno MCP Server enables you to create, manage, and generate Bruno API testing collections, environments, and requests through standardized MCP tools. This allows for automated setup of API testing workflows and integration with Claude and other MCP-compatible clients.
Related MCP server: MongoDB MCP Server
Features
π Collection Management: Create and organize Bruno collections
π Environment Configuration: Manage multiple environments (dev, staging, prod)
π§ Request Generation: Generate .bru files for all HTTP methods
π Authentication Support: Bearer tokens, Basic auth, OAuth 2.0, API keys
π Test Scripts: Add pre/post request scripts and assertions
π CRUD Operations: Generate complete CRUD request sets
π Collection Statistics: Analyze existing collections
Installation
# Clone the repository
git clone https://github.com/macarthy/bruno-mcp.git
cd bruno-mcp
# Install dependencies
npm install
# Build the project
npm run buildClient Integration
The Bruno MCP Server can be integrated with various AI clients that support the Model Context Protocol:
Quick Setup for Claude Desktop
Edit Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add Bruno MCP Server:
{ "mcpServers": { "bruno-mcp": { "command": "node", "args": ["/absolute/path/to/bruno-mcp/dist/index.js"], "env": {} } } }Restart Claude Desktop
Supported Clients
β Claude Desktop App - Full support
β Claude Code (VS Code) - Full support
β Continue - Tools and resources
β Cline - Tools and resources
β LM Studio - Tools support
β MCP Inspector - Development/testing
β Custom MCP Clients - via SDK
π For detailed integration instructions with all clients, see
Usage
With Claude Code or MCP Inspector
Start the MCP server:
npm startUse the MCP Inspector to test tools:
npx @modelcontextprotocol/inspectorAvailable MCP Tools
create_collection
Create a new Bruno collection with configuration.
Parameters:
name(string): Collection namedescription(string, optional): Collection descriptionbaseUrl(string, optional): Default base URLoutputPath(string): Directory to create collectionignore(array, optional): Files to ignore
Example:
{
"name": "my-api-tests",
"description": "API tests for my application",
"baseUrl": "https://api.example.com",
"outputPath": "./collections"
}create_environment
Create environment configuration files.
Parameters:
collectionPath(string): Path to Bruno collectionname(string): Environment namevariables(object): Environment variables
Example:
{
"collectionPath": "./collections/my-api-tests",
"name": "production",
"variables": {
"baseUrl": "https://api.example.com",
"apiKey": "prod-key-123",
"timeout": 30000
}
}create_request
Generate .bru request files.
Parameters:
collectionPath(string): Path to collectionname(string): Request namemethod(string): HTTP methodurl(string): Request URLheaders(object, optional): HTTP headersbody(object, optional): Request bodyauth(object, optional): Authentication configfolder(string, optional): Folder organization
Example:
{
"collectionPath": "./collections/my-api-tests",
"name": "Get User Profile",
"method": "GET",
"url": "{{baseUrl}}/users/{{userId}}",
"headers": {
"Authorization": "Bearer {{token}}"
},
"folder": "users"
}create_crud_requests
Generate complete CRUD operation sets.
Parameters:
collectionPath(string): Path to collectionentityName(string): Entity name (e.g., "Users")baseUrl(string): API base URLfolder(string, optional): Folder name
Example:
{
"collectionPath": "./collections/my-api-tests",
"entityName": "Products",
"baseUrl": "{{baseUrl}}/api/v1",
"folder": "products"
}add_test_script
Add test scripts to existing requests.
Parameters:
bruFilePath(string): Path to .bru filescriptType(string): Script type (pre-request, post-response, tests)script(string): JavaScript code
get_collection_stats
Get statistics about a collection.
Parameters:
collectionPath(string): Path to collection
Generated File Structure
my-collection/
βββ bruno.json # Collection configuration
βββ environments/ # Environment files
β βββ development.bru
β βββ staging.bru
β βββ production.bru
βββ auth/ # Authentication requests
β βββ login.bru
β βββ get-profile.bru
βββ users/ # User management
βββ get-all-users.bru
βββ get-user-by-id.bru
βββ create-user.bru
βββ update-user.bru
βββ delete-user.bruBruno BRU File Format
Generated .bru files follow the Bruno markup language specification:
meta {
name: Get Users
type: http
seq: 1
}
get {
url: {{baseUrl}}/users
body: none
auth: none
}
headers {
Content-Type: application/json
Authorization: Bearer {{token}}
}
script:pre-request {
bru.setVar("timestamp", Date.now());
}
script:post-response {
if (res.status === 200) {
bru.setVar("userId", res.body[0].id);
}
}
tests {
test("Status should be 200", function() {
expect(res.status).to.equal(200);
});
}Testing
Run Unit Tests
npm testRun Integration Tests
npm run test:integrationTest with Bruno CLI
# Generate a collection first
# Then run tests with Bruno CLI
bruno-cli run ./collections/my-api-tests/Examples
See the examples/ directory for complete usage examples:
examples/jsonplaceholder/- JSONPlaceholder API testingexamples/authentication/- Authentication workflowsexamples/complex-workflows/- Multi-step API scenarios
Development
Project Structure
src/
βββ index.ts # Main entry point
βββ server.ts # MCP server implementation
βββ bruno/
β βββ types.ts # TypeScript interfaces
β βββ generator.ts # BRU file generator
β βββ collection.ts # Collection management
β βββ environment.ts # Environment management
β βββ request.ts # Request builder
βββ tools/ # Individual MCP toolsBuilding
npm run build # Build TypeScript
npm run dev # Development mode
npm run clean # Clean build artifactsCode Quality
npm run lint # ESLint
npm run format # PrettierContributing
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
License
MIT License - see LICENSE file for details.
Links
Generated with Bruno MCP Server π
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.