Brex MCP Server
Provides access to Brex financial platform data, allowing retrieval of account information, transactions, expense data, receipts, budget resources, spend limits, and team information. Includes tools for receipt management and expense updates.
Click on "Deploy 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., "@Brex MCP Server show me my approved expenses from last week"
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.
Brex MCP Server
A Model Context Protocol (MCP) server for the Brex API. Optimized for safe, small, read-only responses with projection and batching.
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-brexClaude 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.jsRelated MCP server: YNAB MCP Server
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_budgetSpend Limits:
get_spend_limits,get_spend_limitBudget Programs:
get_budget_programs,get_budget_programExpenses (single page):
get_expensesExpenses (paginated):
get_all_expenses,get_all_card_expensesExpense by ID:
get_expense,get_card_expenseCard Statements:
get_card_statements_primaryTransactions:
get_card_transactions,get_cash_transactionsCash Statements:
get_cash_account_statementsAccounts:
get_all_accounts,get_account_detailsReceipts (write):
match_receipt,upload_receiptUpdates (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_daysStatus filtering:
statusarray for expenses/transactionsAmount filtering:
min_amount,max_amountfor expensesMerchant filtering:
merchant_namefor expensesExpand 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,
"posted_at_start": "2025-08-25T00:00:00Z"
}
}{
"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
Test with small limits first before scaling up
Cash endpoints require additional Brex scopes; handle 403s gracefully
Publishing
Only build/, README.md, and LICENSE are published.
License
MIT — see LICENSE.
Available Tools
21 toolsget_account_detailsC
Get detailed information about a Brex account
Inputs: accountId (required).
get_all_accountsB
Get all Brex accounts with pagination support
Inputs: page_size, max_items, status.
get_all_card_expensesB
LIST: Paginated card expenses (no expense_type needed). Returns complete card expense objects. Example: {"page_size":5,"max_items":5,"window_days":7,"min_amount":100}
Inputs: page_size, max_items, status, payment_status, +7 more.
get_all_expensesC
LIST: Paginated expenses with filters. Returns complete expense objects. Example: {"page_size":5,"max_items":5,"status":["APPROVED"],"window_days":7,"min_amount":100}
Inputs: page_size, max_items, expense_type, status, +7 more.
get_budgetA
Get a budget by ID (read-only). Returns the complete budget object. Example: {"budget_id":"budget_123"}
Inputs: budget_id (required).
get_budget_programC
Get a budget program by ID (read-only). Example: {"id":"bp_123"}
Inputs: id (required).
get_budget_programsC
List budget programs (read-only). Returns complete budget program objects. Example: {"limit":10,"budget_program_status":"ACTIVE"}
Inputs: limit, cursor, budget_program_status.
get_budgetsB
List budgets (read-only). Example: {"limit":10}
Inputs: limit, cursor, parent_budget_id, spend_budget_status.
get_card_expenseC
Get a single card expense by ID. Returns the complete card expense object. Example: {"expense_id":"expense_123","expand":["merchant"]}
Inputs: expense_id (required), expand.
get_card_statements_primaryC
Get complete statements for the primary card account. Returns full statement objects. Example: {"limit":10}
Inputs: cursor, limit.
get_card_transactionsC
LIST: Primary card transactions. Returns complete transaction objects. Example: {"limit":10,"posted_at_start":"2025-08-01T00:00:00Z","expand":["merchant"]}
Inputs: cursor, limit, user_ids, posted_at_start, +1 more.
get_cash_account_statementsC
Get cash account statements by account ID. Returns complete statement objects. Example: {"account_id":"cash_acc_123","limit":5}
Inputs: account_id (required), cursor, limit.
get_cash_transactionsB
LIST: Cash transactions (requires cash scopes). Example: {"account_id":"cash_acc_123","limit":10}. Returns complete transaction objects.
Inputs: account_id (required), cursor, limit, posted_at_start, +1 more.
get_expenseB
Get a single expense by ID. Returns the complete expense object. Example: {"expense_id":"expense_123","expand":["merchant"]}
Inputs: expense_id (required), expand.
get_expensesB
LIST (single page): Expenses with optional filters. Returns complete expense objects. Example: {"limit":5,"status":"APPROVED","expand":["merchant"]}
Inputs: expense_type, status, payment_status, limit, +1 more.
get_spend_limitB
Get a spend limit by ID (read-only). Example: {"id":"sl_123"}
Inputs: id (required).
get_spend_limitsC
List spend limits (read-only). Example: {"limit":10,"status":"ACTIVE"}
Inputs: limit, cursor, parent_budget_id, status, +1 more.
get_transactionsC
Get transactions for a Brex account
Inputs: accountId (required), limit.
match_receiptA
Create a pre-signed URL for uploading a receipt that will be automatically matched with existing expenses
Inputs: receipt_name (required), receipt_type, notify_email.
update_expenseC
Update an existing card expense
Inputs: expense_id (required), memo, category, budget_id, +3 more.
upload_receiptC
Upload a receipt image to match with expenses
Inputs: receipt_data (required), receipt_name (required), content_type (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 21 tools
Most tools have distinct purposes targeting specific resources like accounts, expenses, budgets, or transactions, with clear naming. However, some overlap exists between 'get_all_expenses' and 'get_expenses' (both list expenses with filters), and 'get_all_card_expenses' and 'get_card_expense' could cause minor confusion due to similar naming but different functions (list vs. single).
Tool names follow a highly consistent verb_noun pattern throughout, using 'get_' for read operations, 'update_' for modifications, and 'match_'/'upload_' for specific actions. All names are in snake_case with no deviations, making them predictable and easy to parse for an agent.
With 21 tools, the count is on the higher side for a financial management server, bordering on heavy. While it covers many aspects of Brex's domain (accounts, expenses, budgets, transactions, receipts), it might be slightly overwhelming for an agent to navigate efficiently, though not extreme.
The tool set provides comprehensive read coverage for core resources like accounts, expenses, budgets, and transactions, with some write/update capabilities (e.g., update_expense, match_receipt). Minor gaps include lack of create/delete operations for budgets or spend limits, but agents can likely work around this for most workflows in the financial domain.
Maintenance
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables LLMs to interact with Ramp's financial data by retrieving, analyzing, and running tasks through Ramp's Developer API, using an in-memory SQLite database to overcome token limitations.34MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol server that enables AI-powered interaction with YNAB (You Need A Budget) data, allowing users to query their budgets through conversational interfaces.22288 npm168MIT
- AlicenseBqualityNot gradedmaintenanceEnables AI agents to interact with the Brex financial platform, allowing access to account information, transactions, expenses, receipts, budgets, and spend limits through the Brex API.92 npm-
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that provides a secure wrapper around the Brale API, enabling AI assistants to perform stablecoin issuance, transfers, account management, and other financial operations.1MIT