这是一个基于Model Context Protocol (MCP) 构建的服务器示例,用于向LLM客户端提供Nebula Block的可用GPU资源信息。它通过调用Nebula Block的API,并将查询能力封装成MCP工具供LLM使用。

项目简介

本项目是'flyworker/research'仓库中一个用于演示如何构建MCP服务器的示例。它专注于将Nebula Block提供的GPU计算资源信息暴露为MCP工具,使得LLM代理能够查询实时的GPU实例列表、按地区或类型过滤资源。

主要功能点

  • 获取所有GPU实例: LLM可以调用工具获取Nebula Block上所有可用的GPU实例列表。
  • 按地区查询GPU实例: LLM可以指定地区,查询该地区的所有GPU实例信息。
  • 按地区和类型查询GPU实例: LLM可以指定地区和GPU类型,查询匹配条件的GPU实例信息。
  • 封装外部API: 服务器内部通过调用Nebula Block的HTTP API获取数据。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/flyworker/research.git
    cd research
  2. 设置Python虚拟环境:
    python -m venv venv
    source venv/bin/activate  # On Unix/macOS
    # or
    .\venv\Scripts\activate  # On Windows
  3. 安装依赖:
    pip install fastmcp requests
    # 注意:仓库自带的 requirements.txt 可能不包含 fastmcp 和 requests,需要手动安装。

服务器配置

MCP客户端需要以下配置信息来启动并连接到这个服务器:

{
  "server_name": "nebula-block",
  "command": "python",
  "args": [
    "-m",
    "sample_code.mcp_nebula_block.src.mcp_server_nebula_block.server"
  ],
  "comment": "这是一个MCP服务器,提供Nebula Block GPU资源信息工具。"
}
  • 'server_name': MCP服务器的唯一标识符,用于客户端区分不同的服务器。
  • 'command': 用于启动MCP服务器进程的命令,通常是 'python'。
  • 'args': 传递给 'command' 的参数列表,这里指定了要运行的Python模块路径。
  • 'comment': 可选,对该服务器的描述。

基本使用方法

服务器启动后,MCP客户端(例如LLM代理)可以通过JSON-RPC协议与服务器通信,并发现和调用其提供的工具。

LLM代理可以调用的工具包括:

  • 'get_all_gpu_instances': 无参数,返回所有GPU实例。
  • 'get_gpu_instances_by_region': 需要一个字符串参数 'region'。
  • 'get_gpu_instances_by_type': 需要两个字符串参数 'region' 和 'gpu_type'。

例如,LLM客户端可能会发送一个JSON-RPC请求来调用 'get_gpu_instances_by_region' 工具,请求参数包含 '{ "region": "us-east-1" }'。服务器会执行相应的Python函数,获取数据,并通过JSON-RPC响应返回给客户端。

信息

分类

AI与计算