使用说明
Python MCP服务器与Finnhub Stock API集成
这个项目演示了使用Python和Flask的模型上下文协议(MCP)服务器实现。它提供标准MCP功能以及Finnhub Stock API集成,用于实时财务数据。
特性
- 提供示例资源(文本和JSON)
- 实现基本工具(回声和三角函数计算器)
- API库存工具:
stock_quote-获取实时股票报价company_profile-获取公司信息company_news-获取公司的最新新闻文章stock_sentiment-分析股票的情绪和市场感知
- 用于查询股票数据和分析市场情绪的自然语言接口
- 提供示例提示
- 通过HTTP使用JSON-RPC 2.0进行通信
先决条件
- Python 3.8+
- MCP兼容客户端(如Postman)
- Finnhub API密钥(在https://finnhub.io/)
- OpenAI API密钥(用于自然语言处理)
设置
-
创建并激活虚拟环境:
python -m venv venv .\venv\Scripts\activate # Windows source venv/bin/activate # Unix/MacOS -
安装依赖项:
pip install -r requirements.txt -
创建一个
.env使用API密钥文件:FINNHUB_API_KEY=your_finnhub_api_key_here OPENAI_API_KEY=your_openai_api_key_here
运行服务器
要手动运行服务器,请执行以下操作:
python server.py
服务器将在以下时间可用http://localhost:5000/mcp
与邮递员联系
-
打开邮差桌面
-
创建新请求:
- 将请求方法设置为POST
- 将URL设置为http://localhost:5000/mcp
- 将Content-Type标头设置为application/json
-
发送初始化请求:
{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-06-18", "capabilities": { "elicitation": {}, "sampling": {} }, "clientInfo": { "name": "postman-client", "version": "1.0.0" } } } -
初始化后,您可以发出探索和使用服务器的请求:
列出可用工具:
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {} }调用工具:
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "echo", "parameters": { "message": "Hello, MCP!" } } }获取股票报价:
{ "jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": { "name": "stock_quote", "parameters": { "symbol": "AAPL" } } }获取公司简介:
{ "jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": { "name": "company_profile", "parameters": { "symbol": "MSFT" } } }获取公司新闻:
{ "jsonrpc": "2.0", "id": 6, "method": "tools/call", "params": { "name": "company_news", "parameters": { "symbol": "TSLA", "days": 7 } } }分析股票情绪:
{ "jsonrpc": "2.0", "id": 7, "method": "tools/call", "params": { "name": "stock_sentiment", "parameters": { "symbol": "AAPL" } } }列出可用资源:
{ "jsonrpc": "2.0", "id": 4, "method": "resources/list", "params": {} }阅读资源:
{ "jsonrpc": "2.0", "id": 5, "method": "resources/read", "params": { "uri": "sample://data/example.txt" } }列出可用提示:
{ "jsonrpc": "2.0", "id": 6, "method": "prompts/list", "params": {} }
使用自然语言界面
此服务器包括一个自然语言端点,允许您使用纯英语而不是结构化JSON-RPC请求查询股票信息。
-
在您的
.env文件 -
向发送POST请求
/ask端点:使用JSON:
{ "query": "What's the current stock price for Tesla?" }或者请求正文中的纯文本。
-
服务器将:
- 解析您的自然语言查询
- 识别股票代码和所需信息
- 调用相应的工具
- 返回格式化的响应
示例查询:
- “苹果目前的股价是多少?”
- “请介绍一下微软公司”
- “特斯拉的最新消息是什么?”
- “微软股票今天表现如何?”
- “亚马逊股票的市场情绪如何?”
- “市场对Netflix的感觉如何?”
- “分析谷歌股票的情绪”
理解代码
server.py-使用Flask处理MCP请求的主服务器实现finnhub_api.py-Finnhub Stock API客户nlp_tools.py-自然语言处理的辅助函数.vscode/mcp.json-VS Code MCP客户端集成配置