项目简介

  • 'Project Horizon' 项目中的一个核心组件,实现了模型上下文协议 (MCP) 服务器。
  • 其主要功能是接收MCP客户端(如AI代理)发送的股票价格查询请求,通过调用外部库获取数据,并将结果以标准化的JSON-RPC响应返回。
  • 当前版本主要通过标准输入/输出 (stdio) 作为传输协议。

主要功能点

  • 实现 MCP JSON-RPC 协议,处理 'tools/call' 请求。
  • 提供 'get_current_stock_price' 工具,根据股票代码查询实时或最新价格。
  • 使用 'yfinance' 库获取股票数据。
  • 通过 stdio 与客户端进行进程间通信。

安装步骤

  1. 克隆整个 'project-horizon' 仓库。
  2. 进入项目根目录。
  3. 创建并激活 Python 虚拟环境 ('python -m venv .venv' -> 'source .venv/bin/activate')。
  4. 安装依赖:'pip install -r requirements.txt' (确保包含 'mcp[cli]' 和 'yfinance')。
  5. 确保 '.env' 文件存在并配置了 'STOCK_MCP_SERVER_PATH' 指向 'mcp_servers/stock_mcp_server/server.py' 的绝对路径

MCP客户端连接配置示例(Stdio)

MCP客户端需要配置如何启动此服务器进程并与其通过标准流通信。典型的MCP客户端库(如 'mcp' 库自身或 ADK 的 MCP 工具集)会使用类似如下的参数结构来描述如何启动服务器:

  • 'server name': "Stock Price Server" (MCP服务器在其初始化握手中声明的名称)
  • 'transport': "stdio" (使用的传输协议类型)
  • 'command': "python" (启动MCP服务器脚本的执行命令,通常是Python解释器路径)
  • 'args': ["/absolute/path/to/project-horizon/mcp_servers/stock_mcp_server/server.py"] (传递给执行命令的参数列表,其中必须包含服务器脚本的绝对路径)
  • 'cwd': "/absolute/path/to/project-horizon" (启动服务器进程时设置的工作目录,应设置为项目根目录以确保能正确找到依赖和文件)

基本使用方法

此MCP服务器通常不会独立作为长期运行的服务启动。它被设计为由兼容的MCP客户端(例如 'project-horizon' 项目中的专家代理 ('stock_info_agent') 或测试脚本 'tests/test_mcp_library_stdio.py' / 'tests/test_stock_mcp_stdio.py')在需要时启动为一个子进程。

客户端负责:

  1. 使用上述配置启动 'mcp_servers/stock_mcp_server/server.py' 脚本作为子进程。
  2. 通过该子进程的标准输入 (stdin) 发送符合 MCP JSON-RPC 格式的请求,例如调用 'tools/call' 方法来请求股票价格。
  3. 从该子进程的标准输出 (stdout) 读取符合 MCP JSON-RPC 格式的响应。
  4. 处理完请求或任务完成后,关闭标准输入流,服务器进程接收到 EOF 后通常会自动退出。

开发者可以通过运行测试脚本(如 'python -m tests.test_mcp_library_stdio' 或 'python tests/test_stock_mcp_stdio.py')来验证此MCP服务器的功能。在完整的 Project Horizon 演示中,运行专家代理 ('python -m specialist_agents.stock_info_agent') 会在接收到 A2A 请求时按需启动并使用此MCP服务器。

信息

分类

商业系统