项目简介
'az-cn-go-wammcp' 是一个基于 Model Context Protocol (MCP) 实现的服务器端应用,旨在为兼容MCP的AI智能体提供Azure Terraform模块的丰富上下文信息。它能够自动从GitHub同步和索引Terraform模块,并提供强大的搜索、分析和代码比较功能,赋能AI智能体更好地理解和使用Terraform基础设施即代码。
主要功能点
- 模块发现: 快速列出和搜索所有可用的Azure Terraform模块,支持全文搜索。
- 代码搜索: 在所有Terraform代码文件中搜索特定的代码模式、资源定义或自由文本。
- 关系分析: 深入揭示Terraform表达式内部精确的、AST(抽象语法树)感知的引用关系,例如变量引用或资源间的依赖。
- 模块分析: 一站式获取模块的详细信息,包括其定义的变量、输出、创建的资源和使用示例。
- 模式比较: 比较不同模块间特定代码模式(如动态块、生命周期设置)的使用方式,支持基于AST的精确匹配。
- 示例访问: 检索每个模块的使用示例,包括示例文件的完整代码内容。
- 变量提取: 完整提取模块中变量的定义,包括其类型、默认值和敏感性标识。
- 短名称别名: 允许使用模块的短名称(如'vnet'而非'terraform-azure-vnet')进行查询,提高AI智能体交互的便捷性。
- GitHub同步: 自动从GitHub组织同步并索引Terraform模块到本地SQLite数据库,支持增量更新和并发处理。
安装步骤
-
准备环境:
- 确保您的系统已安装 Go 1.23.0 或更高版本。
- 确保您的系统已安装 SQLite (通常现代操作系统都已包含FTS5支持)。
- (可选)如果您需要处理大量GitHub仓库或希望避免API速率限制,可以准备一个具有 'repo → public_repo' 权限的GitHub个人访问令牌 (Personal Access Token, PAT)。
-
构建服务器:
- 首先,克隆项目的GitHub仓库到您的本地机器:
git clone https://github.com/CloudNationHQ/az-cn-go-wammcp.git cd az-cn-go-wammcp - 然后,使用 'make build' 命令编译服务器程序:
构建成功后,您将在项目根目录中找到名为 'az-cn-wam-mcp' (或类似名称,具体取决于您的操作系统) 的可执行文件。make build
- 首先,克隆项目的GitHub仓库到您的本地机器:
服务器配置
要将此MCP服务器与您的AI智能体(如Claude CLI, Copilot, Codex CLI或其他兼容MCP的客户端)集成,您需要将它添加到智能体的配置文件中。以下是一个标准的MCP客户端配置示例,您只需根据实际情况填写启动命令和参数:
{ "mcpServers": { "az-cn-wam": { "command": "/path/to/az-cn-wam-mcp", // 替换为您的服务器可执行文件的实际完整路径 "args": [ "--org", "cloudnationhq", // (可选)指定要同步的GitHub组织名称,默认为 "cloudnationhq" "--token", "YOUR_GITHUB_TOKEN", // (可选)您的GitHub个人访问令牌,用于提高API速率限制 "--db", "index.db" // (可选)指定SQLite数据库文件的路径,默认为 "index.db" ] } } }
请注意:MCP客户端会根据您提供的 'command' 和 'args' 信息自动启动并管理 MCP 服务器的运行。您无需手动在后台运行此服务器程序。
基本使用方法
配置完成后,您可以通过您的AI智能体向 'az-cn-wam' MCP 服务器发送请求,以利用其提供的各种功能。以下是一些您可以尝试的示例提示(Prompt):
-
列出所有模块: "list_modules" (列出所有已同步的模块)
-
搜索特定模块: "search_modules query='vnet'" (搜索名称或描述中包含 'vnet' 的模块)
-
获取模块详细信息: "get_module_info module_name='terraform-azure-vnet'" (获取名为 'terraform-azure-vnet' 模块的详细信息,包括变量、输出和资源)
-
查询代码关系: "analyze_code_relationships module_name='terraform-azure-redis' query='subnet'" (分析 'terraform-azure-redis' 模块中关于 'subnet' 的代码关系)
-
全局代码搜索: "search_code query='key vault access_policy' limit=5" (在所有模块的代码中搜索 'key vault access_policy',显示前5条结果)
-
比较代码模式: "compare_pattern_across_modules pattern='dynamic "identity"' show_full_blocks=true" (比较所有模块中动态 "identity" 块的使用模式,并显示完整代码块)
-
获取示例代码: "list_module_examples module_name='terraform-azure-func'" (列出 'terraform-azure-func' 模块的所有示例) "get_example_content module_name='terraform-azure-func' example_name='private-endpoint'" (获取 'terraform-azure-func' 模块中 'private-endpoint' 示例的完整代码)
-
启动模块同步: "sync_modules" (启动所有模块的完整同步,初次运行可能需要一些时间) "sync_updates_modules" (启动增量同步,仅更新有变化的模块) "sync_status job_id='<您收到的作业ID>'" (查询指定同步作业的状态)
信息
分类
开发者工具