Skip to main content
Glama
MCP-Mirror
by MCP-Mirror
README.md
# Brex MCP Server

A Model Context Protocol (MCP) server for integrating with the Brex API, enabling AI agents to interact with financial data and resources.

## Overview

This MCP server provides a bridge between AI agents and the Brex financial platform, allowing agents to:

- Retrieve account information and transactions
- Access expense data and receipts
- Manage budget resources and spend limits
- View team information

The server implements standardized resource handlers and tools following the MCP specification, enabling secure and efficient access to financial data.

## Features

### Resources

#### Account Resources
- `brex://accounts` - List all accounts
- `brex://accounts/{id}` - Access specific account details

#### Expense Resources
- `brex://expenses` - List all expenses with pagination
- `brex://expenses/{id}` - Access specific expense details
- `brex://expenses/card` - List all card expenses
- `brex://expenses/card/{id}` - Access specific card expense details

> **Note**: Expense resources automatically expand merchant and budget information to display human-readable names instead of IDs.

#### Budget Resources
- `brex://budgets` - List all budgets with pagination
- `brex://budgets/{id}` - Access specific budget details
- `brex://spend_limits` - List all spend limits
- `brex://spend_limits/{id}` - Access specific spend limit details
- `brex://budget_programs` - List all budget programs
- `brex://budget_programs/{id}` - Access specific budget program details

#### Team Resources
- `brex://users/me` - Get current user information

### Tools

#### Receipt Management
- `match_receipt` - Match a receipt with existing expenses
- `upload_receipt` - Upload a receipt for a specific expense

#### Expense Management
- `update_expense` - Update details for a card expense (memo, category, etc.)
- `get_all_expenses` - Get all expenses with filtering options and expanded merchant/budget information
- `get_all_card_expenses` - Get all card expenses with filtering options and expanded merchant/budget information

> **Note**: For security reasons, tools that create, update, or delete budgets, spend limits, and budget programs are not implemented in this version.

## Installation

### Prerequisites
- Node.js v18 or higher
- Brex API access token

### Setup

1. Clone this repository:
```bash
git clone https://github.com/dennisonbertram/brex-mcp-server.git
cd brex-mcp-server
```

2. Install dependencies:
```bash
npm install
```

3. Create a `.env` file with your Brex API token:
```
BREX_API_KEY=your_token_here
BREX_API_URL=https://platform.brexapis.com
PORT=3000
NODE_ENV=development
RATE_LIMIT_REQUESTS=1000
RATE_LIMIT_WINDOW_MS=60000
LOG_LEVEL=info
```

4. Build the server:
```bash
npm run build
```

### Configuration with Claude

To use with Claude Desktop, you need to add the server to Claude's configuration file:

On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
On Windows: `%APPDATA%\Claude\claude_desktop_config.json`

1. Open Claude for Desktop and go to settings by clicking on the Claude menu and selecting "Settings..."
2. Click on "Developer" in the left sidebar, then click "Edit Config"
3. Update the configuration file with the Brex MCP server settings:

```json
{
  "mcpServers": {
    "brex-server": {
      "command": "node",
      "args": [
        "/path/to/brex-mcp-server/build/index.js"
      ],
      "env": {
        "BREX_API_KEY": "your_brex_api_key_here",
        "BREX_API_URL": "https://platform.brexapis.com",
        "PORT": "3000",
        "NODE_ENV": "development",
        "RATE_LIMIT_REQUESTS": "1000",
        "RATE_LIMIT_WINDOW_MS": "60000",
        "LOG_LEVEL": "info"
      }
    }
  }
}
```

Make sure to:
- Replace `/path/to/brex-mcp-server` with the actual path where you installed the server
- Replace `your_brex_api_key_here` with your actual Brex API key
- Use absolute paths for the server location

Only the `BREX_API_KEY` and `BREX_API_URL` values are required; the other environment variables have sensible defaults but can be customized if needed.

4. Save the file and restart Claude for Desktop
5. Verify the server is working by checking for the hammer icon in the bottom right corner of the input box

## Development

For development with auto-rebuild:
```bash
npm run dev
```

Lint your code:
```bash
npm run lint
```

Run tests:
```bash
npm run test
```

### Debugging

Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) for debugging.

## Security Considerations

This server implements several security measures:
- Read-only operations for sensitive financial resources
- No storage of API credentials in code
- Rate limiting for API requests
- Proper error handling and logging

## Implementation Status

For a detailed implementation plan and status of various features, see `documentation/implementation_plan.md`.

## License

This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.

## Author

Dennison Bertram - [dennison@dennisonbertram.com](mailto:dennison@dennisonbertram.com)

TDQS

B3.1/5.0

Scored across 9 tools

Disambiguation3/5

The tools have some clear distinctions, such as between get_all_accounts and get_account_details, but there is significant overlap between get_all_expenses, get_all_card_expenses, and get_expenses, which could confuse an agent about which to use for expense retrieval. The match_receipt and upload_receipt tools also have related purposes, though their descriptions help differentiate them slightly.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., get_account_details, update_expense, upload_receipt), with clear verbs like 'get', 'match', 'update', and 'upload'. The only minor deviation is get_all_accounts vs. get_account_details, but overall the naming is predictable and readable across the set.

Tool Count5/5

With 9 tools, the server is well-scoped for managing Brex accounts, expenses, and receipts. This count is appropriate for the financial domain, covering core operations without being overwhelming, and each tool appears to serve a distinct function in the workflow.

Completeness4/5

The tool set covers key areas like account retrieval, expense management, and receipt handling, with good CRUD-like operations (e.g., get, update). However, there are minor gaps, such as no tool for creating new expenses or deleting data, which might limit full lifecycle management, but agents can likely work around these for common tasks.