金融市场数据微服务

一个兼容MCP的微服务,将Finnhub市场数据API封装为MCP工具,提供公司概况、股票价格、市场新闻等功能。

  • by ardafincan
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ardafincan/stocks-mcp

使用说明

股票mcp

一个与MCP兼容的小型微服务,将Finnhub市场数据API封装到MCP工具中。

此存储库公开了一组工具(在内部的MCP服务器实例上注册 server.py)其可由支持MCP协议的MCP感知客户端或本地助理使用。

本自述由AI编写,旨在解释项目的功能和限制。此外,client.py主要是用vibe编码的:D。

目录

  • server.py --主微服务和MCP工具注册。
  • pyproject.toml --项目元数据和依赖关系。
  • .env (可选)--环境变量(应包含 FINNHUB_API_KEY).

这有什么作用

启动时,该服务会创建一个MCP实例并注册一组市场数据工具(公司简介、报价、新闻等)。该服务旨在本地运行,并由支持MCP的客户端或助手使用。

需求

  • Python 3.10+
  • 中列出的依赖关系 pyproject.toml (使用pip安装,如下所示)。

设置

  1. 创建并激活虚拟环境(推荐):
python -m venv .venv
source .venv/bin/activate
  1. 安装软件包(这将安装中列出的运行时依赖项 pyproject.toml):
python -m pip install .
  1. 创建一个 .env 文件,并设置您的Finnhub API密钥:
FINNHUB_API_KEY=your_finnhub_api_key_here

(如果项目以其他方式读取环境变量,请相应地更新。)

运行服务

直接从项目根目录运行服务器:

python server.py

默认情况下 server.py 启动MCP服务(例如通过 mcp.run(transport='stdio') 或类似)。检查 server.py 对于确切的传输(stdio、tcp、http),如果需要不同的集成界面,请更改它。

如何连接客户端

  • 如果您有支持MCP的助手或客户端,请在本地启动此服务,并将客户端配置为通过服务器使用的相同传输(例如stdio、TCP或HTTP包装器)进行连接。
  • 要与Claude/Anthropic桌面应用程序或本地MCP客户端一起使用,请咨询该客户端的MCP配置,并将其指向此服务的传输。

可用的MCP工具(注册于 server.py)

服务已注册以下工具名称(请参见 server.py 用于精确的签名和参数):

  • get_market_holidays --返回市场假期。
  • get_market_status --返回市场开盘/收盘状态。
  • get_company_basic_financials --返回股票代码的基本财务信息。
  • get_company_news --返回某个日期范围内的新闻。
  • get_company_profile --返回股票代码的公司简介信息。
  • get_ticker_for_company --按公司名称查找股票代码。
  • get_stock_price --返回股票行情的最新报价。

如果添加新工具,请更新此README和MCP注册 server.py.

测试/快速冒烟测试

进行一个简单的烟雾测试 server.py 然后从兼容的MCP客户端调用其中一个已注册的工具。如果您没有MCP客户端,可以在中临时添加一个小型测试工具 server.py (或单独的脚本)导入已注册的函数并直接调用它们。

注意事项和故障排除

  • 确保 FINNHUB_API_KEY 是有效的,并且您尊重Finnhub的费率限制。
  • 如果服务器使用 stdio 传输时,它将作为MCP感知主机的子进程运行(例如,生成此进程的辅助主机)。
  • 如果您需要HTTP传输,请考虑添加一个通过HTTP公开MCP工具的小型包装器或调整 server.py 如果您的MCP库支持,则注册HTTP传输。

贡献

如果您添加了功能(新工具、额外传输、测试),请使用使用示例和任何新的环境变量更新README。