Monthly Expense MCP Server
Monthly Expense MCP Server
Un servidor MCP (Model Context Protocol) local que registra tus gastos mensuales.
Los datos se guardan en expenses.json, justo al lado de server.py — no se necesita
ninguna base de datos externa.
Herramientas que expone
add_expense — añade un gasto (fecha, categoría, importe, descripción)
list_expenses — lista los gastos, opcionalmente filtrados por mes/categoría
delete_expense — elimina un gasto por id
monthly_summary — total + desglose por categoría para un mes, además del estado del presupuesto si has establecido uno
set_budget — establece/actualiza un presupuesto para un mes determinado
list_categories — ver todas las categorías que has utilizado
Related MCP server: Expense Tracker MCP
Configuración con uv
Instala uv si aún no lo tienes: https://docs.astral.sh/uv/getting-started/installation/
Crea el entorno e instala FastMCP. Abre una terminal/PowerShell en esta carpeta y ejecuta:
uv sync
3. **Run the server** (it waits for MCP messages on stdin, which is normal):
uv run python server.py
Press Ctrl+C to stop it.
The server is implemented in `server.py` with FastMCP. `uv sync` creates the
local `.venv`, installs the locked dependencies, and generates `uv.lock`.
## Connect it to Claude Desktop
Open your Claude Desktop config file:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
Add (or merge into) the `mcpServers` section:
```json
{
"mcpServers": {
"monthly-expense": {
"command": "C:\\Users\\reenu\\Desktop\\monthly-expense-mcp\\.venv\\Scripts\\python.exe",
"args": [
"C:\\Users\\reenu\\Desktop\\monthly-expense-mcp\\server.py"
]
}
}
}Guarda el archivo y reinicia por completo Claude Desktop. Entonces deberías ver las herramientas de gastos disponibles (busca el icono 🔨 de herramientas en un chat nuevo).
Ejemplo de uso una vez conectado
"Añade un gasto: $45.20 en comestibles el 2026-08-15"
"Muéstrame todos mis gastos de agosto de 2026"
"Establece mi presupuesto de agosto en $2000"
"Dame mi resumen de gastos de agosto"
"Elimina el gasto #3"
Notas
Todos los datos están en
expenses.jsonen esta carpeta — haz una copia de seguridad si te importa el historial. Elimina ese archivo para empezar de cero.Este servidor solo se ejecuta localmente; no envía tus datos a ningún sitio.
Available Tools
6 toolsadd_expenseC
Add a new expense entry. Date must be in YYYY-MM-DD format.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| amount | Yes | ||
| category | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that a new expense entry is added, which implies a write operation, but it does not disclose permissions, idempotency, duplicate handling, validation behavior, or what the response will contain. This is thinner than expected for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: two short sentences with no wasted words. However, the second sentence largely repeats a constraint already present in the schema pattern, and the overall terseness contributes to the missing parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and no schema descriptions, the description leaves important context uncovered: valid categories, amount meaning, expected response, and error behavior. It is minimally viable but not complete enough for an agent to invoke the tool with full confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only clarifies the date format, which the schema's regex already encodes. It does not explain whether category must match an existing category, what amount represents, or that description is optional. The parameter semantics are mostly left to the agent's inference from names and schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Add') and the resource ('a new expense entry'), so its purpose is unambiguous. It is naturally distinguishable from sibling tools like list_expenses and delete_expense, though it does not explicitly name or contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the phrase 'Add a new expense entry,' but the description provides no explicit guidance about when to prefer this tool over alternatives or any caveats. There are no exclusions or alternative tool references, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_expenseB
Delete an expense by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Delete an expense,' which reveals the basic action but not the destructive permanence, potential cascading effects, idempotency, or error behavior. The agent is not warned that this operation likely cannot be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words. It front-loads the verb and resource, making it instantly scannable. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, this description is too thin. It tells the agent what action to perform but not what happens after success or failure, what a response would look like, or whether there are side effects. The low parameter complexity mitigates this somewhat, but the missing behavioral context leaves the definition incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description merely restates that the operation uses an ID without adding any new meaning beyond the parameter name 'id.' It does not clarify the source of the ID, how to obtain it, or any special constraints beyond the schema's integer and exclusiveMinimum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action verb 'Delete' and names the resource 'expense' plus the identifying mechanism 'by its ID.' This unambiguously distinguishes it from sibling tools like add_expense, list_expenses, and monthly_summary, leaving no doubt about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is clear enough that an agent can infer when to use it: any time an expense needs to be removed. However, the description gives no explicit guidance on when to prefer this over alternatives, no prerequisites, and no mention of what happens if the expense does not exist. The usage context is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesA
List all distinct expense categories currently in use.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It signals a non-destructive read operation through 'list,' and adds meaningful behavioral detail by stating the result is 'distinct' and 'currently in use'—meaning only categories appearing in actual expense records are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that states the action, the object, and the filtering scope with no wasted words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing tool, this description is nearly complete. It lacks only an explicit statement of the return format, but the meaning of 'list all categories' is clear enough for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics to document. The description correctly omits parameter details, and the baseline of 4 applies because no clarification is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('list') and resource ('distinct expense categories'), and clarifies the scope with 'currently in use.' This clearly distinguishes it from sibling tools like list_expenses, which would list expense records rather than categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended usage is implied: call this when you need the existing expense categories. However, it provides no explicit when-to-use guidance or comparison with alternatives such as list_expenses or monthly_summary, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_expensesA
List expenses, optionally filtered by month (YYYY-MM) and/or category.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It accurately conveys that this is a listing operation with optional filters, but it does not mention ordering, pagination, authentication requirements, or what the returned expense objects look like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the core operation ('List expenses') and immediately follows with the relevant optional filtering semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two optional parameters and no output schema, the description covers the essential call semantics. However, it does not explain return shape, sorting, or how to choose between this and monthly_summary/list_categories, leaving some selection context to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds the expected month format (YYYY-MM) and clarifies that filters are optional and combinable via 'and/or', but it gives no useful meaning for 'category' beyond the raw property name—such as valid values or where categories come from.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('expenses') and clarifies the optional month/category filters. It is reasonably distinguishable from siblings like monthly_summary and list_categories by the resource named, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool lists item-level expenses and can be filtered, so an agent can infer when it applies. However, it provides no explicit guidance on when to prefer list_expenses over monthly_summary or list_categories, leaving alternative selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
monthly_summaryA
Get a summary (total + per-category breakdown) for a given month (YYYY-MM). Also shows budget status if a budget is set.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the report's contents and the conditional budget-status behavior, and 'Get' clearly signals a read-only operation. It does not state exact response shape or behavior when no expenses are present, but these are minor for a simple summary tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence with the core purpose front-loaded and the conditional budget detail at the end. Every element earns its place and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only reporting tool with no output schema, the description covers the required month format and the key return values. The only minor ambiguity is how the tool behaves when no budget has been set, but this does not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and the schema already enforces its format via the YYYY-MM pattern. The description repeats this format but adds little semantic meaning beyond the schema, so it is adequate rather than additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource ('Get a summary ... for a given month') and specifies the exact output contents (total plus per-category breakdown). This clearly separates it from the sibling tools, which are line-item, mutation, or configuration operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('Get a summary... for a given month') and the budget-status condition is noted, but no alternatives are named and no when-not-to-use guidance is given. With siblings like list_expenses and set_budget, explicitly routing to this tool for aggregate views rather than itemized lists would improve the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_budgetA
Set (or update) the budget for a given month (YYYY-MM).
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | ||
| amount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose the upsert-like behavior by saying 'Set (or update)', which is a useful trait beyond the tool name. However, it does not mention what happens to an existing budget beyond updating it, nor auth requirements, return value, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence that states the core behavior and the key month format up front. Every word adds value, with no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two scalar parameters and no output schema, so the description is close to sufficient for basic invocation. Still, without annotations or an output schema, it leaves the exact effect on an existing budget and the response behavior unspecified, which are gaps an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'month' is in YYYY-MM format and implies that 'amount' is the budget amount. It does not explicitly describe the amount's units or meaning beyond the word 'budget', leaving a minor semantic gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Set (or update)') and a clear resource ('the budget') tied to a month, with the month format included. This separates it from the sibling expense-management tools, which operate on expenses, categories, and summaries rather than budgets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the intended context: creating or updating a monthly budget for a given YYYY-MM month. There are no hidden alternatives among the siblings, so explicit when-not guidance is not necessary; the resource 'budget' is enough to route the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action or resource: adding, listing, deleting expenses, summarizing months, setting budgets, and listing categories. There is no meaningful overlap that would cause an agent to select the wrong tool.
Most tools follow a clear verb_noun pattern: add_expense, list_expenses, delete_expense, set_budget, list_categories. The one deviation is monthly_summary, which uses a noun phrase instead of a verb_prefix, but it is still readable and predictable.
Six tools is well-scoped for a monthly expense management server. Each tool covers a necessary part of the domain without redundancy or bloat.
The tool surface covers creating, reading, and deleting expenses, plus monthly summaries and budgeting. The main gap is the lack of an update_expense tool, but users can work around it by deleting and re-adding an expense.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Personal finance tracker — log transactions, view summaries, and browse a dashboard
Log, query, and edit expenses, budgets, and accounts in Manilo from any MCP-compatible AI assistant.
Manage shared household finances for two people - expenses, budgets, savings, and settlements.
Log, query, and edit expenses, budgets, and accounts in Manilo (formerly Ledgy) from any MCP-compatible AI assistant.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables tracking and managing personal expenses through a local SQLite database. Supports adding, editing, deleting, listing, and summarizing expenses by category, as well as managing credit accounts.6
- FlicenseNot gradedqualityDmaintenanceEnables tracking of personal expenses with tools to add, list, update, delete, and summarize expenses by category.
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to track and manage expenses, including adding, viewing, and summarizing expenses by category, date, or amount, with persistent local storage.2
- FlicenseNot gradedqualityDmaintenanceEnables natural language management of personal expenses, including adding, listing, and summarizing expenses with local SQLite storage.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Harshitnehra/mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server