使用说明
股市分析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 配置:
- 保存文件
- 完全重启 Cursor (关闭并重新打开)
- 当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版本的新功能
新功能
- 🔔 警报系统 - 设置价格和RSI(相对强弱指数)警报,自动检查状态
- 💰 股息追踪 - 跟踪股息历史、收益率和投资组合收入
- 🏢 行业分析 - 分析整个行业,比较业绩,检查多元化程度
- ⚠️ 风险指标 - 夏普比率,贝塔系数,风险价值(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 许可证 - 请随意使用并根据需要进行修改。
🤝 贡献(或:参与贡献)
欢迎投稿!请确保:
- 代码遵循模块化架构
- 新功能位于相应的模块中
- 文档已更新
- 错误处理全面
📞 支持
对于问题或疑问:
- 查看上面的文档
- 审查模块特定的代码
- 确保所有依赖项都已安装
- 验证API数据是否可访问
版本0.3.0
最后更新时间2025
作者股市分析MCP服务器