返回市场
休戈-MCP

休戈-MCP

作者:SunnyCloudYang8 星标更新:2025-05-09

项目介绍

Hugo MCP 服务器

一个强大的 MCP(模型控制协议)服务器,用于管理 Hugo 静态站点生成器。此服务器提供了一整套工具,用于创建、管理和部署 Hugo 站点。

目录

安装

先决条件

  • Python 3.10+
  • uv(Python 包管理器)
  • Git(推荐)

安装 Hugo MCP 服务器

  1. 克隆仓库:

    git clone https://github.com/sunnycloudyang/hugo-mcp.git
    
  2. 将服务器添加到配置中(确保已安装 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" 替换为你自己的安装路径。

  3. 启用此 MCP 服务器并试用!

使用

Hugo MCP 服务器提供了一系列工具,可用于管理 Hugo 站点。每个工具都有特定的参数,并返回结构化的响应。

基本使用

  1. 手动启动服务器(如果需要):

    uv run main.py
    
  2. 使用 MCP 客户端连接到服务器。

  3. 使用工具来管理你的 Hugo 站点。

工具

环境设置工具

check_hugo_installation

描述:检查 Hugo 是否已安装并获取其版本。

参数:无

返回值

{
  "status": "success",
  "version": "Hugo Static Site Generator v0.92.0/extended linux/amd64 BuildDate=unknown"
}

错误响应

{
  "status": "error",
  "message": "Hugo 未安装或不在 PATH 中"
}

先决条件:无

成功后操作:无

失败后操作:使用 install_hugo 工具安装 Hugo。

install_hugo

描述:根据当前操作系统使用适当的方法安装 Hugo。

参数

  • version(可选):要安装的 Hugo 版本。默认为“最新”。

返回值

{
  "status": "success",
  "message": "通过 Homebrew 安装 Hugo"
}

错误响应

{
  "status": "error",
  "message": "安装失败:命令 'brew install hugo' 返回非零退出状态 1。"
}

先决条件:适当的包管理器(Homebrew、apt、dnf、yum)必须已安装。

成功后操作:Hugo 已安装并准备好使用。

失败后操作:可能需要手动安装。

check_go_installation

描述:检查 Go 是否已安装并获取其版本。

参数:无

返回值

{
  "status": "success",
  "version": "go version go1.17.5 darwin/amd64"
}

错误响应

{
  "status": "error",
  "message": "Go 未安装或不在 PATH 中"
}

先决条件:无

成功后操作:无

失败后操作:使用 install_go 工具安装 Go。

install_go

描述:根据当前操作系统使用适当的方法安装 Go。

参数

  • version(可选):要安装的 Go 版本。默认为“最新”。

返回值

{
  "status": "success",
  "message": "通过 Homebrew 安装 Go"
}

错误响应

{
  "status": "error",
  "message": "安装失败:命令 'brew install go' 返回非零退出状态 1。"
}

先决条件:适当的包管理器(Homebrew、apt、dnf、yum)必须已安装。

成功后操作:Go 已安装并准备好使用。

失败后操作:可能需要手动安装。

check_git_installation

描述:检查 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。

install_git

描述:根据当前操作系统使用适当的方法安装 Git。

参数:无

返回值

{
  "status": "success",
  "message": "通过 Homebrew 安装 Git"
}

错误响应

{
  "status": "error",
  "message": "安装失败:命令 'brew install git' 返回非零退出状态 1。"
}

先决条件:适当的包管理器(Homebrew、apt、dnf、yum)必须已安装。

成功后操作:Git 已安装并准备好使用。

失败后操作:可能需要手动安装。

configure_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 已配置为指定的用户名和电子邮件。

失败后操作:可能需要手动配置。

站点管理工具

create_site

描述:创建一个新的 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 站点,具有指定的主题和示例内容。

失败后操作:站点未创建。

主题管理工具

list_themes

描述:从官方 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": "网络错误:连接被拒绝"
}

先决条件:互联网连接。

成功后操作:返回可用的主题列表。

失败后操作:没有返回主题。

get_theme_details

描述:获取特定 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'"
}

先决条件:互联网连接。

成功后操作:返回主题的详细信息。

失败后操作:没有返回主题详情。

install_theme

描述:使用 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 必须已安装。
  • Git 必须已安装(用于 git 子模块)。
  • Go 必须已安装(用于 Hugo 模块)。

成功后操作:主题已安装并配置在站点中。

失败后操作:主题未安装。

update_theme

描述:更新已安装的 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 必须已安装。
  • Git 必须已安装(用于 git 子模块)。
  • Go 必须已安装(用于 Hugo 模块)。
  • 主题必须已安装。

成功后操作:主题已更新到最新版本。

失败后操作:主题未更新。

内容管理工具

create_post

描述:创建一个新的 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 必须已安装。

成功后操作:在指定的内容类型目录中创建了一个新文章。

失败后操作:文章未创建。

list_content

描述:列出 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 必须已安装。

成功后操作:返回内容文件列表。

失败后操作:没有返回内容。

预览和构建工具

start_preview

描述:启动 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 上可访问。

失败后操作:服务器未启动。

stop_preview

描述:停止正在运行的 Hugo 预览服务器。

参数

  • pid:要停止的服务器进程 ID。

返回值

{
  "status": "success",
  "message": "PID 12345 的服务器已停止"
}

错误响应

{
  "status": "error",
  "message": "未找到 PID 12345 的进程"
}

先决条件:无。

成功后操作:Hugo 服务器已停止。

失败后操作:服务器未停止。

build_site

描述:为生产构建 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 必须已安装。

成功后操作:站点已构建并准备好部署。

失败后操作:站点未构建。

deploy_site

描述:将 Hugo 站点部署到各种平台。

参数

  • site_path:Hugo 站点的路径。
  • platform:部署平台(github-pages、netlify、vercel、custom)。
  • destination(可选):构建目标目录。默认为 "public"。
  • branch(可选):要部署到的分支。默认为 "main"。
  • commit_message(可选):部署提交消息。默认为 "更新站点"。