caddy-mcp 是一个提供模型上下文协议(MCP)接口的服务器,用于通过 Caddy API 管理 Caddy 服务器实例。它提供了检索、更新和转换 Caddy 配置(JSON、Caddyfile、YAML 或 Nginx 格式)以及监控反向代理上游状态的工具。该服务器可以通过不同的传输方式运行:标准 I/O、SSE 或 HTTP 流。
前提条件:
克隆仓库:
git clone https://github.com/lum8rjack/caddy-mcp.git
cd caddy-mc
构建服务器:
make
# 或者
go build -o caddy-mcp .
这将在项目根目录生成一个 caddy-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,暴露了管理 API:
{
admin :2019
}
:8080 {
respond "I am 8080"
}
:8081 {
respond "I am 8081"
}
如果你正在使用带有额外模块(例如 Cloudflare DNS 模块)的自定义构建版本的 Caddy,你需要在项目中添加相应的 Go 模块。这确保 MCP 服务器可以与你的自定义 Caddy 构建一起工作。
步骤:
在 main.go 中添加模块导入:
例如,要添加 Cloudflare DNS 模块,添加以下导入(可以在导入中的任意位置,通常与其他 Caddy 模块一起):
import _ "github.com/caddy-dns/cloudflare"
更新依赖项:
运行:
go mod tidy
重新构建服务器:
make
# 或者
go build -o caddy-mcp .
此过程可以重复进行以添加任何其他所需的 Caddy 模块。有关官方和社区模块的列表,请参阅 Caddy 模块目录。