Skip to main content

Model Context Protocol

The Model Context Protocol (MCP) catalog uses a service-and-server hierarchy:
An MCP Service groups related servers. An MCP Server records its tools, resources, and prompts. It also records transport and deployment details. Security, governance, and data-access fields complete the server record. An MCP service name is globally unique. An MCP server uses the fully qualified name service.server, such as mcp_registry.warehouse_tools.

MCP Service Endpoints

The required create fields are name and serviceType. Set serviceType to Mcp.

MCP Server Endpoints

The required create fields are name, serverType, and the parent service’s fully qualified name in service. Valid server types are DataAccess, FileSystem, WebAPI, Database, Cloud, Security, Development, Communication, and Custom. Valid transport types are Stdio, SSE, and StreamableHTTP.

Create a Service and Server

The Python example assumes a configured generic OpenMetadata client named metadata. For client setup, see the Python SDK guide. The Java example assumes a configured OpenMetadataClient named client.
Python SDK
The v2.0 Java SDK supports MCP servers but doesn’t expose an MCP service client. Create the parent service through REST or the Python SDK first. For connecting external assistants to OpenMetadata’s own MCP endpoint, see the MCP integration guide.

MCP Execution Endpoints

An MCP Execution records runtime activity for a cataloged MCP server. It captures tool calls, resource access, and prompt use. It also tracks data access, compliance checks, and performance metrics. The list endpoint accepts serverId, startTs, endTs, and limit. Supply startTs and endTs together. Required create fields are server, serverId, timestamp, and status. Valid statuses are Running, Success, Failed, Timeout, and Cancelled.
REST API
The v2.0 Python and Java core SDKs have no typed MCP Execution client. Use the REST API to write or query execution records.

Update and Delete

Send an RFC 6902 JSON Patch document with Content-Type: application/json-patch+json to a PATCH endpoint. Set hardDelete=true on a DELETE request for permanent deletion. Restore a soft-deleted entity by sending its id to the corresponding /restore endpoint.