使用说明
Caddy MCP服务器
用于Caddy web服务器管理和插件开发的模型上下文协议(MCP)服务器。
入门指南
Claude Code快速入门
-
克隆并设置服务器:
git clone https://github.com/Cabooman/caddy-mcp.git cd caddy-mcp npm install npm run build -
安装xcaddy(插件构建所需):
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest -
添加到您的Claude Code MCP配置中:
{ "mcpServers": { "caddy": { "command": "node", "args": ["/path/to/caddy-mcp/dist/index.js"] } } } -
在Claude Code中尝试一下:
- 请Claude“创建一个简单的hello world Caddy插件”
- 观看它如何使用MCP工具生成、构建和配置您的插件
- 测试示例访问者计数器插件
examples/
30秒内的第一个插件
连接到Claude Code后,请尝试以下操作:
“创建一个名为'hello'的Caddy插件,为所有请求添加自定义标头”
克劳德将:
- 生成完整的插件结构
- 演示如何使用xcaddy构建它
- 提供有效的Caddyfile配置
- 解释如何在本地进行测试
特性
插件开发工具
- caddy_create_plugin:使用适当的Go模块结构创建新的Caddy插件
- caddy_build_plugin:使用xcaddy使用自定义插件构建Caddy
- caddy_dev_server:使用测试插件启动开发服务器
生产部署工具
- caddy_deploy_plugin:通过自动备份将插件安全部署到生产环境
- caddy_backup_list:管理Caddy二进制备份(备份、还原、列表)
- caddy_validate_config:验证Caddy配置文件
安装
- 安装依赖项:
npm install
- 构建服务器:
npm run build
- 安装xcaddy(插件构建所需):
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
用法
作为MCP服务器
添加到MCP客户端配置中:
{
"mcpServers": {
"caddy": {
"command": "node",
"args": ["/path/to/caddy-mcp-server/dist/index.js"]
}
}
}
插件开发工作流程
-
创建新插件:
caddy_create_plugin: - name: "myplugin" - directory: "./plugins" - module_path: "github.com/user/myplugin" - description: "My custom Caddy plugin" -
使用您的插件构建Caddy:
caddy_build_plugin: - plugin_path: "./plugins/myplugin" - output_path: "./caddy-custom" -
启动开发服务器:
caddy_dev_server: - caddy_binary: "./caddy-custom" - config_file: "./Caddyfile" - port: 8080
工具参考
caddy_create_plugin
创建具有正确Go模块结构的新Caddy插件。
参数:
name(必填):插件名称directory(必填):应创建插件的目录module_path(必填):转到模块路径(例如github.com/user/plugin)description:插件描述author:插件作者(默认:“Claude Code”)
生成的文件:
main.go:主要入口点plugin.go:使用中间件处理程序实现插件go.mod:Go模块文件README.md:文件Caddyfile.example:配置示例
caddy_build_plugin
使用xcaddy使用自定义插件构建Caddy。
参数:
plugin_path(必填):插件目录的路径output_path:生成的Caddy二进制文件的输出路径(默认值:“./cady”)caddy_version:用于构建的Caddy版本(默认:“最新”)
要求:
- 必须安装xcaddy
- 插件目录必须包含有效的go.mod文件
caddy_dev_server
使用自定义插件启动Caddy开发服务器。
参数:
caddy_binary:带有插件的Caddy二进制文件的路径(默认:“./cady”)config_file:Caddyfile或JSON配置的路径port:运行服务器的端口(默认值:8080)admin_port:管理API端口(默认值:2019)
caddy_deploy_plugin
通过构建并用自动备份替换Caddy二进制文件,将插件安全地部署到生产环境中。
参数:
plugin_path(必填):要部署的插件目录的路径caddy_binary:要替换的当前Caddy二进制文件的路径(默认值:“/usr/bin/Caddy”)backup_dir:存储当前二进制文件备份的目录(默认:“/opt/cardy/backups”)validate_config:使用新二进制文件验证的Caddyfile路径
安全特性:
- 使用时间戳自动备份当前二进制文件
- 部署前验证配置(如果提供了配置)
- 使用xcaddy使用插件构建新的二进制文件
- 提供清晰的重启说明
caddy_backup_list
管理Caddy二进制备份以实现安全回滚。
参数:
action(必填):“备份”、“还原”或“列表”caddy_binary:Caddy二进制文件的路径(默认:“/usr/bin/Caddy”)backup_dir:包含备份的目录(默认:“/opt/cardy/backups”)restore_name:要还原的备份名称(还原操作所需)
行动:
- 备份:创建当前二进制文件的带时间戳的备份
- 列表:显示所有可用的备份及其日期和大小
- 恢复:从特定备份还原
caddy_validate_config
验证Caddy配置文件语法。
参数:
config_file(必填):要验证的Caddyfile或JSON配置的路径caddy_binary:用于验证的Caddy二进制文件的路径(默认值:“Caddy”)
特征:
- 在不启动服务器的情况下测试配置语法
- 适用于自定义Caddy二进制文件(带插件)
- 显示无效配置的详细错误消息
生产部署工作流
将插件部署到Homelab
-
开发和测试你的插件:
caddy_create_plugin: Create plugin structure caddy_build_plugin: Build and test locally caddy_dev_server: Test with development server -
部署前验证:
caddy_validate_config: - config_file: "/etc/caddy/Caddyfile" - caddy_binary: "./caddy-with-plugin" -
安全部署:
caddy_deploy_plugin: - plugin_path: "./my-plugin" - caddy_binary: "/usr/bin/caddy" - backup_dir: "/opt/caddy/backups" - validate_config: "/etc/caddy/Caddyfile" -
重新启动Caddy服务:
sudo systemctl restart caddy # OR docker-compose restart caddy -
如果出了什么问题:
caddy_backup_list: - action: "list" # Find the backup to restore caddy_backup_list: - action: "restore" - restore_name: "caddy-backup-2024-08-22T10-30-00-000Z"
插件模板
生成的插件模板包括:
- HTTP中间件处理程序:处理HTTP请求
- Caddyfile指令:可通过Caddyfile配置
- JSON配置:支持JSON配置格式
- 适当的接口:实现Caddy的配置器、验证器和解组器接口
Caddyfile中的示例用法:
example.com {
myplugin {
message "Hello from my plugin!"
}
respond "Server is running"
}
发展
# Install dependencies
npm install
# Build
npm run build
# Development with watch
npm run dev
# Start server
npm start
# Run tests
npm test
例子
请参阅 examples/ 示例Caddy插件的目录:
- 访客柜台:一个统计和显示网站访问者的插件
需求
- Node.js 18+
- 转到1.21+
- xcaddy(用于构建插件)
许可证
麻省理工学院