<!-- 假设为MIT,如有需要添加LICENSE文件 -->
这是一个使用Deno和TypeScript构建的Model Context Protocol (MCP)服务器,旨在提供与Terragrunt相关的上下文信息,包括GitHub问题。
此服务器作为MCP提供者,提供了工具和资源,允许AI代理或其他MCP客户端查询关于Terragrunt文档和开发信息,如GitHub问题。
在编写IaC配置时,大多数情况下是使用Terragrunt,IDE支持并不理想。例如,在VSCode中,Terraform插件很好用,但不适用于Terragrunt;它无法识别Terragrunt块,并且不提供任何自动完成功能。当与AI自动完成功能交互时,通常会得到错误的结果或误报的代码检查错误。通过这个MCP服务器,你可以向你的LLM/AI助手提供来自Terragrunt GitHub仓库的最新文档和问题,以便它可以为你提供最准确的信息。
注意: 所有工具都需要设置一个有效的GitHub令牌作为环境变量:
GITHUB_TOKEN、GH_TOKEN或GITHUB_PERSONAL_ACCESS_TOKEN。
| 工具名称 | 目的 | 输入 | 输出 | 使用场景 |
|---|---|---|---|---|
list-doc-categories | 从Terragrunt文档中检索所有文档类别。 | 无 | 包含name(字符串)和link(字符串)属性的对象数组 | 当你需要探索可用的文档结构或构建文档导航系统时使用。这通常是开始处理Terragrunt文档时调用的第一个工具。 |
list-all-docs-by-category | 列出特定类别的所有文档。 | 类别(字符串) | 包含name(字符串)、link(字符串)和content(字符串)属性的对象数组 | 当你需要查看特定类别内的所有可用文档时使用,例如构建特定类别的文档查看器或需要扫描特定领域的所有文档时。 |
read-document-from-category | 从类别中读取特定文档。 | 类别(字符串),文档(字符串) | 包含content(字符串)的完整Markdown内容对象 | 当你需要访问特定文档的完整内容时使用,例如实现文档搜索或需要在应用程序中引用特定文档时。 |
read-all-docs-from-category | 检索并合并类别中的所有文档到一个响应中。 | 类别(字符串) | 包含content(字符串)的所有文档合并成一个的对象 | 当你需要查看类别内所有文档的综合视图时使用,例如构建文档搜索功能或需要分析特定主题的完整文档集时。 |
get-all-open-issues | 从Terragrunt GitHub仓库中检索所有开放的问题。 | 全部(布尔值,可选) | 包含title(字符串)、number(数字)、state(字符串)、created_at(字符串)、updated_at(字符串)、body(字符串)和labels(字符串数组)的对象数组 | 当你需要跟踪或分析Terragrunt项目中的当前问题时使用,例如构建问题仪表板、执行问题分类或需要了解最新的项目挑战和讨论时。 |
安装Deno:
克隆仓库:
git clone https://github.com/Excoriate/mcp-terragrunt-docs.git
cd mcp--terragrunt-docs
设置您的GitHub令牌作为环境变量:
在Unix/macOS上:
export GITHUB_TOKEN=ghp_xxx... # 或 GH_TOKEN 或 GITHUB_PERSONAL_ACCESS_TOKEN
在Windows(cmd)上:
set GITHUB_TOKEN=ghp_xxx...
注意:您也可以在
.env文件中设置令牌。
运行MCP服务器:
# 直接使用deno
deno run -A main.ts
# 使用justfile
just run
# 您还可以调试并本地检查它
just inspect
最简单的方法是从JSR(JavaScript注册表❤️)直接使用
# 导出您的GitHub令牌
export GITHUB_TOKEN=ghp_xxx...
# 运行它
deno run -A jsr:@excoriate/mcp-terragrunt-docs@0.1.0
要将此基于Deno的MCP服务器与Claude Desktop一起使用,请在您的claude_desktop_config.json中添加以下内容:
{
"mcpServers": {
"terragrunt_docs": {
"command": "deno",
"args": [
"run",
"-A",
"main.ts"
],
"env": {
"GITHUB_TOKEN": "<YOUR_TOKEN>"
},
}
}
}
{
"mcpServers": {
"terragrunt_docs": {
"command": "docker",
"args": [
"run",
"-e", "GITHUB_TOKEN=<YOUR_TOKEN>", "mcp-terragrunt-docs"
],
"env": {
"GITHUB_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
{
"mcpServers": {
"terragrunt_docs": {
"command": "deno",
"args": [
"run",
"-A",
"jsr:@excoriate/mcp-terragrunt-docs@0.1.0"
],
"env": {
"GITHUB_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
docker build -t mcp-terragrunt-docs .
docker run -it --rm \
-e GITHUB_TOKEN=ghp_xxx... \
mcp-terragrunt-docs
ghp_xxx...替换为具有适当权限的GitHub个人访问令牌。GH_TOKEN或GITHUB_PERSONAL_ACCESS_TOKEN作为环境变量名。.env文件,可以通过--env-file .env传递它。参见docs/CONTRIBUTING.md以获取详细的贡献指南,包括设置、代码风格、PR流程和代码库结构参考。
参见SECURITY.md以获取项目的安全策略,包括如何报告漏洞和负责任披露指南。
本项目根据MIT许可证授权。