About Bruno MCP
Bruno MCP is an MCP server published by macarthy in the Developer Tools category: ๐ MCP server for generating Bruno API testing files programmatically. Create collections, environments, requests, and test scripts using AI clients like Claude Desktop. It has been installed 0 times through Conduid.
The repository has 10 stars and 3 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.
Install
npx bruno-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Bruno MCP
Powered by Claude · Grounded in docs
Security checks
- ยทREADME presentNot checked yet.
- ยทLicense declaredNot checked yet.
- ยทTests presentNot checked yet.
- ยทDependencies pinnedNot checked yet.
- ยทNo dynamic code executionNot checked yet.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
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.
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 build
Client 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.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
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 INTEGRATION.md
Usage
With Claude Code or MCP Inspector
- Start the MCP server:
npm start
- Use the MCP Inspector to test tools:
npx @modelcontextprotocol/inspector
Available 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.bru
Bruno 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 test
Run Integration Tests
npm run test:integration
Test 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 tools
Building
npm run build # Build TypeScript
npm run dev # Development mode
npm run clean # Clean build artifacts
Code Quality
npm run lint # ESLint
npm run format # Prettier
Contributing
- 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 ๐
README mirrored from the source repository 3 months ago. The original is authoritative.