使用说明

项目简介

lua-resty-mcp 是一个基于 OpenResty 和 Lua 语言开发的 Model Context Protocol (MCP) SDK。它旨在帮助开发者快速构建 MCP 服务器,为大型语言模型(LLM)应用提供标准化的上下文信息和功能支持。该 SDK 提供了服务器端和客户端的 API,方便开发者在 Lua 环境中实现 MCP 协议的各项功能。

主要功能点

  • 资源管理 (Resources):支持注册和管理各种类型的资源,并允许客户端通过 URI 访问和订阅资源更新。
  • 工具注册与执行 (Tools):允许注册可被 LLM 客户端调用的外部工具,扩展 LLM 的能力。
  • Prompt 模板 (Prompts):支持定义和管理 Prompt 模板,实现可定制的 LLM 交互模式。
  • 会话管理:服务器端负责管理客户端会话。
  • 能力声明:声明服务器支持的 MCP 功能。
  • 多种传输协议支持:目前已支持 Stdio 传输协议,未来计划支持 Streamable HTTP。
  • 分页支持:对资源、Prompt 和工具列表提供分页功能。

安装步骤

由于 'lua-resty-mcp' 是一个 Lua 库,需要在 OpenResty 环境中使用。安装步骤如下:

  1. 确保已安装 OpenResty:请根据 OpenResty 官方文档安装 OpenResty ('https://openresty.org/en/installation.html')。
  2. 安装 lua-resty-mcp
    • 您需要将 'lua-resty-mcp' 库放置在 OpenResty 可以访问的 Lua 模块路径下。
    • 通常,您可以将仓库克隆到本地,并将 'resty' 目录复制到 OpenResty 的 'lua_package_path' 指定的路径下。
    • 例如,如果您的 OpenResty Lua 模块路径为 '/usr/local/openresty/lualib/',则可以将 'resty' 目录复制到 '/usr/local/openresty/lualib/resty/mcp/'。

服务器配置

MCP 客户端需要配置与 'lua-resty-mcp' 服务器建立连接的命令。以下是一个 JSON 格式的配置示例,用于配置一个基于 'lua-resty-mcp' 的 MCP 服务器,并假设您已经创建了一个名为 'server.lua' 的 Lua 脚本(例如,使用了 README 中的 Quickstart 示例代码):

{
  "serverName": "lua-mcp-server",
  "command": ["openresty", "server.lua"]
  // "command": "openresty server.lua"  // 简写形式,效果相同
}

配置参数说明:

  • serverName: MCP 服务器的名称,可以自定义,用于标识服务器。
  • command: 启动 MCP 服务器的命令,类型为字符串数组。
    • 数组的第一个元素 'openresty' 是 OpenResty 的可执行文件。
    • 数组的第二个元素 'server.lua' 是您的 Lua 服务器脚本文件路径。 请确保 'server.lua' 文件与客户端在同一目录下,或者使用绝对路径。

注意: 请根据您的实际 OpenResty 安装路径和 Lua 脚本文件位置,调整 'command' 配置。

基本使用方法

  1. 创建服务器 Lua 脚本 (例如 'server.lua')

    • 根据 README 中的 Quickstart 示例,编写 Lua 脚本,引入 'resty.mcp' 模块,创建 MCP 服务器实例,并注册 Prompt、ResourceTemplate 和 Tool 等组件。
    • 使用 'server:run()' 启动服务器。
  2. 配置 MCP 客户端

    • 在 MCP 客户端的配置中,使用上面提供的 JSON 配置示例,配置 'command' 以启动 'lua-resty-mcp' 服务器。
  3. 客户端与服务器交互

    • 客户端可以使用 'lua-resty-mcp' 提供的客户端 API('mcp.client')连接到服务器。
    • 客户端可以调用 'client:list_prompts()'、'client:get_prompt()'、'client:list_resources()'、'client:read_resource()'、'client:list_tools()'、'client:call_tool()' 等方法与服务器进行交互,实现 MCP 协议定义的功能。

示例 (简化自 Quickstart 代码, 'server.lua'):

local mcp = require("resty.mcp")
local server, err = mcp.server(mcp.transport.stdio, {})
if not server then error(err) end

server:register(mcp.prompt("echo", function(args) return "Echo: "..args.message end, "Echo prompt", {message = {required = true}}))
server:register(mcp.tool("echo", function(args) return "Tool echo: "..args.message end, "Echo tool", {properties = {message = {type = "string"}}, required = {"message"}}))

server:run()

启动服务器后,MCP 客户端即可通过配置的命令连接并使用服务器提供的 Prompt 和 Tool 功能。

信息

分类

AI与计算