loading…
Search for a command to run...
loading…
Converts Quicken QIF files into a queryable DuckDB database and exposes financial data through MCP tools, enabling LLMs to query transactions, accounts, and sum
Converts Quicken QIF files into a queryable DuckDB database and exposes financial data through MCP tools, enabling LLMs to query transactions, accounts, and summaries.
A containerized MCP (Model Context Protocol) server that converts a local export of Quicken in Quicken Interchange Format (QIF) files into a queryable DuckDB database, exposing financial data through standardized MCP tools to LLM Clients.
list_accounts - List all accounts with balanceslist_transactions - Query transactions with flexible filteringrun_sql - Execute safe SQL queries against the dataget_summaries - Generate financial summaries and statisticsget_categories - List transaction categoriessearch_transactions - Search transactions by text
Build the container:
docker build -t quicken-mcp-server .
Register the MCP in your LLM client config
Example of claude-desktop-config.json entry:
"quicken-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"<path>/data:/data:ro",
"quicken-mcp-server",
"--qif",
"/data/personal-data.qif"
],
"env": {}
}
In this example, I have exported my quicken data into the QIF format and named it "personal-data.qif". I then placed it into a folder called "data" and made that folder available to the docker image as a volume also named "data".
Install dependencies:
pip install -r requirements.txt
Run locally:
python -m app.main --qif /path/to/your/file.qif
python -m app.main --help
Required:
--qif PATH - Path to the QIF file to loadOptional:
--server-mode {stdio,sse} - Transport mode (default: stdio)--listen HOST:PORT - Listen address for SSE mode (default: 127.0.0.1:8700)--log-level {DEBUG,INFO,WARNING,ERROR} - Log level (default: INFO)--memory-limit SIZE - DuckDB memory limit (default: 8GB)You can also configure using environment variables:
QIF_PATH - Path to QIF fileSERVER_MODE - Transport modeLOG_LEVEL - Logging levelMEMORY_LIMIT - Memory limitBasic usage with bind mount:
docker run --rm \
-v "$PWD/data:/data:ro" \
--network host \
quicken-mcp --qif /data/example-file.qif
SSE mode with custom port:
docker run --rm \
-v "$PWD/data:/data:ro" \
-p 8700:8700 \
quicken-mcp \
--qif /data/example-file.qif \
--server-mode sse \
--listen 0.0.0.0:8700
list_accountsReturns all accounts with metadata:
{
"success": true,
"accounts": [
{
"account_id": 1,
"name": "Checking Account",
"type": "Bank",
"balance": 1234.56
}
]
}
list_transactionsQuery transactions with optional filters:
{
"account_type": "Bank",
"date_from": "2023-01-01",
"date_to": "2023-12-31",
"category": "Food",
"limit": 50
}
run_sqlExecute SELECT queries:
{
"query": "SELECT category, SUM(amount) FROM transactions WHERE date >= '2023-01-01' GROUP BY category ORDER BY SUM(amount) DESC LIMIT 10"
}
get_summariesGenerate financial summaries:
{
"period": "month" // Options: "month", "category", "account", "all"
}
The server creates the following tables:
Plus useful views:
The MCP Inspector is a powerful debugging tool for testing MCP servers. You can use it to explore available tools, test queries, and debug issues.
Using Docker (Recommended):
# Start the inspector (runs on http://localhost:5173)
docker run --rm --network host -p 5173:5173 ghcr.io/modelcontextprotocol/inspector:latest
Then connect to your server:
docker run --rm -v "/path/to/your/qif:/data:ro" --network host quicken-mcp --qif /data/yourfile.qifhttp://127.0.0.1:8700/sseUsing npx (Local Development):
# For stdio mode
npx @modelcontextprotocol/inspector docker run --rm -v "/path/to/your/qif:/data:ro" --network host quicken-mcp --qif /data/yourfile.qif
# For SSE mode, start the server first, then:
npx @modelcontextprotocol/inspector http://127.0.0.1:8700/sse
Create an mcpm profile:
mcpm profile create quicken-ledger
mcpm profile edit quicken-ledger --add local::quicken-mcp
Configure your editor to use this server:
http://127.0.0.1:8700/sse endpointquicken-mcp-server/
├── app/
│ ├── __init__.py
│ ├── config.py # Configuration management
│ ├── qif_loader.py # QIF parsing and database loading
│ ├── schema.sql # Database schema definitions
│ ├── mcp_tools.py # MCP tool implementations
│ ├── server.py # MCP server setup
│ └── main.py # Application entry point
├── tests/
├── Dockerfile
├── pyproject.toml
├── requirements.txt
└── README.md
pytest
ruff check .
mypy app/
MIT License - see LICENSE file for details.
Выполни в терминале:
claude mcp add quicken-mcp-server -- npx Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.