项目简介

该项目是AI-ML仓库中的一个演示部分,专门展示如何构建和使用基于Model Context Protocol (MCP) 的服务器。它集成了数学计算、GitHub信息查询、Gmail发送邮件等功能作为MCP工具,并提供了资源访问和Prompt模板的示例,通过标准化的JSON-RPC协议与LLM客户端进行交互。

主要功能点

  • 工具 (Tools) 托管与执行: 提供各种可供LLM调用的外部功能,例如:
    • Echo工具: 简单回显消息。
    • 数学工具: 执行加法和减法运算。
    • GitHub工具: 查询GitHub用户信息。
    • Gmail工具: 发送电子邮件。
    • 路径与地图工具: 提供路线指引和地图信息(作为演示)。
  • 资源 (Resources) 托管与访问: 提供数据访问能力,例如:
    • Hello资源: 根据提供的名字返回欢迎信息。
  • Prompt 模板 (Prompts) 定义与渲染: 支持可定制的LLM交互模式,例如:
    • 帮助编程Prompt: 根据错误信息提供编程协助建议。
    • 解释加法Prompt: 解释数学加法运算。

安装步骤

  1. 环境准备: 确保您的系统已安装Python 3.9或更高版本。
  2. 克隆仓库: 将整个AI-ML仓库克隆到本地:
    git clone https://github.com/05satyam/AI-ML.git
    cd AI-ML/demo_applications/mcp_server_demo
  3. 安装依赖: 安装MCP服务器运行所需的Python库:
    pip install uvicorn fastapi mcp httpx google-api-python-client google-auth google-auth-oauthlib
  4. Gmail工具配置(可选): 如果您计划使用Gmail发送邮件功能,需要进行额外配置:
    • 访问Google Cloud Console创建OAuth 2.0客户端ID,并启用Gmail API。
    • 下载 'credentials.json' 文件并将其放置在 'AI-ML/demo_applications/mcp_server_demo/' 目录下。
    • 首次运行Gmail工具时,它将引导您完成授权流程,并在当前目录生成 'token.json' 文件。

服务器配置

MCP客户端需要MCP服务器的连接信息来与之通信。以下是此MCP服务器实现的配置示例(基于 'mounted_servers.py',其中 'command' 和 'args' 是启动主FastAPI应用的命令,'endpoint_path' 是每个MCP服务在该应用下的具体路径):

{
  "servers": [
    {
      "name": "EchoServer",
      "description": "提供消息回显、欢迎语和编程帮助等功能。",
      "command": "uvicorn",
      "args": ["mounted_servers:app", "--port", "8000"],
      "endpoint_path": "/echo/mcp"
    },
    {
      "name": "MathServer",
      "description": "提供基本的数学加法和减法运算。",
      "command": "uvicorn",
      "args": ["mounted_servers:app", "--port", "8000"],
      "endpoint_path": "/math/mcp"
    },
    {
      "name": "GitHubServer",
      "description": "查询GitHub用户信息。",
      "command": "uvicorn",
      "args": ["mounted_servers:app", "--port", "8000"],
      "endpoint_path": "/github/mcp"
    },
    {
      "name": "GmailServer",
      "description": "发送电子邮件。",
      "command": "uvicorn",
      "args": ["mounted_servers:app", "--port", "8000"],
      "endpoint_path": "/gmail/mcp"
    }
  ]
}
  • 'name': MCP服务器的内部标识符。
  • 'description': 服务器功能简介,供LLM客户端理解其用途。
  • 'command': 启动该MCP服务器所使用的命令行工具(例如 'uvicorn')。
  • 'args': 传递给 'command' 的参数列表,指定要运行的应用模块和监听端口。
  • 'endpoint_path': MCP客户端连接此服务器时的具体HTTP路径。

基本使用方法

  1. 启动MCP服务器: 在 'AI-ML/demo_applications/mcp_server_demo/' 目录下运行以下命令:

    uvicorn mounted_servers:app --port 8000

    这将在本地8000端口启动一个FastAPI应用,并在 '/echo/mcp'、'/math/mcp'、'/github/mcp' 和 '/gmail/mcp' 等路径下分别挂载了对应的MCP服务。

  2. 启动Streamlit客户端演示(可选): 在一个新的终端中,确保您已安装Streamlit ('pip install streamlit langchain openai'),然后在同一目录下运行:

    streamlit run app.py

    这将打开一个网页界面,您可以通过这个界面与正在运行的MCP服务器进行交互,测试各种工具、资源和Prompt功能,并体验单步和多步智能体协作。

  3. 通过MCP客户端调用: 一旦服务器启动,任何兼容MCP协议的客户端(如集成了MCP客户端库的LLM应用)都可以通过JSON-RPC over HTTP协议调用这些服务。例如,客户端可以向 'http://localhost:8000/math/mcp' 发送一个 'call_tool' 请求来执行 'add' 工具。

信息

分类

AI与计算