emma-transactions-mcp
Provides tools to query Emma-app transaction exports stored in Google Sheets, including listing transactions with filters, spending summaries by category/account/month, and sheet metadata.
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., "@emma-transactions-mcp what did I spend on groceries this month?"
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.
Emma Transactions MCP Server
A reusable Model Context Protocol server for querying Emma-app transaction exports stored in Google Sheets.
The server is generic: you provide your own Google Sheet URL, published CSV URL, or Sheet ID at runtime. This repository contains no personal transaction data and no hard-coded Sheet IDs.
Features
list_transactions— list normalized transactions, with filters for category, account, search text, and date range.get_spending_summary— totals for income, expenses, net movement, category, account, and month.get_metadata— available accounts, categories, currencies, row count, and date range.validate_sheet— confirms the sheet can be parsed without returning transaction rows.Google Sheets URL helper — accepts a Sheet ID, a normal
/editURL, a/pub?output=csvURL, or an/export?format=csvURL.Robust CSV parsing — recognizes common column variants such as
Date,Transaction Date,Description,Name,Amount,Value,Category,Account, andMerchant.
Related MCP server: google-sheet-mcp
Privacy model
This server does not store transaction data. It fetches the configured CSV when a tool is called and returns the requested result to the MCP client.
You still need to treat your Google Sheet URL as sensitive. If you publish a Google Sheet to the web as CSV, anyone with that URL may be able to access the data. Use a private runtime environment and do not commit your real Sheet URL to version control.
Requirements
Node.js 20+
An Emma transaction export in Google Sheets, accessible to the process running the MCP server
Current implementation supports unauthenticated CSV access: published-to-web CSV links and Google Sheet export URLs that the runtime can fetch. OAuth/service-account support is intentionally not bundled yet, because credentials for personal finance data need a sharper knife than a README example.
Install
From a checkout:
git clone https://github.com/accesstechnology-mike/emma-transactions-mcp.git
cd emma-transactions-mcp
npm install
npm run buildMCP client configuration
Use an environment variable:
{
"mcpServers": {
"emma-transactions": {
"command": "node",
"args": ["/absolute/path/to/emma-transactions-mcp/dist/index.js"],
"env": {
"EMMA_SHEET_URL": "https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/pub?output=csv",
"EMMA_SHEET_GID": "0"
}
}
}
}Or pass sheet_url in each tool call.
Optional gid selects a specific tab. It defaults to EMMA_SHEET_GID, then 0.
Expected columns
At minimum, the CSV needs:
date:
Date,Transaction Date,Timestamp, orTimedescription:
Description,Name,Transaction,Transaction Name, orTitleamount:
Amount,Value,Transaction Amount,Money Out, orMoney In
Optional columns include Currency, Category, Account, Merchant, Notes, and Type.
Development
npm install
npm test
npm run buildThe test suite uses synthetic fixture rows only. Do not add real transaction exports to tests, issues, screenshots, or docs.
License
MIT
Available Tools
4 toolsget_metadataA
Return available categories, accounts, currencies, row count, and date range
Inputs: sheet_url, gid.
get_spending_summaryB
Summarize income, spending, net movement, and totals by category, account, and month
Inputs: sheet_url, gid, from, to.
list_transactionsB
List normalized Emma transactions with optional filters
Inputs: sheet_url, gid, category, account, +4 more.
validate_sheetB
Fetch and validate that the configured sheet can be parsed without returning transaction rows
Inputs: sheet_url, gid.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool serves a distinct function: metadata retrieval, spending summary, transaction listing, and sheet validation. No overlap in purposes.
All tool names follow a consistent verb_noun pattern (get_metadata, get_spending_summary, list_transactions, validate_sheet) with clear, descriptive verbs.
4 tools is well-scoped for a transaction management server, covering essential operations without being excessive or insufficient.
The server provides metadata, summaries, and transaction listing, but lacks write operations or advanced filtering. This seems intentional for a read-only analysis tool, so the gap is minor.
Maintenance
Related MCP Connectors
Hosted Google Sheets MCP server, with each action switched on or off per account.
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for Google Sheets - read, write, and query spreadsheet data.606 npm2MIT
- AlicenseBqualityDmaintenanceA local MCP server for creating, reading, and updating Google Sheets.7606 npmMIT
- FlicenseDqualityDmaintenanceMCP server to read public Google Sheets data via gviz endpoint, no authentication needed. Supports column filtering and returns structured JSON.11-
- FlicenseNot gradedqualityDmaintenanceMCP server that exposes Google Sheets as read-only resources, providing static and templated URI access to sheet data as CSV.-