返回市场
caddy-mcp服务器

caddy-mcp服务器

作者:lum8rjack5 星标更新:2025-06-02

项目介绍

caddy-mcp

概述

caddy-mcp 是一个提供模型上下文协议(MCP)接口的服务器,用于通过 Caddy API 管理 Caddy 服务器实例。它提供了检索、更新和转换 Caddy 配置(JSON、Caddyfile、YAML 或 Nginx 格式)以及监控反向代理上游状态的工具。该服务器可以通过不同的传输方式运行:标准 I/O、SSE 或 HTTP 流。

工具

  • get_caddy_config - 获取当前 Caddy 服务器配置(JSON 格式)
  • update_caddy_config - 通过提供完整的 JSON 配置来更新 Caddy 服务器配置
  • convert_caddyfile_to_json - 将 Caddyfile 配置转换为 JSON 格式
  • convert_nginx_to_json - 将 Nginx 配置转换为 Caddy JSON 格式
  • convert_yaml_to_json - 将 YAML 配置转换为 Caddy JSON 格式
  • upstream_proxy_statuses - 获取已配置的反向代理上游状态(JSON 格式)

构建步骤

  1. 前提条件:

  2. 克隆仓库:

    git clone https://github.com/lum8rjack/caddy-mcp.git
    cd caddy-mc
    
  3. 构建服务器:

    make
    # 或者
    go build -o caddy-mcp .
    

    这将在项目根目录生成一个 caddy-mcp 可执行文件。

运行 MCP 服务器

你可以使用不同的传输方式和端口运行服务器:

./caddy-mcp -h
Usage of ./caddy-mcp:
  -port int
        运行 MCP 服务器的端口(默认值 7000)
  -transport string
        MCP 服务器使用的传输方式(stdio, sse, httpstream)(默认值 "stdio")
  -url string
        Caddy 服务器的 URL(默认值 "http://127.0.0.1:2019")

示例 MCP 设置:

{
    "mcpServers": {
        "caddy-mcp": {
            "command": "~/caddy-mcp",
            "args": ["-transport", "stdio", "-url", "http://127.0.0.1:2019"]
        }
    }
}

Caddyfile 示例

一个用于测试的示例 Caddyfile,暴露了管理 API:

{
    admin :2019
}

:8080 {
    respond "I am 8080"
}

:8081 {
    respond "I am 8081"
}

添加额外的 Caddy 模块

如果你正在使用带有额外模块(例如 Cloudflare DNS 模块)的自定义构建版本的 Caddy,你需要在项目中添加相应的 Go 模块。这确保 MCP 服务器可以与你的自定义 Caddy 构建一起工作。

步骤:

  1. main.go 中添加模块导入:

    例如,要添加 Cloudflare DNS 模块,添加以下导入(可以在导入中的任意位置,通常与其他 Caddy 模块一起):

    import _ "github.com/caddy-dns/cloudflare"
    
  2. 更新依赖项:

    运行:

    go mod tidy
    
  3. 重新构建服务器:

    make
    # 或者
    go build -o caddy-mcp .
    

此过程可以重复进行以添加任何其他所需的 Caddy 模块。有关官方和社区模块的列表,请参阅 Caddy 模块目录