Skip to main content
Glama
expenselm

expenselm-mcp-server

Official
by expenselm

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_TIMEOUTNoTimeout for MCP requests (in milliseconds).
EXPENSELM_API_KEYYesYour ExpenseLM API key.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_latest_expensesB

Get the latest expense records.

Also for searching expenses by the provided criterias.

Args: skip (int): The number of records to skip. Default is 0. limit (int): The maximum number of records to return. Default is 10. from_date (Optional[date]): The start date for filtering. Default is None. Format is YYYY-MM-DD. to_date (Optional[date]): The end date for filtering. Default is None. Format is YYYY-MM-DD. text_input (Optional[str]): The text for semantic search. Default is None.

Returns: list[ExpenseRecord]: The latest expense records.

get_expense_by_idA

Get an expense record by id.

Args: id: The id of the expense.

Returns: ExpenseImageData: The expense record.

get_latest_subscription_expensesA

Get the latest expense records related to regular subscriptions.

Args: skip (int): The number of records to skip. Default is 0. limit (int): The maximum number of records to return. Default is 10. from_date (Optional[date]): The start date for filtering. Default is None. Format is YYYY-MM-DD. to_date (Optional[date]): The end date for filtering. Default is None. Format is YYYY-MM-DD. text_input (Optional[str]): The text for semantic search. Default is None.

Returns: list[ExpenseRecord]: The latest subscription expense records.

get_expense_summary_by_month_by_currencyA

Get expense summary by month and currency for the provided period.

Args: from_date (required): The start date for filtering. Format is YYYY-MM-DD. to_date (required): The end date for filtering. Format is YYYY-MM-DD.

Returns: list[MonthCurAmtStatItem]: The expense summary by month and currency. For month, the format is YYYY-MM.

get_expense_summary_by_category_by_currencyA

Get expense summary by category and currency for the provided period.

Args: from_date (required): The start date for filtering. Format is YYYY-MM-DD. to_date (required): The end date for filtering. Format is YYYY-MM-DD.

Returns: list[CategoryCurAmtStatItem]: The expense summary by category and currency.

get_expense_summary_by_subscription_by_currencyA

Get expense summary by subscription and currency for the provided period.

Args: from_date (required): The start date for filtering. Format is YYYY-MM-DD. to_date (required): The end date for filtering. Format is YYYY-MM-DD.

Returns: list[SubscriptionCurAmtStatItem]: The expense summary by subscription and currency.

download_expense_receipt_imageA

Download an expense receipt image from the backend API.

Args: expense_id: The ID of the expense to download the receipt image for thumbnail: Whether to download the thumbnail version (default: False)

Returns: dict containing the image data (base64 encoded), content type, and metadata

save_expense_receipt_imageA

Download and save an expense receipt image to a local file.

Args: expense_id: The ID of the expense to download the receipt image for save_path: Local file path where the image should be saved thumbnail: Whether to download the thumbnail version (default: False)

Returns: dict containing success status and file information

get_expense_count_by_periodA

Get expense count for the provided period.

Example usage: When user want to perform analytics for a period, first use this method to get the count of total expenses first. Then can use the get_latest_expenses tool to fetch the expenses by page to get all records.

Args: from_date (required): The start date for filtering. Format is YYYY-MM-DD. to_date (required): The end date for filtering. Format is YYYY-MM-DD.

Returns: int: The count of expense reocrds for the period.

get_subscription_expense_count_by_periodA

Get subscription based expense count for the provided period.

Example usage: When user want to perform analytics of subscription based expenses for a period, first use this method to get the count of total subscription based expenses first. Then can use the get_latest_subscription_expenses tool to fetch the expenses by page to get all records.

Args: from_date (required): The start date for filtering. Format is YYYY-MM-DD. to_date (required): The end date for filtering. Format is YYYY-MM-DD.

Returns: int: The count of subscription based expense reocrds for the period.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools are clearly separated by resource and action: expense list/by-id, subscription expenses, summary dimensions, counts, and receipts. The only real ambiguity is between download_expense_receipt_image and save_expense_receipt_image, which differ mainly in whether the image is returned as data or written to a local file.

Naming Consistency5/5

All names consistently use snake_case with a clear verb (get, download, save) followed by the object and modifiers. Patterns like get_expense_summary_by_*_by_currency and get_*_expense_count_by_period make the toolset predictable and easy to navigate.

Tool Count5/5

Ten tools is well-scoped for an expense retrieval and analytics server. Each tool covers a distinct retrieval, summary, count, or receipt operation, with no redundant or filler tools.

Completeness5/5

The server covers the apparent read-only analytics domain thoroughly: listing/searching/paginating expenses, by-id lookup, subscription expenses, monthly/category/subscription summaries, per-period counts, and receipt image retrieval/saving. The count + pagination flow is explicitly supported, so there are no dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues