这是一个基于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获取数据。
安装步骤
- 克隆仓库:
git clone https://github.com/flyworker/research.git cd research - 设置Python虚拟环境:
python -m venv venv source venv/bin/activate # On Unix/macOS # or .\venv\Scripts\activate # On Windows - 安装依赖:
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与计算