Skip to main content
Glama
index.ts7.15 kB
/** * @file Resources Index * @version 1.0.0 * @description Exports all resource handlers for the Brex MCP server */ import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { ListResourcesRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { registerAccountsResource } from "./accounts.js"; import { registerExpensesResource } from "./expenses.js"; import { registerCardExpensesResource } from "./cardExpenses.js"; import { registerBudgetsResource } from "./budgets.js"; import { registerSpendLimitsResource } from "./spendLimits.js"; import { registerBudgetProgramsResource } from "./budgetPrograms.js"; import { registerCardAccountsResource } from "./cardAccounts.js"; import { registerCashAccountsResource } from "./cashAccounts.js"; import { registerTransactionsResource } from "./transactions.js"; import { registerResourcesRouter } from "./router.js"; import { registerUsageResource } from "./usage.js"; import { logInfo, logDebug, logError } from "../utils/logger.js"; /** * Registers all resource handlers with the server * @param server The MCP server instance */ export function registerResources(server: Server): void { // Register resource handlers registerAccountsResource(server); registerExpensesResource(server); registerCardExpensesResource(server); registerBudgetsResource(server); registerSpendLimitsResource(server); registerBudgetProgramsResource(server); registerCardAccountsResource(server); registerCashAccountsResource(server); registerTransactionsResource(server); // Router last to ensure we return proper 'contents' arrays for expenses URIs registerResourcesRouter(server); registerUsageResource(server); // Register the list resources handler registerListResourcesHandler(server); } /** * Registers the handler for listing available resources * @param server The MCP server instance */ function registerListResourcesHandler(server: Server): void { server.setRequestHandler(ListResourcesRequestSchema, async () => { try { logInfo("===== LIST RESOURCES START ====="); logDebug("Request to list available Brex resources received"); // Define our resources statically - no API calls // Use simple URIs (not templates) for listing const resources = [ { uri: "brex://accounts", mimeType: "application/json", name: "Brex Accounts", description: "List of all Brex accounts" }, { uri: "brex://accounts/card", mimeType: "application/json", name: "Brex Card Accounts", description: "List of all Brex card accounts" }, { uri: "brex://accounts/cash", mimeType: "application/json", name: "Brex Cash Accounts", description: "List of all Brex cash accounts" }, { uri: "brex://accounts/cash/primary", mimeType: "application/json", name: "Brex Primary Cash Account", description: "Brex primary cash account details" }, { uri: "brex://transactions/card/primary", mimeType: "application/json", name: "Brex Card Transactions", description: "List of all Brex card transactions" }, { uri: "brex://expenses", mimeType: "application/json", name: "Brex Expenses", description: "List of all Brex expenses" }, { uri: "brex://expenses/card", mimeType: "application/json", name: "Brex Card Expenses", description: "List of all Brex card expenses" }, { uri: "brex://budgets", mimeType: "application/json", name: "Brex Budgets", description: "List of all Brex budgets" }, { uri: "brex://spend_limits", mimeType: "application/json", name: "Brex Spend Limits", description: "List of all Brex spend limits" }, { uri: "brex://budget_programs", mimeType: "application/json", name: "Brex Budget Programs", description: "List of all Brex budget programs" }, { uri: "brex://docs/usage", mimeType: "application/json", name: "Brex MCP Usage Guide", description: "Guidelines and examples for using the tools safely and efficiently" } ]; logDebug(`Responding with ${resources.length} available resources: ${resources.map(r => r.uri).join(', ')}`); logInfo("===== LIST RESOURCES END ====="); // Return immediately without any async operations return { resources }; } catch (error) { logError(`Error in ListResourcesRequestSchema handler: ${error instanceof Error ? error.message : String(error)}`); logError("Stack trace: " + (error instanceof Error ? error.stack : "Not available")); // Still need to return resources even if logging fails return { resources: [ { uri: "brex://accounts", mimeType: "application/json", name: "Brex Accounts", description: "List of all Brex accounts" }, { uri: "brex://accounts/card", mimeType: "application/json", name: "Brex Card Accounts", description: "List of all Brex card accounts" }, { uri: "brex://accounts/cash", mimeType: "application/json", name: "Brex Cash Accounts", description: "List of all Brex cash accounts" }, { uri: "brex://accounts/cash/primary", mimeType: "application/json", name: "Brex Primary Cash Account", description: "Brex primary cash account details" }, { uri: "brex://transactions/card/primary", mimeType: "application/json", name: "Brex Card Transactions", description: "List of all Brex card transactions" }, { uri: "brex://expenses", mimeType: "application/json", name: "Brex Expenses", description: "List of all Brex expenses" }, { uri: "brex://expenses/card", mimeType: "application/json", name: "Brex Card Expenses", description: "List of all Brex card expenses" }, { uri: "brex://budgets", mimeType: "application/json", name: "Brex Budgets", description: "List of all Brex budgets" }, { uri: "brex://spend_limits", mimeType: "application/json", name: "Brex Spend Limits", description: "List of all Brex spend limits" }, { uri: "brex://budget_programs", mimeType: "application/json", name: "Brex Budget Programs", description: "List of all Brex budget programs" } ] }; } }); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/crazyrabbitLTC/mcp-brex-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server