项目简介

本仓库是一个关于Model Context Protocol (MCP) 服务器开发的实践指南,旨在帮助开发者理解MCP协议,并提供使用FastMCP框架构建MCP服务器的具体代码示例。它不仅介绍了MCP客户端如何消费服务,更侧重于展示如何从零开始搭建一个MCP服务器,注册可供大型语言模型 (LLM) 调用的工具。

主要功能点

  • MCP服务器实现示例:提供可直接运行的Python代码,演示如何创建一个基于FastMCP框架的MCP服务器。
  • 工具注册与执行:展示如何通过装饰器 ('@mcp.tool') 在MCP服务器中定义和注册功能函数(工具),使LLM客户端能够远程调用这些功能。
  • HTTP传输协议支持:服务器示例配置为通过HTTP协议进行通信,方便与各种MCP客户端集成。
  • 认证机制演示:包含带简单认证机制的MCP服务器示例,说明如何在服务器端实现访问控制。
  • 客户端集成指南:虽然主要聚焦服务器,但也提供了OpenAI API客户端和FastMCP客户端如何连接并调用MCP服务器的示例,形成完整的开发闭环。

安装步骤

  1. Python环境:确保您的系统已安装Python 3.8或更高版本。
  2. 安装FastMCP:在命令行中运行以下命令安装FastMCP框架:
    pip install fastmcp
  3. 其他可选工具
    • Ngrok:如果需要将本地运行的MCP服务器暴露到公网,供远程LLM客户端(如OpenAI)访问,请安装并配置Ngrok。
    • Alpha Vantage API Key:示例代码中的股票报价工具最初计划调用Alpha Vantage API,但为方便演示已注释掉实际API调用并返回固定值。若需启用真实API,请前往Alpha Vantage官网获取API Key并配置环境变量。

服务器配置

MCP客户端需要知道如何连接您的服务器。以下是针对仓库中'exemplo_04.py'和'exemplo_06.py'这两个MCP服务器示例,客户端可能需要配置的关键信息(json格式描述):

  • 服务名称 (Server Label): 客户端可自定义一个便于识别的名称,例如 "股票报价查询" 或 "我的自定义工具"。
  • 启动命令 (Command): 'python' (当客户端需要启动一个本地的MCP服务器时)
  • 启动参数 (Args):
    • 对于无认证服务:'exemplo_04.py' (这将启动一个提供股票报价查询功能的服务器)
    • 对于带认证服务:'exemplo_06.py' (这将启动一个需要认证才能访问的股票报价服务)
  • 协议 (Transport): 'http' (MCP服务器使用的传输协议)
  • 端口 (Port): '8000' (服务器默认启动的本地端口)
  • 服务器URL路径 (Server URL Path): '/mcp' (这是FastMCP服务器的默认MCP协议路径,客户端在拼接完整URL时会用到,例如 'http://127.0.0.1:8000/mcp')
  • 认证信息 (Authentication):
    • 对于'exemplo_04.py'启动的无认证服务:客户端无需配置任何认证信息。
    • 对于'exemplo_06.py'启动的带认证服务:客户端需要在发送请求时,在HTTP请求头中加入 'Authorization' 字段,其值为 'Bearer tk-abcdef123456'。

基本使用方法

  1. 启动MCP服务器: 在命令行中进入仓库根目录,然后运行以下命令启动无认证的股票报价MCP服务器:

    python exemplo_04.py

    服务器将在 'http://127.0.0.1:8000/mcp' 地址监听请求。

  2. (可选)暴露本地服务器: 如果您希望通过远程LLM客户端(如OpenAI)访问,可以在另一个命令行窗口运行Ngrok来暴露本地服务器:

    ngrok http 8000

    Ngrok将提供一个临时的公共URL,例如 'https://your-ngrok-domain.ngrok-free.app'。客户端应使用 'https://your-ngrok-domain.ngrok-free.app/mcp' 作为服务器URL。

  3. 使用MCP客户端调用工具: 您可以使用Postman、OpenAI API客户端或FastMCP客户端来连接并调用服务器提供的 'cotacao' 工具。

    • 示例(概念性,非代码): 假设您的MCP客户端已配置并连接到MCP服务器。当LLM需要获取股票报价时,它会通过MCP协议调用服务器上注册的 'cotacao' 工具,并传递股票代码(例如 'ticker: "NVDA"')作为参数。MCP服务器会执行 'cotacao' 函数并返回结果。

信息

分类

AI与计算