使用说明
MCP库存查询系统
基于模型上下文协议(MCP)构建的智能股票数据检索系统,将人工智能支持的查询理解与可靠的财务数据访问相结合。该系统使用谷歌的Gemini AI来解释自然语言查询,并自动选择适当的工具来获取股市信息。
特性
-
AI驱动的查询理解:使用Google Gemini解释自然语言股票查询
-
双重数据源:主要Yahoo Finance API,带有CSV回退以提高可靠性
-
自动工具选择:将用户查询智能映射到适当的库存工具
-
交互式聊天界面:用于自然对话的简单命令行界面
-
稳健的错误处理:全面的回退机制和错误恢复
-
异步处理:高性能异步操作,提高响应速度
建筑
该系统由两个主要部分组成:
MCP客户端(MCP_Client.py)
-
处理用户输入和自然语言处理
-
通过stdio通信连接到MCP服务器
-
使用Gemini AI识别适当的工具和论据
-
管理交互式用户会话
MCP服务器(MCP_Server.py)
-
通过MCP协议提供库存数据工具
-
实现Yahoo Finance API与CSV回退的集成
-
公开了两个主要工具:get_stock_price和compare_stocks
-
自动处理数据源故障转移
安装
先决条件
-
Python 3.10或更高版本
-
谷歌人工智能API密钥(Gemini)
-
雅虎财经数据的互联网连接
设置步骤
- 克隆或下载项目文件
- 安装依赖项:
pip install -r requirements.txt
- 配置环境变量(.env):
GEMINI_API_KEY=your_gemini_api_key_here
- 更新工作目录:
cwd="C:/your/project/path" # Update this path
- 确保
stocks_data.csv存在于您的工作目录中。当Yahoo Finance API因网络问题或服务中断而不可用时,此CSV文件用作后备数据源。本地数据集包含精心挑选的表现最佳的股票的价格信息,以提供对基本市场数据的可靠离线访问。
用法
启动系统
- 运行客户端:
python mcp_client.py
- 输入自然语言查询:
What is your query? → What's the current price of Apple?
What is your query? → compare stock price of Apple and Microsoft
交互示例
单笔库存查询:
Input: "What's the price of AAPL?"
Output: The current price of AAPL is $150.25 (from Yahoo Finance)
库存比较:
Input: "Compare Apple and Microsoft stocks"
Output: AAPL ($150.25 YF) is lower than MSFT ($380.50 YF).
回退数据:
Input: "Get Tesla stock price"
Output: The current price of TSLA is $250.87 (from local data)
文件结构
├── mcp_client.py # Main client application
├── mcp_server.py # MCP server with stock tools
├── .env # Environment variables (API keys)
├── requirements.txt # Python dependencies
├── stocks_data.csv # Fallback stock data
└── README.md # This file
可用工具
get_stock_price
-
目的:检索单个交易品种的当前股价
-
参数:
symbol (string): Stock ticker symbol (e.g., "AAPL", "MSFT") -
示例用法:
"What's Apple's stock price?"
"Get TSLA price"
"Show me Microsoft stock value"
compare_stocks
- 目的:比较两个股票代码之间的价格
- 参数:
symbol1 (string): First stock ticker symbol
symbol2 (string): Second stock ticker symbol
- 示例用法:
"Compare Apple and Google stocks"
"Which is higher, MSFT or AAPL?"
"Show me Tesla vs Ford stock prices"
配置
API密钥
在.env文件中设置Gemini API密钥:
GEMINI_API_KEY=your_actual_api_key_here
工作目录
更新mcp_client.py中的cwd参数:
server_params = StdioServerParameters(
command="python",
args=["mcp_server.py"],
cwd="/path/to/your/project" # Update this
)
CSV数据格式
回退CSV文件应遵循以下结构:
symbol,price,last_updated
AAPL,150.25,2024-01-15
MSFT,380.50,2024-01-15
数据源
主要:雅虎财经
- 通过yfinance库实时获取股票数据
- 全面的市场覆盖
- 自动重试机制
回退:本地CSV
- 雅虎财经不可用时的离线数据访问
- 可定制的库存范围
- 快速本地查找
故障排除
常见问题
访问雅虎财经时出现“TLS连接错误”或“OpenSSL无效库”:
错误无法获取股票代码“AAPL”原因:执行失败,curl:(35)TLS连接 错误:错误:00000000:无效库(0):OPENSSL_internal:无效库(零)。
原因:当您的环境存在网络限制、防火墙策略或SSL/TLS配置问题,导致无法安全连接到雅虎财经服务器时,会发生此错误。
常见场景:
- 具有严格SSL/TLS政策的企业网络
- 过时的OpenSSL库或证书
- 阻止金融API的VPN或代理配置
- 受限的网络环境(机构、教育)
解决方案:系统自动回退到本地数据(stocks_data.csv)当雅虎财经无法访问时。验证CSV文件中是否存在查询符号,以便成功检索数据。
手动分辨率:
- 更新系统的OpenSSL库
- 如果位于公司防火墙之后,请配置代理设置
- 请与网络管理员联系以获取API访问权限
- 确保
stocks_data.csv包含所需的股票代码作为备份
“连接错误”:
- 验证mcp_server.py是否在正确的目录中
- 检查mcp_client.py中的cwd参数
- 确保Python在您的系统PATH中
“无法检索价格”:
- 验证股票代码是否正确
- 检查雅虎财经的互联网连接
- 确保stocks_data.csv存在并且格式正确
“API密钥错误”:
- 验证在.env中是否设置了GEMINI_API_KEY
- 检查API密钥有效性和配额
- 确保.env文件位于项目根目录中
调试模式
有关详细的调试,请检查控制台输出,其中显示:
- 连接状态
- 工具识别过程
- 数据源选择
- 错误详细信息
依赖项
- mcp[cli]==1.8.1-模型上下文协议框架
- yfnance==0.2.61-雅虎财经API包装器
- 谷歌genai==1.15.0-谷歌双子座人工智能客户端
- python dotenv==1.1.0-环境变量管理