Skip to main content
Glama
AgentWong

IAC Memory MCP Server

by AgentWong

update_resource_schema

Modify the schema, version, and documentation URL of an existing Terraform resource within the IAC Memory MCP Server to ensure updated and accurate IaC configurations.

Instructions

Update an existing Terraform resource's schema and related information

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
new_doc_urlNoNew documentation URL
new_schemaYesNew schema
new_versionNoNew version
resource_idYesResource ID

Implementation Reference

  • MCP tool handler that validates input, calls the DB update function, and returns success/error messages.
    async def handle_update_resource_schema( db: Any, arguments: Dict[str, Any], operation_id: str ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: """Handle update_resource_schema tool.""" try: logger.info( "Updating resource schema", extra={ "resource_id": arguments["resource_id"], "operation_id": operation_id, }, ) # Validate schema is valid JSON try: import json json.loads(arguments["new_schema"]) except json.JSONDecodeError: error_msg = "Invalid schema format. Schema must be valid JSON." logger.error(error_msg, extra={"operation_id": operation_id}) return [types.TextContent(type="text", text=error_msg)] # Update resource schema success = update_resource_schema( db, arguments["resource_id"], arguments["new_schema"], arguments.get("new_version"), arguments.get("new_doc_url"), ) if success: return [types.TextContent( type="text", text=f"Successfully updated schema for resource ID: {arguments['resource_id']}" )] else: error_msg = f"Resource with ID {arguments['resource_id']} not found" logger.error(error_msg, extra={"operation_id": operation_id}) return [types.TextContent(type="text", text=error_msg)] except Exception as e: error_msg = f"Failed to update resource schema: {str(e)}" logger.error(error_msg, extra={"operation_id": operation_id}) return [types.TextContent(type="text", text=error_msg)]
  • JSON schema definition for the update_resource_schema tool inputs.
    "update_resource_schema": { "type": "object", "description": "Update an existing Terraform resource's schema and related information", "required": ["resource_id", "new_schema"], "properties": { "resource_id": {"type": "string", "description": "Resource ID"}, "new_schema": {"type": "string", "description": "New schema"}, "new_version": {"type": "string", "description": "New version"}, "new_doc_url": {"type": "string", "description": "New documentation URL"}, }, },
  • Registration of the update_resource_schema tool handler in the terraform tools dictionary.
    terraform_tool_handlers = { "get_terraform_provider_info": handle_get_terraform_provider_info, "list_provider_resources": handle_list_provider_resources, "get_terraform_resource_info": handle_get_terraform_resource_info, "add_terraform_provider": handle_add_terraform_provider, "add_terraform_resource": handle_add_terraform_resource, "update_provider_version": handle_update_provider_version, "update_resource_schema": handle_update_resource_schema, }
  • Database function that performs the SQL UPDATE on the terraform_resources table to update the schema.
    def update_resource_schema( db: DatabaseManager, resource_id: str, new_schema: str, new_version: Optional[str] = None, new_doc_url: Optional[str] = None, ) -> bool: """Update a Terraform resource's schema and optional fields.""" logger.info( "Updating resource schema", extra={ "resource_id": resource_id, "has_new_version": bool(new_version), "has_new_doc_url": bool(new_doc_url), "operation": "update_resource_schema", }, ) try: updates = ["schema = ?"] params = [new_schema] if new_version: updates.append("version = ?") params.append(new_version) if new_doc_url: updates.append("doc_url = ?") params.append(new_doc_url) updates.append("updated_at = CURRENT_TIMESTAMP") params.append(resource_id) with db.get_connection() as conn: cursor = conn.execute( f"""UPDATE terraform_resources SET {', '.join(updates)} WHERE id = ?""", tuple(params), ) return cursor.rowcount > 0 except sqlite3.Error as e: error_msg = f"Failed to update resource schema: {str(e)}" logger.error(error_msg) raise DatabaseError(error_msg)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AgentWong/iac-memory-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server