项目简介
本仓库是一个关于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服务器的示例,形成完整的开发闭环。
安装步骤
- Python环境:确保您的系统已安装Python 3.8或更高版本。
- 安装FastMCP:在命令行中运行以下命令安装FastMCP框架:
pip install fastmcp - 其他可选工具:
- 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'。
基本使用方法
-
启动MCP服务器: 在命令行中进入仓库根目录,然后运行以下命令启动无认证的股票报价MCP服务器:
python exemplo_04.py服务器将在 'http://127.0.0.1:8000/mcp' 地址监听请求。
-
(可选)暴露本地服务器: 如果您希望通过远程LLM客户端(如OpenAI)访问,可以在另一个命令行窗口运行Ngrok来暴露本地服务器:
ngrok http 8000Ngrok将提供一个临时的公共URL,例如 'https://your-ngrok-domain.ngrok-free.app'。客户端应使用 'https://your-ngrok-domain.ngrok-free.app/mcp' 作为服务器URL。
-
使用MCP客户端调用工具: 您可以使用Postman、OpenAI API客户端或FastMCP客户端来连接并调用服务器提供的 'cotacao' 工具。
- 示例(概念性,非代码): 假设您的MCP客户端已配置并连接到MCP服务器。当LLM需要获取股票报价时,它会通过MCP协议调用服务器上注册的 'cotacao' 工具,并传递股票代码(例如 'ticker: "NVDA"')作为参数。MCP服务器会执行 'cotacao' 函数并返回结果。
信息
分类
AI与计算