该项目实现了一个用于股票市场分析的模型上下文协议(MCP)服务器。它提供实时股票价格数据,计算关键的技术指标如移动平均线和相对强弱指数(RSI),并利用AlphaVantage API进行趋势检测。该服务器可以与像Claude这样的大型语言模型集成,以增强财务洞察力。
我开发这个MCP服务器是为了简化股票市场分析,通过自动化数据获取和技术指标计算来实现。目标是帮助交易者和投资者通过利用AI辅助的见解做出基于数据的决策。通过使用MCP,此服务器可以无缝连接到LLMs,允许它们实时检索金融数据并执行分析。
开始之前,请确保您拥有以下内容:
要设置项目,请按照以下步骤操作:
使用uv(推荐):
uv add mcp[cli] httpx
使用pip:
pip install mcp httpx
git clone https://github.com/your-username/mcp-stock-analysis.git
cd mcp-stock-analysis
创建一个.env文件,并添加您的AlphaVantage API密钥:
ALPHA_VANTAGE_API_KEY=your_api_key_here
要启动服务器,请运行:
python server.py
或使用MCP:
mcp install server.py
对于开发模式:
mcp dev server.py
服务器从AlphaVantage获取实时股票价格数据:
@mcp.tool()
def fetch_intraday_data(symbol: str, interval: str = "5min") -> dict:
"""获取盘中股票价格数据。"""
url = f"https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol={symbol}&interval={interval}&apikey={API_KEY}"
response = httpx.get(url)
return response.json()
移动平均线有助于平滑价格数据以识别趋势:
@mcp.tool()
def calculate_moving_averages(prices: list[float], short_window: int = 50, long_window: int = 200) -> dict:
"""计算短期和长期移动平均线。"""
short_ma = sum(prices[-short_window:]) / short_window
long_ma = sum(prices[-long_window:]) / long_window
return {"short_ma": short_ma, "long_ma": long_ma}
@mcp.tool()
def detect_trend_crossover(short_ma: float, long_ma: float) -> str:
"""检测是否发生了黄金交叉或死亡交叉。"""
if short_ma > long_ma:
return "黄金交叉 - 看涨趋势"
elif short_ma < long_ma:
return "死亡交叉 - 看跌趋势"
return "没有显著交叉"
RSI衡量动量,帮助确定股票是否超买/超卖:
@mcp.tool()
def calculate_rsi(prices: list[float], period: int = 14) -> float:
"""计算RSI指标。"""
gains = [max(0, prices[i] - prices[i-1]) for i in range(1, len(prices))]
losses = [max(0, prices[i-1] - prices[i]) for i in range(1, len(prices))]
avg_gain = sum(gains[-period:]) / period
avg_loss = sum(losses[-period:]) / period
rs = avg_gain / avg_loss if avg_loss != 0 else float('inf')
return 100 - (100 / (1 + rs))
@mcp.tool()
def determine_rsi_condition(rsi: float) -> str:
"""确定RSI是否指示超买或超卖条件。"""
if rsi > 70:
return "超买 - 考虑卖出"
elif rsi < 30:
return "超卖 - 考虑买入"
return "中性"
此MCP服务器可以通过添加更多特性进行扩展:
欢迎通过提交拉取请求或报告问题来贡献。让我们使股票市场分析更加普及和AI驱动!
如果您有任何问题或建议,请随时联系!
🔗 LinkedIn:Syed Hasan
🤗 Hugging Face:Syed-Hasan-8503