项目简介

本项目提供了基于 Model Context Protocol (MCP) 的服务器实现,旨在扩展大型语言模型 (LLM) 的能力。通过集成 OpenAPI 规范和自定义工具,MCP 服务器允许 LLM 安全、可扩展地访问外部数据和功能。

主要功能点

  • OpenAPI 工具集成: 支持将符合 OpenAPI 规范的 API 转换为 LLM 可调用的工具,方便 LLM 利用丰富的外部服务。
  • 自定义工具: 允许开发者自定义工具函数,灵活扩展 LLM 的能力边界,例如本项目中提供的随机数生成器和分数审批工具。
  • Prompt 模板管理: 支持定义和管理 Prompt 模板,实现可定制的 LLM 交互模式,并提供创建 Agent 的 Prompt 示例。
  • 会话管理: MCP 服务器负责处理客户端会话,为每个会话提供独立的上下文环境。
  • 多传输协议支持: 支持 Stdio 和 SSE 等多种传输协议,满足不同应用场景的需求。

安装步骤

  1. 克隆仓库
    git clone https://github.com/opendatahub-io/llama-stack-demos
    cd llama-stack-demos
  2. 安装 Python 依赖 本项目使用 'uv' 进行包管理。请先安装 'uv',然后同步依赖:
    pip install uv
    uv sync
    source .venv/bin/activate
    或者,您也可以使用 'pip' 安装依赖(可能需要自行解决依赖冲突):
    pip install -r requirements.txt  # 如果存在 requirements.txt 文件
    # 或手动安装 mcp-server, openapi-parser, click, anyio, uvicorn, starlette 等依赖
  3. 选择并进入服务器目录
    • OpenAPI MCP 服务器: 'cd mcp-servers/llamastack'
    • 自定义工具 MCP 服务器: 'cd mcp-servers/custom'

服务器配置

1. OpenAPI MCP 服务器 (mcp-servers/llamastack/mcp_server.py)

  • 服务器名称: 'mcp-openapi-tools-and-prompts' (非配置项,仅为标识)
  • 启动命令 (command): 'python mcp_server.py'
  • 参数 (args):
    {
      "spec_path": "path/to/your/openapi.json",  // 【必填】OpenAPI 规范文件路径,请替换为实际路径
      "transport": "sse",                      // 【可选】传输协议,可选 "stdio" 或 "sse",默认为 "stdio"
      "port": 8000                             // 【可选】SSE 传输协议端口号,默认为 8000,仅当 transport 为 "sse" 时有效
    }
    参数注释:
    • 'spec_path': 必填。指向 OpenAPI 规范文件的路径。您需要将 'path/to/your/openapi.json' 替换为您实际的 OpenAPI 规范文件路径。
    • 'transport': 可选。指定 MCP 服务器使用的传输协议。可以设置为 '"stdio"' (标准输入输出) 或 '"sse"' (Server-Sent Events)。默认为 '"stdio"'。
    • 'port': 可选。当 'transport' 设置为 '"sse"' 时,此参数指定服务器监听的端口号。默认为 '8000'。如果使用 SSE 传输协议,客户端需要配置此端口以连接服务器。

示例配置 (SSE 传输协议):

{
  "server name": "openapi-mcp-server",
  "command": "python mcp_server.py",
  "args": {
    "spec_path": "/path/to/your/openapi.json",
    "transport": "sse",
    "port": 8000
  }
}

2. 自定义工具 MCP 服务器 (mcp-servers/custom/mcp_tools.py)

  • 服务器名称: 'Demo' (非配置项,仅为标识)
  • 启动命令 (command): 'python mcp_tools.py'
  • 参数 (args):
    {
      "transport": "sse",                      // 【可选】传输协议,可选 "stdio" 或 "sse",默认为 "stdio"
      "port": 8001                             // 【可选】SSE 传输协议端口号,默认为 8001 (建议与 OpenAPI 服务器端口区分)
    }
    参数注释:
    • 'transport': 可选。指定 MCP 服务器使用的传输协议。可以设置为 '"stdio"' (标准输入输出) 或 '"sse"' (Server-Sent Events)。默认为 '"stdio"'。
    • 'port': 可选。当 'transport' 设置为 '"sse"' 时,此参数指定服务器监听的端口号。默认为 '8000'。注意: 为了避免端口冲突,建议自定义工具服务器使用与 OpenAPI 服务器不同的端口号,例如 '8001'。

示例配置 (SSE 传输协议):

{
  "server name": "custom-tools-mcp-server",
  "command": "python mcp_tools.py",
  "args": {
    "transport": "sse",
    "port": 8001
  }
}

基本使用方法

  1. 启动 MCP 服务器: 根据您选择的服务器类型,进入相应的目录 ('mcp-servers/llamastack' 或 'mcp-servers/custom'),并根据上述 "服务器配置" 中的说明,使用 'python' 命令启动服务器。请确保根据您的需求配置正确的参数,例如 OpenAPI 规范文件路径、传输协议和端口号。

  2. 配置 MCP 客户端: 在您的 MCP 客户端应用(例如 'demos/rag_agentic' 目录下的示例客户端),您需要注册 MCP 服务器。这通常涉及到配置 MCP 服务器的 ToolGroup ID 和 MCP Endpoint URI。

    • ToolGroup ID: 在客户端代码中,您需要为 MCP 服务器指定一个 ToolGroup ID,例如 '"mcp::openapi"' 或 '"mcp::custom_tool"'。ToolGroup ID 用于在客户端中标识和管理来自不同 MCP 服务器的工具。
    • MCP Endpoint URI: 这是 MCP 客户端连接到 MCP 服务器的地址。对于 SSE 传输协议,URI 的格式通常为 'http://<服务器主机名或IP>:<端口>/sse'。例如,如果您的 OpenAPI MCP 服务器运行在本地主机的 8000 端口,则 URI 可能为 'http://localhost:8000/sse'。对于 Stdio 传输协议,客户端通常不需要显式配置 URI。
  3. 在 LLM 应用中使用工具: 一旦 MCP 客户端成功连接到 MCP 服务器并注册了 ToolGroup,您就可以在 LLM 应用中像使用本地工具一样调用 MCP 服务器提供的工具了。具体的调用方式取决于您使用的 LLM 客户端库和 Agent 框架。您可以参考 'demos/rag_agentic' 目录下的示例代码,了解如何在 Llama Stack 客户端中使用 MCP 工具。

注意事项

  • 启动服务器前,请确保已安装所有必要的 Python 依赖。
  • 配置 MCP 客户端时,请确保 ToolGroup ID 和 MCP Endpoint URI 与您启动的 MCP 服务器配置相匹配。
  • 如果使用 SSE 传输协议,请确保服务器端口未被占用,并且客户端可以访问服务器的网络地址。
  • OpenAPI MCP 服务器需要有效的 OpenAPI 规范文件才能正常工作。请确保提供的 'spec_path' 参数指向正确的文件。
  • 自定义工具 MCP 服务器提供的工具功能和参数定义在 'mcp-servers/custom/mcp_tools.py' 文件中。您可以根据需要修改或扩展这些工具。

信息

分类

AI与计算