Investment Statement MCP Server
Stores structured metadata from parsed investment statements in a SQLite database, enabling programmatic queries for holdings, transactions, account balances, and other financial data.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Investment Statement MCP Server
Parse and query investment statements from multiple institutions using natural language.
Features
Multi-Institution Support: Questrade, Interactive Brokers, Scotia iTRADE, TD Direct Investing
Hybrid Storage: SQLite for structured queries + LanceDB for semantic search
Natural Language Queries: Ask questions like "What were my dividends in Q3?" or "Show my SPY holdings"
Structured Tools: Programmatic access via MCP tools
Portfolio Analytics: Risk metrics, performance tracking, benchmark comparisons
Monte Carlo Simulation: 5-year portfolio projections with percentile analysis and visualizations
Archive Management: Keeps original PDFs/CSVs and parsed JSON for reference
Related MCP server: Doc Agent
Installation
# Install dependencies
pip install -e ".[dev]"Configuration
The server is configured via .mcp.json. Key environment variables:
LANCEDB_PATH: Vector database location (default:./data/lancedb)SQLITE_PATH: SQLite database location (default:./data/statements.db)PDF_ARCHIVE_PATH: Original PDF storage (default:./data/pdfs)JSON_ARCHIVE_PATH: Parsed JSON storage (default:./data/json)MODEL_NAME: Embedding model (default:all-MiniLM-L6-v2)
Usage
Starting the Server
python -m src.serverIndexing Statements
# Via MCP tool
index_statement("/path/to/statement.pdf")Querying Data
Natural Language Search:
search_statements("What were my total dividends in 2025?", limit=10)Structured Queries:
get_holdings_by_symbol("SPY")
get_transactions_by_date("2025-01-01", "2025-09-30")
get_account_balance("51516162", "2025-09-30")Monte Carlo Simulation:
# Run portfolio projection simulation
result = run_monte_carlo_simulation(
n_simulations=10000, # 10,000 simulation paths
projection_years=5, # Project 5 years into the future
account_numbers=None, # None = all accounts
percentiles=[10, 25, 50, 75, 90]
)
# Results saved to:
# - Timestamped: data/reports/monte_carlo/2025-11-26_153034/
# - Latest: data/reports/monte_carlo/latest/
#
# Output includes:
# - 3 PNG charts (fan chart, distribution, confidence intervals)
# - 3 CSV files (projections, summary, historical_returns)See MONTE_CARLO.md for detailed documentation.
Resources
statements://catalog- List all indexed statementsstatements://{statement_id}- Get specific statementstatements://{statement_id}/summary- Account summarystatements://{statement_id}/holdings- Holdings/positionsstatements://{statement_id}/transactions- Transaction history
Supported Statements
Questrade
✅ Account Summary (balances, FX rates, TFSA info)
✅ Holdings/Positions (securities with cost basis, P&L)
✅ Transactions (trades, dividends, deposits, withdrawals)
Interactive Brokers (Coming Soon)
⏳ Planned
Scotia (Coming Soon)
⏳ Planned
Development
# Run tests
pytest
# Run tests with coverage
pytest --cov=src --cov-report=html
# Format code
black src tests
# Lint code
ruff check src testsArchitecture
FastMCP 2.0: MCP server framework
pymupdf4llm: PDF parsing optimized for LLMs
LanceDB: Vector database for semantic search
SQLite: Structured metadata storage
sentence-transformers: Embedding generation
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Investment research superagent: podcasts, SEC filings, and no-code research pipelines.
Convert PDF bank statements into structured transactions, accounts, and balances.
Ask Claude about your income and spending, and import bank statements. No bank login.
Clarity on your investments: performance, holdings, dividends, ETF look-through and transactions.
Related MCP Servers
- FlicenseAqualityDmaintenanceParses PDF receipts to extract grocery and shopping expenses, automatically categorizes items using smart rules and LLM fallback, and stores them in a local SQLite database for querying purchase history and spending patterns.3-
- AlicenseNot gradedqualityDmaintenanceEnables extraction of structured data from documents like invoices, receipts, and bank statements using local Vision AI (Ollama) or cloud providers (Gemini), with data stored in a local SQLite database.5 npmMIT
- AlicenseAqualityAmaintenanceSelf-hosted financial data terminal for AI agents. Scrapes and serves SEC filings (full-text search), 13F institutional holdings, insider and congressional trades, FINRA short data, FRED economic indicators, CFTC futures positioning, VIX/put-call ratios, and daily stock prices over MCP.65240AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceConnects Notion databases with LLMs to manage and analyze personal finances through natural language queries and bank statement uploads.1-