update_entity
Modify an existing entity's properties and add new observations in the IAC Memory MCP Server by specifying the entity ID, updated name, type, or observation.
Instructions
Update an existing entity's properties and add new observations
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Entity ID | |
| name | No | New name | |
| observation | No | New observation | |
| type | No | New type |
Implementation Reference
- MCP handler function for the 'update_entity' tool. Logs the operation, calls execute_update_entity, and handles errors by raising McpError.async def handle_update_entity(db: Any, arguments: Dict[str, Any], operation_id: str) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: """Handle update_entity tool.""" try: logger.info( "Updating entity", extra={ "entity_id": arguments.get("entity_id"), "operation_id": operation_id, }, ) # Execute update return execute_update_entity(db, arguments) except Exception as e: error_msg = f"Failed to update entity: {str(e)}" logger.error(error_msg, extra={"operation_id": operation_id}) raise McpError( types.ErrorData( code=types.INTERNAL_ERROR, message=error_msg, data={ "tool": "update_entity", "operation_id": operation_id, }, ) )
- Executes the update_entity tool logic: prepares updates, calls low-level update_entity, adds observation if provided, returns MCP TextContent response.def execute_update_entity( db: DatabaseManager, arguments: Dict[str, Any] ) -> List[TextContent]: """Execute update entity operation.""" logger.info("Updating entity", extra={"args": arguments}) updates = {k: v for k, v in arguments.items() if k != "id"} success = update_entity(db, arguments["id"], updates) if not success: raise DatabaseError(f"Entity not found: {arguments['id']}") # Add observation if provided if "observation" in arguments: with db.get_connection() as conn: conn.execute( "INSERT INTO observations (entity_id, content) VALUES (?, ?)", (arguments["id"], arguments["observation"]), ) return [TextContent(type="text", text=f"Updated entity {arguments['id']}")]
- Low-level database function that performs the SQL UPDATE on the entities table.def update_entity(db: DatabaseManager, entity_id: str, updates: Dict) -> bool: """Update an existing entity.""" set_clause = ", ".join(f"{k} = ?" for k in updates.keys()) values = tuple(updates.values()) + (entity_id,) query = f"UPDATE entities SET {set_clause} WHERE id = ?" try: with db.get_connection() as conn: cursor = conn.execute(query, values) return cursor.rowcount > 0 except sqlite3.Error as e: raise DatabaseError(f"Update failed: {str(e)}")
- JSON schema definition for the input parameters of the update_entity tool."update_entity": { "type": "object", "description": "Update an existing entity's properties and add new observations", "required": ["id"], "properties": { "id": {"type": "string", "description": "Entity ID"}, "name": {"type": "string", "description": "New name"}, "type": {"type": "string", "description": "New type"}, "observation": {"type": "string", "description": "New observation"}, }, },
- src/iac_memory_mcp_server/tools/entity.py:150-155 (registration)Registers the handle_update_entity function for the 'update_entity' tool in the entity_tool_handlers dictionary, likely used by the MCP server to dispatch tool calls.entity_tool_handlers = { "create_entity": handle_create_entity, "update_entity": handle_update_entity, "delete_entity": handle_delete_entity, "view_relationships": handle_view_relationships, }