IAC Memory MCP Server
The IAC Memory MCP Server provides persistent memory storage and management for Infrastructure-as-Code (IaC) components, specifically for Terraform and Ansible. It offers:
Persistent Storage & Version Tracking: Maintains accurate version history of IaC components with temporal metadata.
Hierarchical Resource Management: Organizes resources through URI-based access (
resources://<platform>/<category>/<name>).Relationship Mapping: Analyzes and visualizes dependencies between IaC components in a knowledge graph.
Documentation Management: Stores version-specific documentation links for providers, resources, collections, and modules.
Compatibility Checks: Verifies compatibility across different versions of resources and modules.
Resource Operations: Retrieve, add, update, list, and delete Terraform providers/resources and Ansible collections/modules.
Entity Management: Create, update, and delete infrastructure entities in the knowledge graph.
Automated Analysis: Provides insights and relationship analysis between components.
Integration Support: Offers easy setup for integration with Claude AI for enhanced IaC-related queries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IAC Memory MCP Server show me the latest AWS S3 bucket resource schema for Terraform"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IaC Memory MCP Server
A Model Context Protocol (MCP) server that enhances Claude AI's capabilities by providing persistent memory storage for Infrastructure-as-Code (IaC) components, with a focus on version tracking and relationship mapping for Terraform and Ansible resources.
This was a personal project to determine the state of AI's ability if the person using it (me)
doesn't have subject matter expertise (lack of Python knowledge). Since it has become rather cost
prohibitive, I do not intend to develop or maintain this project further.
Overview
The IaC Memory MCP Server addresses the challenge of maintaining accurate, version-aware context for IaC components by providing:
Persistent storage and version tracking for IaC components
Hierarchical resource organization with URI-based access
Comprehensive relationship mapping between components
Version-specific documentation management
Schema validation and temporal metadata tracking
Automated relationship analysis and insights
Related MCP server: drupal-modules-mcp MCP Server
Core Components
Resource Management
The server implements a sophisticated resource management system with hierarchical URIs:
Resource URI Structure
resources://<platform>/<category>/<name>Supported platforms:
terraform
ansible
iac (for general infrastructure entities)
Example URIs:
resources://terraform/providers/aws
resources://terraform/resources/aws/s3_bucket
resources://ansible/collections/community.aws
resources://ansible/modules/community.aws/s3_bucketResource Templates
The server provides dynamic resource templates for standardized access patterns:
Terraform provider information:
resources://terraform/providers/{provider_name}Resource type details:
resources://terraform/resources/{provider_name}/{resource_type}Ansible collection data:
resources://ansible/collections/{collection_name}Module information:
resources://ansible/modules/{collection_name}/{module_name}
Prompts
The server implements four specialized prompts for IaC component discovery and analysis:
search_resources
Purpose: Search for IaC resources
Arguments:
provider: Provider nameresource_type: Resource type
Returns: Information about specific resources for the given provider
analyze_entity
Purpose: Analyze an entity and its relationships
Arguments:
entity_id: Entity IDinclude_relationships: Include relationships
Returns: Detailed entity analysis including name, type, and observations
terraform_provider
Purpose: Get information about a Terraform provider
Arguments:
provider_name: Name of the Terraform provider (required)version: Specific version to query (optional)
Returns: Detailed provider information for the specified version
ansible_module
Purpose: Get information about an Ansible module
Arguments:
collection_name: Name of the Ansible collection (required)module_name: Name of the module (required)version: Specific version to query (optional)
Returns: Detailed module information for the specified version
Tools
The server implements comprehensive tooling for IaC component management:
Terraform Tools
get_terraform_provider_info: Retrieve detailed provider information including version and resourceslist_provider_resources: List all resources available for a specific providerget_terraform_resource_info: Get detailed information about a specific resource typeadd_terraform_provider: Register new providers with versioningadd_terraform_resource: Add resource definitions with schemasupdate_provider_version: Update provider versions with new documentation
Ansible Tools
get_ansible_collection_info: Get detailed information about an Ansible collectionlist_ansible_collections: List all available Ansible collectionsget_collection_version_history: View version history of a collectionget_ansible_module_info: Get detailed information about a specific modulelist_collection_modules: List all modules in a collectionget_module_version_compatibility: Check version compatibility of modulesadd_ansible_collection: Register new Ansible collectionsadd_ansible_module: Add new modules with validation and documentation
Entity Operations
create_entity: Create new infrastructure entitiesupdate_entity: Modify existing entity configurationsdelete_entity: Remove entities with relationship cleanupview_relationships: Analyze entity dependencies and relationships
Configuration
The server supports configuration through environment variables:
DATABASE_URL: SQLite database locationMCP_DEBUG: Enable debug logging when setMCP_TEST_MODE: Enable test mode for database resets
For development, create a .env file:
DATABASE_URL=sqlite:////path/to/db.sqlite
MCP_DEBUG=1
MCP_TEST_MODE=1Integration with Claude Desktop
Development Setup
"mcpServers": {
"iac-memory": {
"command": "uv",
"args": [
"--directory",
"/path/to/iac-memory-mcp-server",
"run",
"iac-memory-mcp-server"
]
"env": {
"DATABASE_URL": "sqlite:////home/herman/iac.db"
}
}
}Production Setup
"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/herman/iac.db"
}
}
}Development
Local Development
# Install dependencies
uv sync
# Run tests
uv run pytest
# Development server with MCP Inspector
npx @modelcontextprotocol/inspector uv run iac-memory-mcp-serverLicense
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
23 toolsadd_ansible_collectionB
Add a new Ansible collection to the memory store with version and documentation information
Inputs: name (required), version (required), source_url (required), doc_url (required).
add_ansible_moduleC
Add a new Ansible module definition with its schema and version information
Inputs: collection (required), name (required), module_type (required), schema (required), +2 more.
add_terraform_providerB
Add a new Terraform provider to the memory store with version and documentation information
Inputs: name (required), version (required), source_url (required), doc_url (required).
add_terraform_resourceC
Add a new Terraform resource definition with its schema and version information
Inputs: name (required), resource_type (required), schema (required), version (required), +2 more.
create_entityC
Create a new entity in the knowledge graph with optional initial observations
Inputs: name (required), type (required), observation.
delete_entityC
Remove an entity and its relationships from the knowledge graph
Inputs: id (required).
get_ansible_collection_infoC
Retrieve comprehensive information about an Ansible collection
Inputs: collection_name (required).
get_ansible_module_infoC
Retrieve comprehensive information about an Ansible module including schema and documentation
Inputs: collection_name (required), module_name (required).
get_collection_version_historyA
Retrieve version history for a specific Ansible collection
Inputs: collection_name (required).
get_module_version_compatibilityC
Check module compatibility across collection versions
Inputs: collection_name (required), module_name (required), version (required).
get_provider_version_historyB
Retrieve version history for a specific Terraform provider
Inputs: provider_name (required).
get_resource_version_compatibilityC
Check resource compatibility across provider versions
Inputs: provider_name (required), resource_name (required), version (required).
get_terraform_provider_infoC
Retrieve comprehensive information about a Terraform provider
Inputs: provider_name (required).
get_terraform_resource_infoC
Retrieve comprehensive information about a Terraform resource including schema and documentation
Inputs: provider_name (required), resource_name (required).
list_ansible_collectionsC
List all cached Ansible collections with basic metadata
Inputs: filter_criteria.
list_provider_resourcesC
List all resources associated with a specific Terraform provider
Inputs: provider_name (required), filter_criteria.
list_terraform_providersB
List all cached Terraform providers with basic metadata
Inputs: filter_criteria.
update_collection_versionC
Update an existing Ansible collection's version information and documentation links
Inputs: collection_id (required), new_version (required), new_source_url, new_doc_url.
update_entityC
Update an existing entity's properties and add new observations
Inputs: id (required), name, type, observation.
update_module_versionC
Update an existing Ansible module's schema and related information
Inputs: module_id (required), new_schema (required), new_version, new_doc_url.
update_provider_versionC
Update an existing Terraform provider's version information and documentation links
Inputs: provider_name (required), new_version (required), new_source_url, new_doc_url.
update_resource_schemaC
Update an existing Terraform resource's schema and related information
Inputs: resource_id (required), new_schema (required), new_version, new_doc_url.
view_relationshipsC
Retrieve all relationships and observations for a specific entity
Inputs: entity_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Each tool has a clearly distinct purpose with no ambiguity. The tools are organized into well-defined categories: Ansible collections/modules, Terraform providers/resources, and knowledge graph entities. Even tools with similar verbs like 'add_' and 'update_' target different resources, making misselection unlikely.
Tool names follow a highly consistent verb_noun pattern throughout. All tools use snake_case with clear prefixes (add_, get_, list_, update_, delete_, view_) followed by specific resource names. This predictable naming convention makes the tool set easy to navigate and understand.
With 23 tools, the count is slightly high but reasonable given the server's scope covering both Ansible and Terraform infrastructure-as-code components plus a knowledge graph. Each tool appears to serve a specific purpose, though the number might feel heavy compared to more focused servers.
The tool surface provides complete CRUD/lifecycle coverage for both Ansible and Terraform domains, plus comprehensive entity management for the knowledge graph. There are no obvious gaps - tools cover addition, retrieval, listing, updating, deletion, version history, compatibility checking, and relationship viewing for all resource types.
Maintenance
Related MCP Connectors
An MCP server that used to create notes
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
An MCP memory server. One memory your agents share — across models, devices and apps.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server for managing and persisting notes, offering CRUD operations, note summarization, and resource-based access via a note:// URI scheme.47MIT
- FlicenseBqualityDmaintenanceThis TypeScript-based MCP server implements a simple notes system, allowing the creation, listing, and summarization of text notes using MCP concepts with note:// URIs and metadata.1-
- FlicenseNot gradedqualityDmaintenanceA simple note-taking MCP server that allows storing and summarizing notes with custom URI schemes and provides functionality to add notes and generate summaries with different detail levels.5-
- FlicenseNot gradedqualityDmaintenanceA note management MCP server that enables users to store, retrieve, and summarize personal notes via a custom URI scheme. It provides tools for adding content and prompts for generating brief or detailed summaries of stored information.-