Quicken MCP Server
Provides tools to query and analyze Quicken financial data through Ollama, including account listing, transaction search, SQL queries, and financial summaries.
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., "@Quicken MCP ServerList my transactions from last 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.
Quicken MCP Server
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.
Features
QIF Import: Parse and normalize Quicken QIF files into structured database tables
In-Memory Database: Uses DuckDB for fast, SQL-compatible data access
MCP Tools: Exposes financial data through standardized MCP tools including:
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
Multiple Transports: Supports both stdio and Server-Sent Events (SSE) protocols
Security: SQL queries are restricted to SELECT operations only
Resources: Export data as CSV files through MCP resources
Related MCP server: DataPilot AI MCP Server
TLDR: Talk to your Quicken data in ChatGPT, Claude or ollama!

Quick Start
Using Docker (Recommended)
Build the container:
docker build -t quicken-mcp-server .Register the MCP in your LLM client config
Example of
claude-desktop-config.jsonentry:"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".
Local Development
Install dependencies:
pip install -r requirements.txtRun locally:
python -m app.main --qif /path/to/your/file.qif
Usage Examples
Command Line Options
python -m app.main --helpRequired:
--qif PATH- Path to the QIF file to load
Optional:
--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)
Environment Variables
You can also configure using environment variables:
QIF_PATH- Path to QIF fileSERVER_MODE- Transport modeLOG_LEVEL- Logging levelMEMORY_LIMIT- Memory limit
Docker Examples
Basic usage with bind mount:
docker run --rm \
-v "$PWD/data:/data:ro" \
--network host \
quicken-mcp --qif /data/example-file.qifSSE 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:8700MCP Tools Reference
list_accounts
Returns all accounts with metadata:
{
"success": true,
"accounts": [
{
"account_id": 1,
"name": "Checking Account",
"type": "Bank",
"balance": 1234.56
}
]
}list_transactions
Query transactions with optional filters:
{
"account_type": "Bank",
"date_from": "2023-01-01",
"date_to": "2023-12-31",
"category": "Food",
"limit": 50
}run_sql
Execute 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_summaries
Generate financial summaries:
{
"period": "month" // Options: "month", "category", "account", "all"
}Database Schema
The server creates the following tables:
accounts - Account information (name, type, balance, etc.)
categories - Transaction categories and metadata
transactions - Individual transactions
transaction_splits - Split transaction details
Plus useful views:
transactions_with_categories - Transactions joined with category info
monthly_summaries - Monthly spending summaries
category_summaries - Category-wise summaries
MCP Client Integration
Testing with MCP Inspector
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:latestThen connect to your server:
Stdio mode: Use command
docker run --rm -v "/path/to/your/qif:/data:ro" --network host quicken-mcp --qif /data/yourfile.qifSSE mode: Use URL
http://127.0.0.1:8700/sse
Using 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/sseWith mcpm (MCP Manager)
Create an mcpm profile:
mcpm profile create quicken-ledger
mcpm profile edit quicken-ledger --add local::quicken-mcpWith MCP-compatible editors
Configure your editor to use this server:
Stdio mode: Point to the docker run command
SSE mode: Use
http://127.0.0.1:8700/sseendpoint
Security Considerations
QIF files should be trusted and local
SQL execution is restricted to SELECT statements only
Dangerous SQL keywords are blocked
Container runs as non-root user
File access is controlled through bind mounts
Performance
Recommended memory limit: 8GB for large datasets
File size warning at 100MB+
Query results limited to prevent memory issues
DuckDB provides excellent analytical performance
Development
Project Structure
quicken-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.mdRunning Tests
pytestCode Quality
ruff check .
mypy app/License
MIT License - see LICENSE file for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
- Era ContextOAuthapp.era
Personal finance, bank account, and shared memory connector for Claude, ChatGPT, Gemini Spark & more
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Personal-finance workspace for AI agents: accounts, spending, budgets, goals, and investments.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides an MCP server for querying and managing Monarch Money personal finance data through a local SQLite mirror with read-only SQL access. It enables users to sync transaction history from the Monarch API and analyze accounts, categories, and tags.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables natural language data analysis on uploaded CSV files by converting them to SQLite and exposing read-only database tools via MCP. Integrates with Ollama LLM to translate user questions into safe SQL queries.-
- AlicenseNot gradedqualityAmaintenanceRead-only MCP server that lets local AI agents query bank transactions stored in a local SQLite database, with tools for accounts, transaction search, spending summaries, recurring charges, trends, themes, subscriptions, and store health.2MIT
- FlicenseNot gradedqualityCmaintenanceEnables local analysis of personal finance data from a Monter JSON export, answering questions about spending, subscriptions, debts, and more via MCP-capable assistants without any cloud servers.-