使用说明
基于Azure OpenAI的股票分析MCP系统
一个安全、可投入生产的模型上下文协议(MCP)服务器和客户端,用于股票分析,集成了Alpha Vantage API用于市场数据和Azure OpenAI用于智能分析。
特点/特性
- MCP服务器从Alpha Vantage获取实时和历史股票数据
- Azure与OpenAI的集成提供基于人工智能的股票分析和投资见解
- 综合分析技术指标、基本面及6个月历史趋势
- 安全最佳实践基于环境的配置、输入验证、速率限制
- **交互式命令行界面(CLI)**用户友好的命令行界面,用于股票查询
建筑
User Query → MCP Client + Azure OpenAI → MCP Server → Alpha Vantage API
↓
Azure OpenAI
↓
Analysis Result
先决条件
- Python 3.9+ 安装好的;已安装的
- Alpha Vantage API密钥 (免费版可在 https://www.alphavantage.co/support/#api-key 获取)
- Azure OpenAI 服务 部署并启用API访问。注意-我使用了Azure OpenAI,从技术上讲,你可以使用任何模型/提供者。你只需要更改环境变量(API密钥、URL和部署名称)。如果你使用的是除OpenAI以外的任何模型提供者,你需要相应地修改MCP客户端和服务器文件,并确保你使用了适当的SDK库来调用模型。
- 虚拟环境 (推荐)
安装
- 克隆仓库:
git clone <repository-url>
cd mcp-project
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 安装依赖项:
pip install -r requirements.txt
- 配置环境变量:
cp .env.example .env
编辑 .env 使用您的凭据:
# Alpha Vantage API Configuration
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key
# Azure OpenAI Configuration
AZURE_OPENAI_API_KEY=your_azure_key
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-4
AZURE_OPENAI_API_VERSION=2024-02-15-preview
使用方法
启动MCP服务器
在一个终端中运行服务器:
python mcp_stock_server.py or ./run_server.sh
服务器将:
- 监听通过标准输入输出(stdio)的MCP客户端连接
- 从Alpha Vantage API获取数据
- 提供工具:
get_current_stock_price并且get_stock_analysis
使用客户端
交互模式
python mcp_client.py or ./run_client.sh
命令:
ask compare AAPL and MSFT- 详细对比股票基本面和技术信息,并给出投资建议(AI决定调用哪些工具)analyze AAPL- 对苹果股票进行全面的AI驱动分析(传统方式 - MCP服务器为AI提供数据,以便模型进行分析)price MSFT- 获取当前微软股票价格(直接调用AlphaVantage API仅获取价格)help- 显示可用命令quit- 退出程序
命令行模式
python mcp_client.py --analyze AAPL
示例交互
> analyze TSLA
Analyzing TSLA... This may take a moment...
============================================================
AI ANALYSIS FOR TSLA
============================================================
COMPREHENSIVE ANALYSIS:
Current Market Position:
Tesla is currently trading at $242.56, showing strong momentum...
Technical Analysis:
- The stock is trading above its 20-day SMA ($235.40)
- 30-day momentum is positive at +8.5%
- Volatility remains elevated at 42.3
Fundamental Strength:
- P/E Ratio: 58.2 (growth premium justified by expansion)
- Profit Margin: 8.2% (improving quarter-over-quarter)
- Strong revenue growth: +25% YoY
Investment Outlook:
MODERATE BUY - Tesla shows strong growth potential with
expansion into energy storage and autonomous driving...
Risk Factors:
- High valuation multiples
- Regulatory challenges in key markets
- Intense competition in EV space
Recommendation:
Suitable for growth-oriented investors with higher risk tolerance.
Consider dollar-cost averaging given current volatility.
============================================================
安全功能
- 基于环境的配置所有敏感数据在
.env文件 - 输入验证Pydantic模型验证所有输入
- 速率限制可配置的请求限制,以防止滥用API
- 错误处理带日志记录的全面异常处理
- 安全通信对于所有外部API调用使用HTTPS
- 不硬编码敏感信息所有凭据均从环境变量中加载
API速率限制
- Alpha Vantage 免费版每天25次API请求。如需更多,请获取高级计划。
- Azure OpenAI根据模型的订阅级别/每秒令牌生成量(TPM)设置而有所不同。
- 配置
MAX_REQUESTS_PER_MINUTE在.env尊重界限
项目结构
mcp-project/
├── mcp_stock_server.py # MCP server implementation
├── mcp_client.py # Client with Azure OpenAI integration
├── requirements.txt # Python dependencies
├── setup.py # Package setup script
├── .env.example # Environment template
├── .env # Your configuration (git-ignored)
├── .gitignore # Git ignore rules
└── README.md # This file
测试
运行测试套件:
pytest tests/ -v --cov=.
故障排除
常见问题
-
API调用频率已达上限
- 等待60秒以重置Alpha Vantage的速率限制
- 考虑升级到高级API计划
-
“无效库存”
- 确保该股票在美国主要证券交易所上市
-
“Azure OpenAI 连接失败”
- 检查终端节点URL格式(应以
/) - 验证部署名称是否与您的Azure配置相匹配
- 确保API密钥具有适当的权限
- 检查终端节点URL格式(应以
-
“MCP服务器无响应”
- 在启动客户端之前,请确保服务器正在运行
- 检查Python版本兼容性(3.9及以上)
最佳实践
-
API密钥安全:
- 永远不要放弃
.env将文件纳入版本控制 - 定期轮换API密钥
- 在生产环境中使用 Azure Key Vault 进行部署
- 永远不要放弃
-
错误处理:
- 始终优雅地处理API故障
- 实现指数退避重试机制
- 记录日志错误以供调试
-
演出:
- 缓存频繁请求的库存数据
- 在可能的情况下批量处理API请求
- 使用异步操作处理并发请求
贡献;做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 在测试中进行更改
- 提交拉取请求
支持
对于问题或疑问:
- 在GitHub上提交一个问题
- 查阅Alpha Vantage的文档:https://www.alphavantage.co/documentation/
- Azure OpenAI 文档:https://learn.microsoft.com/azure/ai-services/openai/
免责声明
此工具仅供信息参考之用。在做出投资决策前,请务必自行进行研究并咨询财务顾问。过往业绩并不预示未来表现。