股票市场分析服务器

一个全面的股票市场分析服务器,提供实时价格数据、投资组合管理、技术分析、风险指标和股息跟踪功能。

  • by CalvinLiuu
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 CalvinLiuu/stock_mcp_server

使用说明

股市分析MCP服务器

一个全面的模型上下文协议(MCP)服务器,用于高级股市分析、趋势识别、投资组合管理、股息追踪、行业分析以及风险指标评估。

📑 目录

🚀 功能

📈 价格与数据工具(price_data.py)

  • get_latest_price(ticker) - 获取任何股票的最新市场价格
  • get_historical_data(ticker, period) - 获取历史开盘价、最高价、最低价、收盘价和成交量(OHLC数据)
  • get_stock_info(ticker) - 全面的股票信息,包括基本面、市盈率、市值、股息率等。

💼 投资组合管理(portfolio.py)

  • add_holding(ticker, shares, purchase_price, purchase_date?) - 在您的投资组合中添加股票,并自动追踪成本基准
  • remove_holding(ticker, shares, sale_price, sale_date?) - 出售股票并自动计算盈亏
  • view_portfolio() - 查看您的所有持仓,实时估值及盈亏情况
  • view_transactions(limit?) - 查看您的交易历史

🔍 技术分析(analysis.py)

  • analyze_buy_opportunity(ticker) - 简单的SMA交叉策略(20日/50日均线)
  • calculate_rsi(ticker, period?, timeframe?) - 相对强弱指数(RSI)用于识别超买/超卖状况
  • calculate_macd(ticker, timeframe?) - 移动平均收敛散度指标用于趋势动量分析
  • analyze_trends(ticker, timeframe?) - 多指标综合趋势分析
  • compare_stocks(tickers[]) - 多支股票的并排对比

🔔 警报系统 (alerts.py)

  • set_price_alert(ticker, target_price, alert_type, alert_name?) - 设置价格提醒(高于/低于阈值)
  • set_rsi_alert(ticker, rsi_threshold, alert_type, alert_name?) - 设置RSI(相对强弱指数)超买/超卖条件的警报
  • check_alerts() - 检查所有活动警报,并查看哪些已被触发
  • list_alerts() - 查看所有已配置的警报
  • clear_triggered_alerts() - 移除已触发的警报
  • delete_all_alerts() - 删除所有提醒

💰 股息追踪(dividends.py)

  • get_dividend_history(ticker, period?) - 查看带有趋势的股息支付历史
  • get_dividend_yield(ticker) - 获取当前股息收益率及相关指标
  • calculate_portfolio_dividend_income() - 计算你的投资组合预期的年度股息收入
  • find_high_dividend_stocks(min_yield?, sector?) - 发现高股息收益率股票

🏢 行业分析(sector.py)

  • analyze_sector(sector_name) - 对特定市场细分的全面分析
  • compare_sectors() - 比较所有主要市场板块的业绩表现
  • get_sector_leaders(sector_name, metric?) - 获取某行业中的表现最佳股票
  • analyze_portfolio_sector_allocation() - 分析你的投资组合的行业多元化情况

⚠️ 风险指标(risk.py)

  • calculate_sharpe_ratio(ticker, risk_free_rate?, period?) - 测量风险调整后的回报
  • calculate_beta(ticker, benchmark?, period?) - 计算股票波动率与市场波动率的对比
  • calculate_portfolio_risk() - 全面的投资组合风险分析及建议
  • calculate_var(ticker, confidence_level?, period?, position_size?) - 风险价值(Value at Risk)计算
  • calculate_drawdown(ticker, period?) - 最大回撤和峰谷分析

📦 安装

先决条件

在开始之前,请确保您已具备:

  • Python 3.8 或更高版本 安装在您的系统上
  • Cursor 集成开发环境 (IDE) (或另一个兼容MCP的客户端)
  • Git(版本控制系统) (可选,用于克隆仓库)
  • 用于获取股市数据的互联网连接

第一步:获取代码

选项A:从GitHub克隆

git clone https://github.com/CalvinLiuu/stock_mcp_server.git
cd stock_mcp_server

选项B:下载ZIP文件

  • 将仓库下载为ZIP文件
  • 将其解压到您希望的位置
  • 打开一个终端并导航到解压后的文件夹

步骤2:设置虚拟环境

创建并激活一个虚拟环境(推荐):

在 macOS/Linux 上:

python3 -m venv .venv
source .venv/bin/activate

在Windows上:

python -m venv .venv
.venv\Scripts\activate

步骤3:安装依赖项

在您的虚拟环境已激活的情况下,安装所需的软件包:

pip install -r requirements.txt

这将安装:

  • yfinance - 用于实时股市数据
  • pandas - 用于数据分析
  • numpy - 用于数值计算
  • fastmcp - 用于MCP服务器功能

步骤4:在光标中配置MCP

要在 Cursor IDE 中使用此服务器,您需要将其添加到您的 MCP 配置文件中。

查找您的MCP配置

MCP配置文件通常位于:

  • macOS/Linux: ~/.cursor/mcp.json
  • Windows: %USERPROFILE%\.cursor\mcp.json

添加服务器配置

打开 mcp.json 创建文件并添加以下配置(调整路径以匹配您的安装位置):

选项A:使用Python模块(推荐)

{
  "mcpServers": {
    "stock-analyzer": {
      "command": "/absolute/path/to/stock_mcp_server/.venv/bin/python",
      "args": [
        "-m",
        "mcp.server.fastmcp",
        "run",
        "/absolute/path/to/stock_mcp_server/stock.server.py"
      ],
      "env": {}
    }
  }
}

选项B:使用fastmcp CLI

{
  "mcpServers": {
    "stock-analyzer": {
      "command": "/absolute/path/to/stock_mcp_server/.venv/bin/fastmcp",
      "args": [
        "dev",
        "/absolute/path/to/stock_mcp_server/stock.server.py"
      ],
      "env": {}
    }
  }
}

重要提示:

  • 替换 /absolute/path/to/stock_mcp_server/ 以及您实际安装服务器的完整路径
  • 在Windows系统中,使用反斜杠和相应的路径(例如。, C:\\Users\\YourName\\...)
  • 确保使用来自虚拟环境的Python解释器(.venv/bin/python)

macOS 示例:

{
  "mcpServers": {
    "stock-analyzer": {
      "command": "/Users/johndoe/Documents/stock_mcp_server/.venv/bin/python",
      "args": [
        "-m",
        "mcp.server.fastmcp",
        "run",
        "/Users/johndoe/Documents/stock_mcp_server/stock.server.py"
      ],
      "env": {}
    }
  }
}

Windows 示例:

{
  "mcpServers": {
    "stock-analyzer": {
      "command": "C:\\Users\\JohnDoe\\Documents\\stock_mcp_server\\.venv\\Scripts\\python.exe",
      "args": [
        "-m",
        "mcp.server.fastmcp",
        "run",
        "C:\\Users\\JohnDoe\\Documents\\stock_mcp_server\\stock.server.py"
      ],
      "env": {}
    }
  }
}

第五步:重启光标

更新您的(信息/设置/软件等)后 mcp.json 配置:

  1. 保存文件
  2. 完全重启 Cursor (关闭并重新打开)
  3. 当Cursor启动时,MCP服务器应自动启动

步骤6:验证安装

您可以通过检查 Cursor 中的 MCP 日志或尝试使用其中一个工具来验证安装情况:

在Cursor的AI聊天中,尝试:

Can you get the latest price for AAPL using the stock analyzer?

你应该能看到服务器实时返回股票数据。

或者查看可用工具:

What tools are available in the stock-analyzer MCP server?

🧪 手动测试服务器(可选)

在 Cursor 之外测试服务器:

# Activate your virtual environment first
source .venv/bin/activate  # macOS/Linux
# or
.venv\Scripts\activate  # Windows

# Run the server in development mode
fastmcp dev stock.server.py

你应该会看到类似这样的输出:

Registering price data tools...
Registering portfolio management tools...
Registering technical analysis tools...
Registering alert system tools...
Registering dividend tracking tools...
Registering sector analysis tools...
Registering risk analysis tools...
✅ All tools registered successfully!
📊 Stock Market Analyzer v0.3.0 is ready!

🔧 故障排除

服务器无法启动?

  • 验证您路径中的内容 mcp.json 是绝对路径(而非相对路径)
  • 确保你使用的是虚拟环境中的 Python(.venv/bin/python)
  • 检查所有依赖项是否已安装: pip list 应该显示 yfinance、pandas、numpy、fastmcp

“模块未找到”错误?

  • 确保您的虚拟环境已激活
  • 重新安装依赖项: pip install -r requirements.txt

无法获取股票数据?

  • 检查你的网络连接
  • 某些股票的数据可能延迟,或者需要使用不同的股票代码
  • 先尝试投资一些像“AAPL”或“MSFT”这样的普通股

MCP 服务器未出现在 Cursor 中?

  • 确保 mcp.json 文件是有效的JSON(没有尾随逗号,语法正确)
  • 检查Cursor的MCP日志中的错误信息
  • 尝试完全重启 Cursor

在 macOS/Linux 上遇到权限错误?

  • 确保Python可执行文件具有可执行权限: chmod +x .venv/bin/python

📱 安装后的快速入门

安装并配置完成后,您即可通过Cursor的AI聊天立即开始使用这些工具:

# Check a stock price
"Get the latest price for Tesla"

# Add to your portfolio
"Add 10 shares of AAPL at $150 to my portfolio"

# View your portfolio
"Show me my current portfolio"

# Set an alert
"Alert me when TSLA goes below $250"

# Analyze a stock
"Analyze trends for NVDA"

🎯 使用示例

投资组合管理

# Add stocks to your portfolio
add_holding("AAPL", 10, 150.00)
add_holding("MSFT", 5, 380.00)
add_holding("NVDA", 8, 450.00)

# View your portfolio with current valuations
view_portfolio()

# Sell some shares
remove_holding("AAPL", 5, 175.00)

# View transaction history
view_transactions(limit=20)

警报系统

# Set a price alert
set_price_alert("TSLA", 250.00, "below")

# Set an RSI alert for oversold conditions
set_rsi_alert("NVDA", 30, "below")

# Check if any alerts triggered
check_alerts()

# View all configured alerts
list_alerts()

股息分析

# View dividend history
get_dividend_history("JNJ", period="5y")

# Check dividend yield
get_dividend_yield("KO")

# Calculate portfolio dividend income
calculate_portfolio_dividend_income()

# Find high-yield stocks in utilities sector
find_high_dividend_stocks(min_yield=4.0, sector="Utilities")

行业分析

# Analyze technology sector
analyze_sector("Technology")

# Compare all sectors
compare_sectors()

# Get sector leaders by performance
get_sector_leaders("Healthcare", metric="return")

# Check portfolio sector diversification
analyze_portfolio_sector_allocation()

风险分析

# Calculate Sharpe ratio
calculate_sharpe_ratio("AAPL", risk_free_rate=0.04, period="1y")

# Calculate beta vs S&P 500
calculate_beta("TSLA", benchmark="SPY")

# Comprehensive portfolio risk analysis
calculate_portfolio_risk()

# Calculate Value at Risk
calculate_var("NVDA", confidence_level=0.95, position_size=10000)

# Analyze maximum drawdown
calculate_drawdown("MSFT", period="5y")

技术分析

# Get detailed stock information
get_stock_info("GOOGL")

# Check RSI for overbought/oversold signals
calculate_rsi("TSLA", period=14, timeframe="3mo")

# Analyze MACD for momentum
calculate_macd("MSFT", timeframe="6mo")

# Comprehensive trend analysis
analyze_trends("NVDA", timeframe="1y")

# Compare multiple stocks
compare_stocks(["AAPL", "MSFT", "GOOGL"])

📊 技术指标解析

相对强弱指数(RSI)

  • 70分以上超买 - 潜在卖出信号
  • 低于30超卖 - 潜在买入机会
  • 三十到七十中性范围

MACD(移动平均收敛发散指标)

  • **看涨交叉(或:金叉)**MACD线在信号线上方交叉
  • **看跌交叉(或称为“死亡交叉”)**MACD线(快线)下穿信号线(慢线)
  • 用于识别动量和趋势变化

SMA交叉策略

  • 买入信号短期简单移动平均线(20日)上穿长期简单移动平均线(50日)
  • 卖出信号短期简单移动平均线(SMA)下穿长期简单移动平均线

夏普比率

  • > 2.0极佳的风险调整后回报
  • 1.0-2.0好的
  • 0到1.0公平
  • 小于0差(回报低于无风险利率)

Beta(测试版)

  • β > 1比市场更波动
  • β = 1随市场波动
  • 0小于β小于1比市场波动性小
  • β小于0与市场走势相反

🏗️ 建筑学

stock_mcp_server/
├── stock.server.py         # Main server entry point
├── utils.py                # Shared utilities (load/save data)
├── price_data.py           # Price and stock information
├── portfolio.py            # Portfolio management
├── analysis.py             # Technical analysis tools
├── alerts.py               # Alert system
├── dividends.py            # Dividend tracking
├── sector.py               # Sector analysis
├── risk.py                 # Risk metrics
├── portfolio.json          # Portfolio data (auto-generated)
├── alerts.json             # Alert data (auto-generated)
├── requirements.txt        # Python dependencies
└── README.md               # Documentation

模块化设计

每个模块都是独立的,可以单独进行更新:

  • **utils.py**数据持久化的共享函数
  • **price_data.py**基本库存数据检索
  • **portfolio.py**持仓与交易追踪
  • **analysis.py**技术指标与趋势分析
  • **alerts.py**价格和相对强弱指数(RSI)警报系统
  • **dividends.py**股息历史及收益追踪
  • **sector.py**全行业范围的分析与比较
  • **risk.py**风险指标与投资组合风险管理

📁 数据存储与隐私

🔒 仅限本地存储

您的数据保持完全私密且本地存储:

  • ✅ 所有投资组合数据仅存储在您的计算机上
  • ✅ 无需云存储或外部服务器
  • ✅ 无需认证或账号
  • ✅ 对您的数据文件拥有完全控制权
  • ✅ 可以直接备份/编辑JSON文件

本地存储的内容包括:

  • 您的股票持仓和交易记录 portfolio.json
  • 您的价格和RSI(相对强弱指数)提醒 → alerts.json

什么会上传到互联网:

  • 仅通过雅虎财经API获取市场数据请求(股票价格、基本面数据等)
  • 您的个人投资组合数据绝不会被传输到任何地方

投资组合数据(portfolio.json)

位置:与……在同一目录下 stock.server.py

自动创建并保存于:

  • 当前持仓,按平均成本计算
  • 完整的交易历史记录(买入/卖出)
  • 盈亏计算
  • 最后更新日期

示例结构:

{
  "holdings": {
    "AAPL": {
      "shares": 10,
      "avg_price": 150.00,
      "last_updated": "2025-01-15"
    }
  },
  "transactions": [
    {
      "type": "BUY",
      "ticker": "AAPL",
      "shares": 10,
      "price": 150.00,
      "date": "2025-01-15",
      "total": 1500.00
    }
  ]
}

警报数据(alerts.json)

位置:与……位于同一目录 stock.server.py

自动创建并保存,使用工具:

  • 主动价格提醒(超过/低于设定阈值时触发)
  • 活跃的RSI警报(超买/超卖条件)
  • 警报状态和触发历史

示例结构:

{
  "price_alerts": [
    {
      "id": "alert_123",
      "ticker": "TSLA",
      "target_price": 250.00,
      "alert_type": "below",
      "status": "active"
    }
  ],
  "rsi_alerts": []
}

备份您的数据

由于所有数据都以JSON文件的形式本地存储,您可以轻松地:

  • 备份复制 portfolio.json 并且 alerts.json 到另一个地方
  • 恢复用你的备份文件替换这些文件
  • 编辑如需必要,请手动编辑JSON文件(注意格式)
  • 版本控制添加到 Git(但记得要添加到 .gitignore (如果公开分享的话)

🆕 v0.3.0版本的新功能

新功能

  1. 🔔 警报系统 - 设置价格和RSI(相对强弱指数)警报,自动检查状态
  2. 💰 股息追踪 - 跟踪股息历史、收益率和投资组合收入
  3. 🏢 行业分析 - 分析整个行业,比较业绩,检查多元化程度
  4. ⚠️ 风险指标 - 夏普比率,贝塔系数,风险价值(VaR),回撤,综合投资组合风险

增强功能

  • 模块化架构,提升可维护性
  • 将关注点分离到专门的模块中
  • 所有工具的错误处理功能均得到改进
  • 通过为警报使用单独文件,实现更好的数据持久性

之前的特性(v0.2.0)

  • 带有损益追踪的投资组合管理
  • 技术指标(相对强弱指数RSI,移动平均收敛散度MACD,简单移动平均线SMA)
  • 全面趋势分析
  • 股票比较工具

原始功能(v0.1.0)

  • 基本价格数据检索
  • 历史数据访问
  • 简单的SMA交叉分析

🔧 配置

无风险利率

默认值:4%(0.04)- 可在夏普比率计算中进行调整

可用扇区

  • 技术
  • 医疗保健
  • 金融服务
  • 能量
  • 消费周期股
  • 消费者防御(或译为“消费者保护”)
  • 公用事业(或公共设施)
  • 工业类(或“工业板块”)
  • 房地产
  • 材料
  • 通信服务

警报类型

  • 价格提醒: above 或者 below 目标价格
  • RSI 警报: above 或者 below 相对强弱指数(RSI)阈值

📚 依赖项

  • yfinance(注:yfinance是一个用于从Yahoo Finance获取金融数据的Python库,直接翻译为“金融数据获取库”或“雅虎财经数据获取工具”等更贴切,但在此保持原样以展示原文) (>=0.2.40): 实时和历史市场数据
  • 大熊猫 (>=2.0.0): 数据操作与分析
  • numpy (>=1.24.0): 风险指标的数值计算
  • fastmcp (>=0.1.0): MCP服务器框架

🎓 最佳实践

投资组合管理

  • 分散投资于10-20只不同的股票
  • 保持最大持仓比例低于投资组合的20%
  • 定期再平衡(每季度或每年)
  • 为税务目的追踪成本基础

风险管理

  • 目标夏普比率 > 1.0,以获得良好的风险调整后回报
  • 保持投资组合贝塔系数在0.8至1.2之间,以承担适中风险
  • 监控最大回撤——为历史波动性做好准备
  • 使用VaR来了解每日潜在损失

行业配置

  • 至少分散投资于5个不同的行业
  • 避免任何单一行业集中度超过35%
  • 考虑基于经济周期的行业轮动
  • 平衡增长型行业与防御型行业

股息投资

  • 寻找可持续性方面股息支付率低于80%的股票
  • 更看重股息增长而非仅仅高收益率
  • 将股息再投资以实现复利增长
  • 跟踪除息日以进行规划

⚠️ 免责声明

此工具仅供教育和信息参考之用,并非财务建议。

  • 市场数据可能会延迟
  • 过去的业绩并不能保证未来的成果
  • 投资前务必做好自己的研究
  • 考虑咨询财务顾问
  • 注意税务影响

🚀 未来增强功能

可能的增补:

  • 期权分析与希腊值计算
  • 斐波那契回撤位
  • 支撑位/阻力位识别
  • 新闻情感分析
  • 回测功能
  • 资本利得的税基追踪
  • 投资组合再平衡建议
  • 持仓之间的相关性分析
  • 蒙特卡洛模拟
  • 实时流式报价

📄 许可证

MIT 许可证 - 请随意使用并根据需要进行修改。

🤝 贡献(或:参与贡献)

欢迎投稿!请确保:

  • 代码遵循模块化架构
  • 新功能位于相应的模块中
  • 文档已更新
  • 错误处理全面

📞 支持

对于问题或疑问:

  1. 查看上面的文档
  2. 审查模块特定的代码
  3. 确保所有依赖项都已安装
  4. 验证API数据是否可访问

版本0.3.0
最后更新时间2025
作者股市分析MCP服务器