基于内存的IaC MCP服务器
一个增强Claude AI功能的记忆型MCP服务器,通过为Infrastructure-as-Code (IaC)组件提供持久存储来实现版本跟踪和关系映射,专注于Terraform和Ansible资源。
[!NOTE]
这是一个个人项目,用于测试AI能力,前提是使用该技术的人(我)缺乏相关专业知识。由于成本过高,我不打算进一步开发或维护该项目。
概述
IaC记忆MCP服务器通过以下方式解决维护准确、版本感知的IaC组件上下文的问题:
- 为IaC组件提供持久存储和版本跟踪
- 提供层次结构化的资源组织与基于URI的访问
- 实现组件之间的全面关系映射
- 管理版本特定的文档
- 进行模式验证和时间戳元数据跟踪
- 自动化分析关系并提供见解
核心组件
资源管理
服务器实现了一个复杂的资源管理系统,采用层次结构化的URI:
资源URI结构
resources://<平台>/<类别>/<名称>
支持的平台:
- terraform
- ansible
- iac(用于通用基础设施实体)
示例URI:
resources://terraform/providers/aws
resources://terraform/resources/aws/s3_bucket
resources://ansible/collections/community.aws
resources://ansible/modules/community.aws/s3_bucket
资源模板
服务器提供动态资源模板,以标准化访问模式:
- Terraform提供商信息:
resources://terraform/providers/{provider_name}
- 资源类型详细信息:
resources://terraform/resources/{provider_name}/{resource_type}
- Ansible集合数据:
resources://ansible/collections/{collection_name}
- 模块信息:
resources://ansible/modules/{collection_name}/{module_name}
提示词
服务器实现四个专门的提示词,用于IaC组件发现和分析:
search_resources
- 目的:搜索IaC资源
- 参数:
provider
: 提供程序名称
resource_type
: 资源类型
- 返回:指定提供程序的特定资源信息
analyze_entity
- 目的:分析实体及其关系
- 参数:
entity_id
: 实体ID
include_relationships
: 是否包含关系
- 返回:详细实体分析,包括名称、类型和观察结果
terraform_provider
- 目的:获取Terraform提供程序的信息
- 参数:
provider_name
: 提供程序名称(必需)
version
: 版本号(可选,默认为最新版本)
- 返回:指定提供程序的资源模式
ansible_collection
- 目的:获取Ansible集合的信息
- 参数:
collection_name
: 集合名称(必需)
version
: 版本号(可选,默认为最新版本)
- 返回:指定集合的资源模式
工具
服务器提供以下功能:
- 版本管理: 支持不同版本的IaC组件
- 关系映射: 分析和记录资源之间的依赖关系
- 文档管理: 生成和管理与资源相关的文档
- 模式验证: 验证资源是否符合预定义的模式
- 元数据跟踪: 记录资源的创建和修改时间戳
配置
环境变量
设置以下环境变量以配置服务器:
export DATABASE_URL="sqlite:////path/to/database.db"
export DEFAULT_VERSION="1.0.0"
export LOG_LEVEL="info"
集成
Claude Desktop开发环境
在config.json
中添加以下内容,以配置MCP服务器:
"mcpServers": {
"iac-memory": {
"command": "uv",
"args": [
"--directory",
"/path/to/iac-memory-mcp-server",
"run",
"iac-memory-mcp-server"
],
"env": {
"DATABASE_URL": "sqlite:////home/user/iac.db"
}
}
}
Claude Desktop生产环境
在config.json
中添加以下内容,以配置MCP服务器:
"mcpServers": {
"iac-memory": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/AgentWong/iac-memory-mcp-server.git",
"python",
"-m",
"iac_memory_mcp_server"
],
"env": {
"DATABASE_URL": "sqlite:////home/user/iac.db"
}
}
}
开发
本地开发
uv sync
uv run pytest
npx @modelcontextprotocol/inspector uv run iac-memory-mcp-server
许可证
该项目采用MIT许可证,详情请参阅LICENSE文件。