Brex MCP Server
Enables interaction with Brex financial data including expenses, budgets, transactions, and accounts through read-only API access with support for pagination, filtering, and receipt management.
README
Brex MCP Server
A Model Context Protocol (MCP) server for the Brex API. Optimized for safe, small, read-only responses with projection and batching.
What’s New (0.3.2)
- Fix: Tools now include a permissive
inputSchemain the tools list so clients like Claude Code properly display and allow calling tools. No behavior changes to handlers.
Installation
Claude Code
# Install the package
npm install -g mcp-brex
# Add to Claude Code with your API key
claude mcp add brex --env BREX_API_KEY=your_brex_api_key -- npx mcp-brex
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"brex": {
"command": "npx",
"args": ["mcp-brex"],
"env": {
"BREX_API_KEY": "your_brex_api_key"
}
}
}
}
Manual Setup (Development)
git clone https://github.com/dennisonbertram/mcp-brex.git
cd mcp-brex
npm install
npm run build
claude mcp add brex --env BREX_API_KEY=your_key -- node build/index.js
Resources
brex://expenses|brex://expenses/{id}|brex://expenses/card|brex://expenses/card/{id}brex://budgets|brex://budgets/{id}brex://spend_limits|brex://spend_limits/{id}brex://budget_programs|brex://budget_programs/{id}brex://transactions/card/primary|brex://transactions/cash/{id}brex://docs/usage(compact usage guide for agents)
Notes:
- Resources accept
?summary_only=true&fields=id,status,...to control payload size. - Expenses resources auto-expand
merchantandbudgetfor readability.
Tools (read-only unless noted)
- Budgets:
get_budgets,get_budget - Spend Limits:
get_spend_limits,get_spend_limit - Budget Programs:
get_budget_programs,get_budget_program - Expenses (single page):
get_expenses - Expenses (paginated):
get_all_expenses,get_all_card_expenses - Expense by ID:
get_expense,get_card_expense - Card Statements:
get_card_statements_primary - Transactions:
get_card_transactions,get_cash_transactions(note: no date filter/expand on transactions) - Cash Statements:
get_cash_account_statements - Accounts:
get_all_accounts,get_account_details - Receipts (write):
match_receipt,upload_receipt - Updates (write):
update_expense
How to call tools
Always send parameters under arguments (not input). Keep payloads small with pagination and filtering.
Common parameters:
- Pagination:
page_size(<=50),max_items(<=200 recommended) - Date filtering:
start_date,end_date,window_days - Status filtering:
statusarray for expenses/transactions - Amount filtering:
min_amount,max_amountfor expenses - Merchant filtering:
merchant_namefor expenses - Expand control:
expandarray to include nested objects (e.g.,["merchant", "budget"])
Recommended examples:
{
"name": "get_all_card_expenses",
"arguments": {
"page_size": 10,
"max_items": 20,
"start_date": "2025-08-25T00:00:00Z",
"end_date": "2025-08-26T00:00:00Z",
"status": ["APPROVED"],
"min_amount": 100
}
}
{
"name": "get_expenses",
"arguments": {
"limit": 5,
"status": "APPROVED"
}
}
{
"name": "get_card_transactions",
"arguments": {
"limit": 10,
"summary_only": true,
"fields": ["id", "posted_at", "amount.amount", "amount.currency", "merchant.raw_descriptor"]
}
}
{
"name": "get_all_accounts",
"arguments": {
"page_size": 10,
"max_items": 20,
"status": "ACTIVE"
}
}
{
"name": "get_transactions",
"arguments": {
"accountId": "acc_123456789",
"limit": 10
}
}
{
"name": "get_expenses",
"arguments": {
"limit": 5,
"expand": ["merchant", "user"]
}
}
Pagination and Filtering Best Practices
IMPORTANT: Use pagination, filtering, and sorting to control response sizes instead of relying on summaries.
Key Parameters for Data Control:
page_size: number— Items per page (recommended: ≤50)max_items: number— Maximum total items across all pages (recommended: ≤200)start_date/end_date: string— ISO date range filteringwindow_days: number— Split large date ranges into smaller batchesstatus: string[]— Filter by status (e.g., ["APPROVED", "PENDING"])min_amount/max_amount: number— Amount-based filtering for expenses
Best Practices:
- Always use date ranges for bulk requests to avoid huge responses
- Use small page sizes (≤50) and reasonable max_items (≤200)
- Apply status filters to get only the data you need
- Use window_days (e.g., 7) to batch large date ranges
- Control nested object expansion with the
expandparameter:- Default:
expand: []returns lean objects (~500-1000 tokens each) - With expansion:
expand: ["merchant", "budget"]returns full objects (~15K+ tokens each) - Available expand options:
merchant,budget,user,department,location,receipts
- Default:
- Test with small limits first before scaling up
- Cash endpoints require additional Brex scopes; handle 403s gracefully
Note: Brex transactions endpoints (card and cash) do not support posted_at_start or expand. Retrieve transactions and, if needed, filter client-side by posted_at/posted_at_date.
Money & Units
All amounts from Brex are in cents. This server annotates money fields in tool outputs by default to prevent unit mistakes:
- amount_cents: integer (e.g., 100000)
- amount_dollars: number in dollars (e.g., 1000.0)
- amount_formatted: human-friendly string (e.g., "$1,000.00")
Example (expense purchased_amount):
{
"purchased_amount": {
"amount_cents": 100000,
"amount_dollars": 1000.0,
"amount_formatted": "$1,000.00",
"currency": "USD"
}
}
Controls:
format_amounts:"cents" | "dollars" | "both"(default:"both")include_formatted: boolean (default: true)include_summary: boolean (default: true) addsmeta.summarytotals/averages
Publishing
Only build/, README.md, and LICENSE are published.
License
MIT — see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.