一个强大的 MCP(模型控制协议)服务器,用于管理 Hugo 静态站点生成器。此服务器提供了一整套工具,用于创建、管理和部署 Hugo 站点。
克隆仓库:
git clone https://github.com/sunnycloudyang/hugo-mcp.git
将服务器添加到配置中(确保已安装 uv):
{
"mcpServers": {
"hugo-mcp": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/hugo-mcp",
"run",
"main.py"
]
}
}
}
记得将 "/ABSOLUTE/PATH/TO/PARENT/FOLDER/hugo-mcp" 替换为你自己的安装路径。
启用此 MCP 服务器并试用!
Hugo MCP 服务器提供了一系列工具,可用于管理 Hugo 站点。每个工具都有特定的参数,并返回结构化的响应。
手动启动服务器(如果需要):
uv run main.py
使用 MCP 客户端连接到服务器。
使用工具来管理你的 Hugo 站点。
描述:检查 Hugo 是否已安装并获取其版本。
参数:无
返回值:
{
"status": "success",
"version": "Hugo Static Site Generator v0.92.0/extended linux/amd64 BuildDate=unknown"
}
错误响应:
{
"status": "error",
"message": "Hugo 未安装或不在 PATH 中"
}
先决条件:无
成功后操作:无
失败后操作:使用 install_hugo 工具安装 Hugo。
描述:根据当前操作系统使用适当的方法安装 Hugo。
参数:
version(可选):要安装的 Hugo 版本。默认为“最新”。返回值:
{
"status": "success",
"message": "通过 Homebrew 安装 Hugo"
}
错误响应:
{
"status": "error",
"message": "安装失败:命令 'brew install hugo' 返回非零退出状态 1。"
}
先决条件:适当的包管理器(Homebrew、apt、dnf、yum)必须已安装。
成功后操作:Hugo 已安装并准备好使用。
失败后操作:可能需要手动安装。
描述:检查 Go 是否已安装并获取其版本。
参数:无
返回值:
{
"status": "success",
"version": "go version go1.17.5 darwin/amd64"
}
错误响应:
{
"status": "error",
"message": "Go 未安装或不在 PATH 中"
}
先决条件:无
成功后操作:无
失败后操作:使用 install_go 工具安装 Go。
描述:根据当前操作系统使用适当的方法安装 Go。
参数:
version(可选):要安装的 Go 版本。默认为“最新”。返回值:
{
"status": "success",
"message": "通过 Homebrew 安装 Go"
}
错误响应:
{
"status": "error",
"message": "安装失败:命令 'brew install go' 返回非零退出状态 1。"
}
先决条件:适当的包管理器(Homebrew、apt、dnf、yum)必须已安装。
成功后操作:Go 已安装并准备好使用。
失败后操作:可能需要手动安装。
描述:检查 Git 是否已安装并获取其配置。
参数:无
返回值:
{
"status": "success",
"version": "git version 2.30.1 (Apple Git-130)",
"user": {
"name": "John Doe",
"email": "john.doe@example.com"
},
"default_branch": "main"
}
错误响应:
{
"status": "error",
"message": "Git 未安装或不在 PATH 中"
}
先决条件:无
成功后操作:无
失败后操作:使用 install_git 工具安装 Git。
描述:根据当前操作系统使用适当的方法安装 Git。
参数:无
返回值:
{
"status": "success",
"message": "通过 Homebrew 安装 Git"
}
错误响应:
{
"status": "error",
"message": "安装失败:命令 'brew install git' 返回非零退出状态 1。"
}
先决条件:适当的包管理器(Homebrew、apt、dnf、yum)必须已安装。
成功后操作:Git 已安装并准备好使用。
失败后操作:可能需要手动安装。
描述:使用用户名和电子邮件配置 Git。
参数:
name:要设置的用户名。email:要设置的电子邮件地址。返回值:
{
"status": "success",
"message": "Git 配置为用户名 'John Doe' 和电子邮件 'john.doe@example.com'"
}
错误响应:
{
"status": "error",
"message": "配置 Git 失败:命令 'git config --global user.name John Doe' 返回非零退出状态 1。"
}
先决条件:Git 必须已安装。
成功后操作:Git 已配置为指定的用户名和电子邮件。
失败后操作:可能需要手动配置。
描述:创建一个新的 Hugo 站点。
参数:
site_name:要创建的站点名称。theme(可选):要使用的站点主题。force(可选):如果目录已经存在,是否强制创建。默认为 false。use_example_site(可选):是否使用主题中的示例站点。默认为 true。返回值:
{
"status": "success",
"path": "/path/to/site",
"theme": "paper",
"example_site": true,
"author": {
"name": "John Doe",
"email": "john.doe@example.com"
}
}
错误响应:
{
"status": "error",
"message": "目录 'site' 已经存在。使用 force=True 覆盖。"
}
先决条件:Hugo 必须已安装。
成功后操作:创建了一个新的 Hugo 站点,具有指定的主题和示例内容。
失败后操作:站点未创建。
描述:从官方 Hugo 主题网站列出可用的 Hugo 主题。
参数:无
返回值:
{
"status": "success",
"themes": [
{
"name": "PaperMod",
"url": "https://github.com/gohugoio/hugoThemes/tree/master/themes/hugo-papermod",
"image": "https://themes.gohugo.io/themes/hugo-papermod/tn-featured_hu_275191178647f5e7.png"
},
{
"name": "Hugo Blox - Tailwind",
"url": "https://github.com/gohugoio/hugoThemes/tree/master/themes/blox-tailwind",
"image": "https://themes.gohugo.io/themes/blox-tailwind/tn-featured_hu_8c1541d303ce3b9b.png"
}
],
"count": 150
}
错误响应:
{
"status": "error",
"message": "网络错误:连接被拒绝"
}
先决条件:互联网连接。
成功后操作:返回可用的主题列表。
失败后操作:没有返回主题。
描述:获取特定 Hugo 主题的详细信息。
参数:
theme_name:要获取详细信息的主题名称。返回值:
{
"status": "success",
"theme": {
"name": "Paper",
"url": "https://github.com/gohugoio/hugoThemes/tree/master/themes/paper",
"image": "https://themes.gohugo.io/themes/paper/tn-featured.png",
"description": "一个简单、干净且响应式的 Hugo 主题,适用于个人博客。",
"features": [
"响应式设计",
"干净且极简",
"快速且轻量级",
"搜索引擎友好"
],
"tags": ["博客", "极简", "响应式"],
"github_url": "https://github.com/nanxiaobei/hugo-paper",
"demo_url": "https://themes.gohugo.io/theme/paper/",
"installation": "git submodule add https://github.com/nanxiaobei/hugo-paper themes/paper"
}
}
错误响应:
{
"status": "error",
"message": "在 Hugo 主题网站上找不到主题 'NonExistentTheme'"
}
先决条件:互联网连接。
成功后操作:返回主题的详细信息。
失败后操作:没有返回主题详情。
描述:使用 git 子模块或 Hugo 模块安装 Hugo 主题。
参数:
site_path:Hugo 站点的路径。theme_name:要安装的主题名称。theme_url:主题存储库的 URL。use_modules(可选):是否使用 Hugo 模块而不是 git 子模块。默认为 false。返回值:
{
"status": "success",
"theme": "paper",
"method": "git_submodule"
}
错误响应:
{
"status": "error",
"message": "安装主题失败:命令 'git submodule add https://github.com/nanxiaobei/hugo-paper themes/paper' 返回非零退出状态 1。"
}
先决条件:
成功后操作:主题已安装并配置在站点中。
失败后操作:主题未安装。
描述:更新已安装的 Hugo 主题。
参数:
site_path:Hugo 站点的路径。theme_name:要更新的主题名称。use_modules(可选):该主题是否是通过 Hugo 模块安装的。默认为 false。返回值:
{
"status": "success",
"theme": "paper",
"method": "git_submodule"
}
错误响应:
{
"status": "error",
"message": "更新主题失败:命令 'git submodule update --remote themes/paper' 返回非零退出状态 1。"
}
先决条件:
成功后操作:主题已更新到最新版本。
失败后操作:主题未更新。
描述:创建一个新的 Hugo 文章。
参数:
site_path:Hugo 站点的路径。post_title:文章标题。content_type(可选):文章的内容类型。默认为 "posts"。draft(可选):文章是否应为草稿。默认为 true。date(可选):文章的日期。返回值:
{
"status": "success",
"file": "content/posts/my-first-post.md",
"draft": true
}
错误响应:
{
"status": "error",
"message": "站点路径 '/path/to/site' 不存在"
}
先决条件:Hugo 必须已安装。
成功后操作:在指定的内容类型目录中创建了一个新文章。
失败后操作:文章未创建。
描述:列出 Hugo 站点的内容。
参数:
site_path:Hugo 站点的路径。content_type(可选):要列出的内容类型。如果没有指定,则列出所有内容。返回值:
{
"status": "success",
"content": [
"posts/my-first-post.md",
"posts/another-post.md",
"pages/about.md"
]
}
错误响应:
{
"status": "error",
"message": "站点路径 '/path/to/site' 不存在"
}
先决条件:Hugo 必须已安装。
成功后操作:返回内容文件列表。
失败后操作:没有返回内容。
描述:启动 Hugo 本地服务器。
参数:
site_path:Hugo 站点的路径。port(可选):要使用的端口。默认为 1313。bind(可选):要绑定的地址。默认为 "127.0.0.1"。build_drafts(可选):是否构建草稿内容。默认为 false。build_future(可选):是否构建未来内容。默认为 false。build_expired(可选):是否构建过期内容。默认为 false。返回值:
{
"status": "success",
"url": "http://127.0.0.1:1313",
"pid": 12345,
"options": {
"build_drafts": false,
"build_future": false,
"build_expired": false
}
}
错误响应:
{
"status": "error",
"message": "站点路径 '/path/to/site' 不存在"
}
先决条件:Hugo 必须已安装。
成功后操作:Hugo 服务器已启动并在指定的 URL 上可访问。
失败后操作:服务器未启动。
描述:停止正在运行的 Hugo 预览服务器。
参数:
pid:要停止的服务器进程 ID。返回值:
{
"status": "success",
"message": "PID 12345 的服务器已停止"
}
错误响应:
{
"status": "error",
"message": "未找到 PID 12345 的进程"
}
先决条件:无。
成功后操作:Hugo 服务器已停止。
失败后操作:服务器未停止。
描述:为生产构建 Hugo 站点。
参数:
site_path:Hugo 站点的路径。destination(可选):目标目录。默认为 "public"。clean_destination(可选):构建前是否清理目标目录。默认为 false。minify(可选):是否最小化输出。默认为 false。返回值:
{
"status": "success",
"destination": "/path/to/site/public",
"output": "在 123 毫秒内构建完成"
}
错误响应:
{
"status": "error",
"message": "站点路径 '/path/to/site' 不存在"
}
先决条件:Hugo 必须已安装。
成功后操作:站点已构建并准备好部署。
失败后操作:站点未构建。
描述:将 Hugo 站点部署到各种平台。
参数:
site_path:Hugo 站点的路径。platform:部署平台(github-pages、netlify、vercel、custom)。destination(可选):构建目标目录。默认为 "public"。branch(可选):要部署到的分支。默认为 "main"。commit_message(可选):部署提交消息。默认为 "更新站点"。