MCP服务器投资报表
使用自然语言解析和查询来自多个机构的投资报表。
特性
- 多机构支持:Questrade、盈透证券、Scotia iTRADE、道明自管投资
- 混合存储:SQLite用于结构化查询+LanceDB用于语义搜索
- 自然语言查询:问“我第三季度的股息是多少?”或“显示我的SPY持股”等问题
- 结构化工具:通过MCP工具进行程序化访问
- 组合分析:风险度量、绩效跟踪、基准比较
- 蒙特卡罗模拟:5年投资组合预测,包括百分位数分析和可视化
- 档案管理:保留原始PDF/CSV和解析的JSON以供参考
安装
# Install dependencies
pip install -e ".[dev]"配置
服务器通过以下方式配置 .mcp.json.关键环境变量:
LANCEDB_PATH:矢量数据库位置(默认值:./data/lancedb)SQLITE_PATH:SQLite数据库位置(默认值:./data/statements.db)PDF_ARCHIVE_PATH:原始PDF存储(默认值:./data/pdfs)JSON_ARCHIVE_PATH:解析的JSON存储(默认值:./data/json)MODEL_NAME:嵌入模型(默认值:all-MiniLM-L6-v2)
用法
启动服务器
python -m src.server索引语句
# Via MCP tool
index_statement("/path/to/statement.pdf")查询数据
自然语言搜索:
search_statements("What were my total dividends in 2025?", limit=10)结构化查询:
get_holdings_by_symbol("SPY")
get_transactions_by_date("2025-01-01", "2025-09-30")
get_account_balance("51516162", "2025-09-30")蒙特卡洛模拟:
# 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)看 蒙特卡洛.md 详细文档。
资源
statements://catalog-列出所有索引语句statements://{statement_id}-获取具体声明statements://{statement_id}/summary-账户摘要statements://{statement_id}/holdings-持股/头寸statements://{statement_id}/transactions-交易历史
支持的声明
Questrade
- ✅ 账户摘要(余额、外汇汇率、TFSA信息)
- ✅ 持股/头寸(有成本基础的证券,损益表)
- ✅ 交易(交易、股息、存款、取款)
盈透证券(即将推出)
- ⏳ 计划的
Scotia(即将推出)
- ⏳ 计划的
发展
# Run tests
pytest
# Run tests with coverage
pytest --cov=src --cov-report=html
# Format code
black src tests
# Lint code
ruff check src tests建筑
- FastMCP 2.0:MCP服务器框架
- pymupdf4llm:针对LLM优化的PDF解析
- LanceDB:用于语义搜索的矢量数据库
- SQLite:结构化元数据存储
- 句子变换器:嵌入生成
许可证
麻省理工学院
