Gatherings Expense Manager
STDIOMCP server for managing gatherings and expense sharing between friends.
MCP server for managing gatherings and expense sharing between friends.
A Model Context Protocol server for managing gatherings and expense sharing.
This is a TypeScript-based MCP server that helps track expenses and payments for social events, making it easy to calculate reimbursements and settle balances between friends.
Important: This project uses a non-standard architecture for a Node.js application. The TypeScript MCP server acts as a wrapper around a Python backend implementation. The Node.js server receives MCP requests, translates them to command-line calls to the Python script, and returns the results.
While this architecture works for our current needs, it's not the most efficient or maintainable approach for a production application.
create_gathering
- Create a new gathering
gathering_id
and members
as required parametersadd_expense
- Add an expense for a member
gathering_id
, member_name
, and amount
as required parameterscalculate_reimbursements
- Calculate reimbursements for a gathering
gathering_id
as a required parameterrecord_payment
- Record a payment made by a member
gathering_id
, member_name
, and amount
as required parametersrename_member
- Rename an unnamed member
gathering_id
, old_name
, and new_name
as required parametersshow_gathering
- Show details of a gathering
gathering_id
as a required parameterlist_gatherings
- List all gatheringsclose_gathering
- Close a gathering
gathering_id
as a required parameterdelete_gathering
- Delete a gathering
gathering_id
as a required parameter, optional force
parameteradd_member
- Add a new member to a gathering
gathering_id
and member_name
as required parametersremove_member
- Remove a member from a gathering
gathering_id
and member_name
as required parametersInstall dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
To use with Claude Desktop, add the server config:
{ "mcpServers": { "gatherings": { "command": "node", "args": ["/path/to/gatherings-server/build/index.js"], "env": { "GATHERINGS_DB_PATH": "gatherings.db", "GATHERINGS_SCRIPT": "/path/to/gatherings-server/gatherings.py" }, "disabled": false, "autoApprove": [], "alwaysAllow": [ "create_gathering", "add_expense", "calculate_reimbursements", "record_payment", "rename_member", "show_gathering", "list_gatherings", "close_gathering", "delete_gathering", "add_member", "remove_member" ], "timeout": 300 } } }
command
and args
: Specifies how to run the serverenv
: Environment variables
GATHERINGS_DB_PATH
: Path to the database fileGATHERINGS_SCRIPT
: Path to the Python script for handling gathering operationsalwaysAllow
: List of tools that will be automatically allowed without promptingtimeout
: Maximum execution time in secondsSince MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.