投资组合分析服务器

一个用于高效处理金融数据的AI代理工具的投资组合分析服务器,支持投资组合管理、数据分析和优化功能。

  • by l4b4r4b4b4
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 l4b4r4b4b4/portfolio-mcp

使用说明

投资组合mcp

由以下组件驱动的投资组合分析MCP服务器 mcp参考缓存 用于构建高效处理财务数据的AI代理工具。

特性

  • 投资组合管理:使用持久存储创建、读取、更新、删除投资组合
  • 数据源:雅虎财经(股票/ETF)、CoinGecko(加密货币)、合成(GBM模拟)
  • 分析工具:回报率、波动率、夏普比率、索蒂诺比率、风险价值、提款、相关性
  • 优化:高效前沿、蒙特卡洛模拟、权重优化
  • 基于引用的缓存:通过mcp-refcache缓存大型数据集,以避免上下文膨胀

安装

使用紫外线(推荐)

# Clone the repository
git clone https://github.com/l4b4r4b4b4/portfolio-mcp
cd portfolio-mcp

# Install dependencies
uv sync

# Run the server
uv run portfolio-mcp stdio

使用pip

pip install portfolio-mcp
portfolio-mcp stdio

快速开始

连接到克劳德桌面

添加到您的Claude Desktop配置(~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "portfolio-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/portfolio-mcp", "portfolio-mcp", "stdio"]
    }
  }
}

基本用法

连接后,您可以使用自然语言:

"Create a portfolio called 'tech_stocks' with AAPL, GOOG, and MSFT"
"Analyze the returns and volatility of my tech_stocks portfolio"
"Optimize my portfolio for maximum Sharpe ratio"
"Show me the efficient frontier with 20 points"
"Compare my portfolios by Sharpe ratio"

可用工具

投资组合管理(6个工具)

  • create_portfolio -使用符号和权重创建新的投资组合
  • get_portfolio -检索投资组合详细信息和指标
  • list_portfolios -列出所有存储的投资组合
  • delete_portfolio -删除投资组合
  • update_portfolio_weights -修改投资组合权重
  • clone_portfolio -使用可选的新权重创建副本

分析工具(8个工具)

  • get_portfolio_metrics -综合指标(回报率、波动率、夏普指数、索蒂诺指数、风险价值)
  • get_returns -每日、日志或累计回报
  • get_correlation_matrix -资产相关性分析
  • get_covariance_matrix -方差-协方差结构
  • get_individual_stock_metrics -按资产统计
  • get_drawdown_analysis -最大缩编和恢复分析
  • compare_portfolios -并排投资组合比较

优化工具(4个工具)

  • optimize_portfolio -优化权重(最大夏普、最小波动率、目标回报率/vol)
  • get_efficient_frontier -生成高效的边界曲线
  • run_monte_carlo -投资组合分析的蒙特卡罗模拟
  • apply_optimization -应用优化并更新存储的投资组合

数据工具(8个工具)

  • generate_price_series -生成合成的GBM价格数据
  • generate_portfolio_scenarios -创建多个场景数据集
  • get_sample_portfolio_data -获取测试样本数据
  • get_trending_coins -CoinGecko的加密货币趋势
  • search_crypto_coins -搜索加密资产
  • get_crypto_info -详细的加密货币信息
  • list_crypto_symbols -可用的加密符号映射
  • get_cached_result -按引用ID检索缓存的大型结果

建筑

portfolio-mcp/
├── app/
│   ├── __init__.py
│   ├── __main__.py      # Typer CLI entry point
│   ├── config.py        # Pydantic settings
│   ├── server.py        # FastMCP server setup
│   ├── storage.py       # RefCache-based portfolio storage
│   ├── models.py        # Pydantic models for I/O
│   ├── data_sources.py  # Yahoo Finance + CoinGecko APIs
│   └── tools/           # MCP tool implementations
│       ├── portfolio.py
│       ├── analysis.py
│       ├── optimization.py
│       └── data.py
└── tests/               # 163 tests, 81% coverage

基于引用的缓存

此服务器使用 mcp参考缓存 为了高效地处理大型结果:

  1. 大结果被缓存 -当工具返回的数据超过预览大小时,它将存储在缓存中
  2. 返回引用 -工具返回a ref_id 以及数据的预览/示例
  3. 按需提供完整数据 -使用 get_cached_result(ref_id=...) 检索完整数据

这可以防止在处理价格历史或蒙特卡洛模拟等大型数据集时上下文窗口膨胀。

发展

先决条件

设置

# Clone and install
git clone https://github.com/l4b4r4b4b4/portfolio-mcp
cd portfolio-mcp
uv sync

# Run tests
uv run pytest --cov

# Lint and format
uv run ruff check .
uv run ruff format .

本地运行

# stdio mode (for MCP clients)
uv run portfolio-mcp stdio

# SSE mode (for web clients)
uv run portfolio-mcp sse --port 8080

# Streamable HTTP mode
uv run portfolio-mcp streamable-http --port 8080

配置

环境变量:

变量 描述 默认值
LOG_LEVEL 日志记录级别 INFO
CACHE_TTL 默认缓存TTL(秒) 3600

许可证

MIT许可证-请参阅 许可证 了解详情。

相关项目