DPaaS地形MCP服务器
    ](https://github.com)   
A. 模型上下文协议(MCP) 为Azure资源生成DPaaS内源Terraform模块的服务器。在AI编码助手的支持下,它动态提取提供者模式,获取文档驱动的枚举值,并生成符合DPaaS约定的生产就绪的Terraform模块。
运作原理
You (AI prompt) ──> MCP Client ──> DPaaS MCP Server ──> Terraform Provider Schema
──> Azure Provider Docs
──> Generated Module Output- 您描述了所需的Azure资源(例如,“为Azure rm_storage_account生成一个DPaaS模块”)
- MCP服务器从Terraform提供程序中提取完整的资源模式
- 枚举值和描述从官方Azure提供程序文档中获取
- 按照DPaaS惯例生成一个完整的、可用于生产的模块
特性
- 动态模式提取 --从实时的Terraform提供程序模式生成模块,而不是模板
- 文档驱动枚举 --从官方Azure提供商文档中获取枚举值和描述
- 符合DPaaS公约 --输出遵循具有空标签集成的内部源代码模块结构
- 多种测试场景 --生成
default,complete,以及disabled判例 - 无硬编码值 --一切都是从模式和文档中动态派生出来的
- 交叉平台的 --可作为npm包(macOS、Linux、Windows)、Docker镜像或本地二进制文件提供
- 多客户端支持 --适用于Claude Desktop、Amazon Q、VS Code、Cursor和任何兼容MCP的客户端
生成的模块结构
expn-tf-azure-{resource}/
main.tf # Resource definition with all attributes
variables.tf # Typed variables with descriptions and enum validations
outputs.tf # Standard outputs (id, name, resource group)
locals.tf # Local values and naming
versions.tf # Provider and Terraform version constraints
context.tf # Null-label context integration
CHANGELOG.md # Initial changelog
README.md # Module documentation
.gitignore # Standard ignores
.pre-commit-config.yaml
tests/
default/ # Required attributes only
main.tf
versions.tf
complete/ # All attributes and blocks populated
main.tf
versions.tf
disabled/ # Module with enabled = false
main.tf
versions.tf先决条件
- 走 (1.22+)--如果从源头开始构建
- 地形 --架构提取所需(
terraform providers schema -json) - Node.js (v16+)——如果通过npm安装
- 码头工人 --如果使用Docker镜像(镜像中包含Terraform)
安装
选项1:npm包(推荐)
从Azure DevOps工件提要安装:
- 将作用域注册表添加到您的
~/.npmrc:
@dpaas:registry=https://pkgs.dev.azure.com//
/_packaging//npm/registry/- 在中设置身份验证
~/.npmrc(参见 Azure DevOps工件文档):
; begin auth token
//pkgs.dev.azure.com//
/_packaging//npm/registry/:username=
//pkgs.dev.azure.com//
/_packaging//npm/registry/:_password=
//pkgs.dev.azure.com//
/_packaging//npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com//
/_packaging//npm/:username=
//pkgs.dev.azure.com//
/_packaging//npm/:_password=
//pkgs.dev.azure.com//
/_packaging//npm/:email=npm requires email to be set but doesn't use the value
; end auth token- 验证安装:
npx @dpaas/terraform-mcp-server --version选项2:Docker
git clone
cd dpaas-tf-mcp-server
docker build --target=dpaas -t terraform-mcp-dpaas .Docker镜像中包含了Terraform——无需在本地安装Terraform。
选项3:从源代码构建
git clone
cd dpaas-tf-mcp-server
make build二进制将位于 bin/terraform-mcp-server.
MCP客户端配置
克劳德桌面/亚马逊Q开发人员
添加到MCP客户端配置(claude_desktop_config.json 或同等):
npm:
{
"mcpServers": {
"terraform-dpaas": {
"command": "npx",
"args": ["-y", "@dpaas/terraform-mcp-server", "stdio"]
}
}
}Docker:
{
"mcpServers": {
"terraform-dpaas": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/path/to/output:/output",
"terraform-mcp-dpaas"
]
}
}
}本地二进制文件:
{
"mcpServers": {
"terraform-dpaas": {
"command": "/path/to/bin/terraform-mcp-server",
"args": ["stdio"]
}
}
}VS代码
添加到用户设置(JSON)或 .vscode/mcp.json:
{
"mcp": {
"servers": {
"terraform-dpaas": {
"command": "npx",
"args": ["-y", "@dpaas/terraform-mcp-server", "stdio"]
}
}
}
}克劳德代码
claude mcp add terraform-dpaas -s user -t stdio -- npx -y @dpaas/terraform-mcp-server stdio用法
连接到MCP客户端后,使用自然语言提示:
生成模块(仅默认测试)
“在/path/to/output中为azure rm_storage_account生成一个DPaaS Terraform模块”
使用特定的测试场景生成
为azure rm_storage_account生成一个DPaaS Terraform模块。将test_scenarios设置为“默认、完整、禁用”
生成所有测试场景
为azure rm_load_test生成一个DPaaS Terraform模块。将test_scenarios设置为“默认、完整、禁用”
测试场景
| 场景 | 描述 |
|---|---|
default | 只有必需的属性和块——验证最小可行配置 |
complete | 用示例值填充的所有属性和块--验证完整的资源覆盖率 |
disabled | 模块与 enabled = false --验证该模块是否可以完全禁用 |
可用的MCP工具
| 工具 | 说明 |
|---|---|
dpaas_generate_innersource_module | 为Azure资源生成完整的DPaaS Terraform模块 |
dpaas_extract_resource_schema | 提取并查看资源的原始Terraform提供程序模式 |
dpaas_list_azure_resources | 列出来自Terraform提供程序的可用Azure资源 |
dpaas_validate_module | 根据DPaaS标准验证生成的模块 |
示例提示
以下是示例提示,您可以使用AI编码助手与每个工具进行交互:
生成模块
“为生成DPaaS内部源代码Terraform模块azurerm_storage_account并将其输出到/path/to/output"
“为生成DPaaS模块 azurerm_application_gateway 所有测试场景(默认、完整、禁用)”“为Azure负载测试创建DPaaS Terraform模块”
列出可用资源
“列出我可以为其生成模块的所有可用Azure资源”
“显示Terraform提供程序中可用的所有Azure网络相关资源”
“列出与‘存储’匹配的Azure资源”
提取资源架构
“提取的Terraform提供程序架构 azurerm_key_vault 并向我展示它的所有属性和块”“什么属性起作用 azurerm_virtual_network 支持?提取其架构”“显示的完整架构 azurerm_container_registry 包括嵌套块”验证模块
“在以下位置验证DPaaS模块 /path/to/expn-tf-azure-storage-account 符合DPaaS标准”“在我刚刚生成的存储帐户模块上运行DPaaS验证”
“检查生成的应用程序网关模块是否通过了所有22个DPaaS合规性检查”
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
TRANSPORT_MODE | 运输方式: stdio 或 streamable-http | stdio |
TRANSPORT_HOST | 主机绑定HTTP服务器 | 127.0.0.1 |
TRANSPORT_PORT | HTTP服务器端口 | 8080 |
MCP_ENDPOINT | HTTP服务器端点路径 | /mcp |
发展
构建命令
| 命令 | 描述 |
|---|---|
make build | 为您的平台构建二进制文件 |
make npm-build | 为npm包构建跨平台二进制文件 |
make npm-publish NPM_REGISTRY= | 构建并发布npm包 |
make docker-build | 构建Docker镜像 |
make test | 运行所有测试 |
make clean | 删除构建工件 |
make help | 显示所有可用命令 |
发布新版本
# Build cross-platform binaries and publish to Azure DevOps Artifacts
make npm-build
cd npm && npm publish项目架构
pkg/
dpaas/
schema/ # Schema extraction, docs fetcher, types
generators/ # File generators (main.tf, variables.tf, tests, etc.)
templates/ # Static template files (null-label, versions, etc.)
validation/ # Terraform validate wrapper
tools/
dpaas/ # MCP tool handlers
cmd/
terraform-mcp-server/ # Entry point and CLI setup
npm/ # npm package wrapper (cli.js, install.js)
scripts/ # Build scripts (build-npm.sh)贡献
欢迎投稿!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
关于开发者
达米洛拉·奥纳丁德 *DevOps/AI工程师|云基础设施专家|开源贡献者*
联系我:
支持开发者
如果你觉得这个项目很有帮助,并想支持我的工作,可以考虑给我买杯咖啡!

您的支持帮助我继续创建开源工具并改进这个项目!
许可证
此项目根据MPL-2.0开源许可证的条款获得许可。请参考 许可证 完整的条款。
