使用说明
股票分析 MCP 服务
项目概述
这是一个基于 FastAPI-MCP 的股票分析服务,修改自开源软件,旨在通过 MCP 工具函数接口提供股票相关的综合数据和分析能力,包括价格、评分、技术报告和 AI 分析。该服务整合了原有项目 https://github.com/lanzhihong6/stock-scanner 中的股票数据获取和分析功能,并提供了现代化的 API 接口,作为前端与后端服务之间的桥梁。
项目中分别实现了本地集成式 MCP 服务与远程 MCP 工具服务两种部署方式。前者将 MCP 能力直接嵌入 FastAPI 应用内部,适用于单体应用与本地智能体调用;后者将 MCP 作为独立的远程服务对外暴露,可被多个 AI Agent 或客户端统一调用,体现了 MCP 在工具服务化与跨应用协作中的优势。
功能特点
- 基于 FastAPI-MCP 构建: 支持 SSE 协议,提供强大的 API 接口。
- 丰富的股票分析工具: 提供多种股票数据获取和分析工具函数。
- 多市场支持: 支持 A 股、港股、美股及基金数据分析。
- 集成 AI 分析: 结合大语言模型进行深度分析。
- 异步处理: 利用 FastAPI 和 Python 的异步特性,提高并发处理能力。
- 流式响应: 支持 SSE 协议,实现实时数据流推送。
- 模块化设计: 各个服务模块职责明确,便于维护和扩展。
- 依赖注入: 使用 FastAPI 的依赖注入系统,简化代码结构。
- 全面错误处理: 包含详细的异常捕获和错误响应机制。
- MCP 工具集成: 使用 FastApiMCP 库自动将 API 转换为 MCP 工具函数。
安装
安装依赖
```bash
pip install -r requirements.txt
```
配置环境变量 默认将访问大模型的API-KEY等信息放在系统环境变量中,系统环境变量名见models.py:
也可以自行编写.env文件进行覆盖
复制 `.env.example` 文件为 `.env`,并填写相关配置:
```bash
cp .env.example .env
```
编辑 `.env` 文件,填写 API 密钥等信息。
文件说明
- integration_in_client_mcp_server.py和mcp_server_integration_remote_mcp.py为MCP服务端
- integration_in_clients_remote_mcp.py和mcp_server_integration_client.py为MCP客户端
- 其中integration_in_client_mcp_server.py和integration_in_clients_remote_mcp.py组合使用
- 其中mcp_server_integration_remote_mcp.py和mcp_server_integration_client.py组合使用
- integration_in_clients_remote_mcp组合是远程MCP服务集成在客户端
- mcp_server_integration_remote_mcp组合是远程MCP服务集成在服务端
运行服务
使用python启动服务即可,例如,文件名为mcp_server_integration_remote_mcp.py
python mcp_server_integration_remote_mcp.py
服务将在 http://localhost:8000 启动。你也可以使用 Uvicorn 启动:
uvicorn mcp_server_1:app --host 0.0.0.0 --port 8000 --reload
主要 API 接口
服务提供以下核心 API 接口:
- 分析单只股票:
GET /stock_analyzer- 通过股票代码和市场类型分析股票,返回包括价格、评分、技术分析和AI分析等综合信息,支持流式响应。
- 获取股票价格信息:
GET /stock_price- 获取指定股票的最新价格、涨跌幅等基本价格信息。
- 获取股票技术分析:
GET /stock_technical_analysis- 获取股票的技术指标分析,包括MA趋势、RSI、MACD信号、布林带等技术指标。
- 获取股票评分:
GET /stock_score- 获取股票的综合评分和投资建议。
- 获取股票AI分析:
GET /stock_ai_analysis- 使用AI对股票进行深度分析,提供趋势、风险、目标价位等综合分析结果。
联网搜索服务则视乎具体的实现,不一定提供了该服务。
MCP 工具函数
FastApiMCP 库会自动将上述 API 注册为 MCP 工具函数,可通过 /mcp 端点获取其定义。以下是主要 MCP 工具函数:
analyze_stock- 分析单只股票 (对应GET /stock_analyzer接口)get_stock_price- 获取股票价格信息 (对应GET /stock_price接口)get_technical_analysis- 获取股票技术分析 (对应GET /stock_technical_analysis接口)get_stock_score- 获取股票评分 (对应GET /stock_score接口)get_ai_analysis- 获取股票AI分析 (对应GET /stock_ai_analysis接口)
这些工具函数可以直接被大语言模型调用。
系统架构
该 MCP 服务作为前端与后端服务之间的桥梁,通过 FastAPI 框架提供 RESTful API 和 SSE 流式响应。它整合了以下核心服务:
- StockDataProvider: 负责从数据源获取股票数据。
- StockAnalyzerService: 协调数据提供、指标计算、评分和 AI 分析。
- AIAnalyzer: 调用大语言模型 API 进行深度分析。
- TechnicalIndicator: 计算技术指标。
- StockScorer: 根据技术指标评分。
技术特点
- 异步处理: 利用 FastAPI 和 Python 的异步特性,提高并发处理能力。
- 流式响应: 支持 SSE 协议,实现实时数据流推送。
- 模块化设计: 各个服务模块职责明确,便于维护和扩展。
- 依赖注入: 使用 FastAPI 的依赖注入系统,简化代码结构。
- 全面错误处理: 包含详细的异常捕获和错误响应机制。
- MCP 工具集成: 使用 FastApiMCP 库自动将 API 转换为 MCP 工具函数。
流式 API 端点
stock_analyzer 接口 (GET /stock_analyzer) 支持流式响应,客户端可以通过标准的 HTTP 请求访问,并处理服务端发送事件(SSE)流。
FastApiMCP 的 /mcp 端点也提供了工具定义的流式访问能力。
健康检查
可以通过 /health 端点检查服务状态:
http://localhost:8000/health
使用示例
在 MCP 中使用工具函数
在 MCP 客户端中,可以通过以下方式使用工具函数:
import mcp
# 示例:分析单只股票 (流式响应)
async for chunk in mcp.use_tool("analyze_stock", {"stock_code": "600795", "market_type": "A"}):
print(chunk)
# 示例:获取股票价格信息
price_info = await mcp.use_tool("get_stock_price", {"stock_code": "600795", "market_type": "A"})
print(price_info)
# 示例:获取股票技术分析
tech_analysis = await mcp.use_tool("get_technical_analysis", {"stock_code": "600795", "market_type": "A"})
print(tech_analysis)
# 示例:获取股票评分
score_info = await mcp.use_tool("get_stock_score", {"stock_code": "600795", "market_type": "A"})
print(score_info)
# 示例:获取股票AI分析
ai_analysis_result = await mcp.use_tool("get_ai_analysis", {"stock_code": "600795", "market_type": "A"})
print(ai_analysis_result)
访问 API 文档
服务启动后,可以通过以下链接访问自动生成的 API 文档 (Swagger UI / OpenAPI):
http://localhost:8000/docs