使用说明

项目简介

mcpserver 是一个基于 Go 语言实现的演示性质的 MCP (Model Context Protocol) 服务器。它主要用于模拟 Istio 环境下的 MCP 服务端,可以管理和提供 Istio 的配置资源,例如 VirtualService、ServiceEntry 和 EnvoyFilter。该项目旨在展示 MCP 服务器的基本功能,例如资源托管、版本控制和数据推送。

请注意: 这是一个演示项目,主要用于学习和测试 MCP 协议,可能不适用于生产环境。它模拟了 Istio 部分配置资源的提供,但并非完整的 Istio MCP 服务器。

主要功能点

  • 资源管理: 支持管理多种 Istio 配置资源,例如 VirtualService, ServiceEntry, EnvoyFilter。
  • MCP协议: 实现了基于 gRPC 的 MCP 服务端,可以响应 MCP 客户端的资源请求。
  • 版本控制: 为托管的资源提供版本管理,支持基于版本的信息同步。
  • Mock数据: 使用 Mock 数据模拟 Istio 配置资源,方便快速启动和测试。
  • 动态更新: 提供 HTTP 接口,允许动态更新 Mock 资源,并实时推送给 MCP 客户端。

安装步骤

  1. 安装 Go 环境: 确保已安装 Go 语言环境 (>= 1.16)。
  2. 克隆仓库: 从 GitHub 克隆 mcpserver 仓库到本地。
    git clone https://github.com/champly/mcpserver.git
    cd mcpserver
  3. 构建项目: 使用 'go build' 命令编译项目。
    go build -o mcpserver main.go

服务器配置

MCP 客户端需要配置连接到 MCP 服务器的信息。对于 'mcpserver' 来说,客户端需要知道服务器的地址和端口。以下是一个 MCP 客户端连接 'mcpserver' 的配置示例 (JSON 格式),假设 'mcpserver' 运行在 '127.0.0.1:20002':

{
  "serverName": "mcpserver-demo",
  "command": "./mcpserver",
  "args": [
    "--grpc-port=20002"
  ],
  "address": "127.0.0.1:20002",
  "protocol": "grpc"
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,可以自定义。
  • 'command': 启动 MCP 服务器的可执行文件路径,这里假设 'mcpserver' 可执行文件在当前目录。
  • 'args': 启动 MCP 服务器的命令行参数。
    • '--grpc-port': 指定 gRPC 监听端口,默认为 '20002'。 您可以通过 '--grpc-port' 参数显式指定,如示例中的 '"--grpc-port=20002"'。 如果您没有通过参数指定端口,且您构建的可执行文件名为 'mcpserver', 那么可以直接使用 '"./mcpserver"' 命令启动,默认端口为 '20002'。
  • 'address': MCP 服务器的地址和端口,用于客户端连接,格式为 'IP地址:端口'。
  • 'protocol': MCP 服务器使用的协议,这里为 'grpc'。

基本使用方法

  1. 启动 MCP 服务器: 在 'mcpserver' 仓库目录下,运行编译生成的可执行文件 'mcpserver'。

    ./mcpserver --grpc-port=20002

    或者直接运行 (如果使用默认端口 20002):

    ./mcpserver

    服务器默认监听 '0.0.0.0:20002'。

  2. 配置 MCP 客户端: 根据上述 服务器配置 示例,配置您的 MCP 客户端,使其连接到 'mcpserver' 服务器的地址 '127.0.0.1:20002'。

  3. 客户端连接和资源同步: 启动 MCP 客户端后,客户端会通过 gRPC 连接到 'mcpserver',并根据配置的资源类型(例如 VirtualService, ServiceEntry)向服务器请求资源。'mcpserver' 会将 Mock 数据以 MCP 协议响应给客户端。

  4. 动态更新 Mock 资源 (可选): 'mcpserver' 提供了 HTTP 接口用于动态更新 Mock 资源。您可以通过 POST 请求访问以下接口来更新资源:

    • 'POST http://localhost:8080/envoyfilter' 更新 EnvoyFilter 资源
    • 'POST http://localhost:8080/virtualservice' 更新 VirtualService 资源
    • 'POST http://localhost:8080/serviceentry' 更新 ServiceEntry 资源

    发送 POST 请求后,'mcpserver' 会更新内存中的 Mock 数据,并立即将更新后的资源版本推送给已连接的 MCP 客户端,客户端可以实时获取最新的资源配置。

注意: HTTP 更新接口仅用于演示 Mock 数据的动态更新,实际生产环境的 MCP 服务器资源更新通常通过更完善的配置管理系统进行。

信息

分类

开发者工具