OpenMetadata MCP Servers API
`MCP Servers` are Model Context Protocol servers that expose tools, resources, and prompts for AI applications. They enable AI governance including risk assessment, compliance tracking, and shadow AI detection.
`MCP Servers` are Model Context Protocol servers that expose tools, resources, and prompts for AI applications. They enable AI governance including risk assessment, compliance tracking, and shadow AI detection.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/openmetadata-mcp-servers-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: OpenMetadata APIs Agent Executions MCP Servers API
description: Common types and API definition for OpenMetadata
contact:
name: OpenMetadata
url: https://open-metadata.org
email: openmetadata-dev@googlegroups.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: '1.13'
servers:
- url: /api
description: Current Host
- url: http://localhost:8585/api
description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: MCP Servers
description: '`MCP Servers` are Model Context Protocol servers that expose tools, resources, and prompts for AI applications. They enable AI governance including risk assessment, compliance tracking, and shadow AI detection.'
paths:
/v1/mcpServers/{id}/followers:
put:
tags:
- MCP Servers
summary: Add a follower
description: Add a user identified by `userId` as follower of this MCP server
operationId: addFollower_3
parameters:
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
requestBody:
description: Id of the user to be added as follower
content:
application/json:
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
'404':
description: MCP Server for instance {id} is not found
/v1/mcpServers:
get:
tags:
- MCP Servers
summary: List MCP servers
description: Get a list of MCP servers. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number of entries in the list using `limit` and `before` or `after` query params.
operationId: listMcpServers
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,followers,tags,extension,domains,tools,resources,prompts,service
- name: limit
in: query
description: Limit the number of servers returned. (1 to 1000000, default = 10)
schema:
maximum: 1000000
minimum: 0
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of servers before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of servers after this cursor
schema:
type: string
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
responses:
'200':
description: List of MCP servers
content:
application/json:
schema:
$ref: '#/components/schemas/McpServerList'
put:
tags:
- MCP Servers
summary: Create or update an MCP server
description: Create a new MCP server, if it does not exist or update an existing server.
operationId: createOrUpdateMcpServer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMcpServer'
responses:
'200':
description: The MCP server
content:
application/json:
schema:
$ref: '#/components/schemas/McpServer'
'400':
description: Bad request
post:
tags:
- MCP Servers
summary: Create an MCP server
description: Create a new MCP server.
operationId: createMcpServer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMcpServer'
responses:
'200':
description: MCP Server
content:
application/json:
schema:
$ref: '#/components/schemas/McpServer'
'400':
description: Bad request
/v1/mcpServers/name/{fqn}:
get:
tags:
- MCP Servers
summary: Get an MCP server by fully qualified name
description: Get an MCP server by fully qualified name.
operationId: getMcpServerByFQN
parameters:
- name: fqn
in: path
description: Fully qualified name of MCP Server
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,followers,tags,extension,domains,tools,resources,prompts,service
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: The MCP server
content:
application/json:
schema:
$ref: '#/components/schemas/McpServer'
'404':
description: MCP Server for instance {fqn} is not found
delete:
tags:
- MCP Servers
summary: Delete an MCP server by fully qualified name
description: Delete an MCP server by `fullyQualifiedName`.
operationId: deleteMcpServerByFQN
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: fqn
in: path
description: Name of the MCP Server
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: MCP Server for instance {fqn} is not found
patch:
tags:
- MCP Servers
summary: Update an MCP server by name
description: Update an existing MCP server using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchMcpServerByName
parameters:
- name: fqn
in: path
description: Name of the MCP Server
required: true
schema:
type: string
requestBody:
description: JsonPatch with array of operations
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatch'
example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
responses:
default:
description: default response
content:
application/json: {}
/v1/mcpServers/{id}:
get:
tags:
- MCP Servers
summary: Get an MCP server by Id
description: Get an MCP server by `Id`.
operationId: getMcpServerByID
parameters:
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: owners,followers,tags,extension,domains,tools,resources,prompts,service
- name: include
in: query
description: Include all, deleted, or non-deleted entities.
schema:
type: string
default: non-deleted
enum:
- all
- deleted
- non-deleted
- name: includeRelations
in: query
description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
schema:
type: string
example: owners:non-deleted,followers:all
responses:
'200':
description: The MCP server
content:
application/json:
schema:
$ref: '#/components/schemas/McpServer'
'404':
description: MCP Server for instance {id} is not found
delete:
tags:
- MCP Servers
summary: Delete an MCP server by Id
description: Delete an MCP server by `Id`.
operationId: deleteMcpServer
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: MCP Server for instance {id} is not found
patch:
tags:
- MCP Servers
summary: Update an MCP server
description: Update an existing MCP server using JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchMcpServer
parameters:
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
requestBody:
description: JsonPatch with array of operations
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/JsonPatch'
example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
responses:
default:
description: default response
content:
application/json: {}
/v1/mcpServers/async/{id}:
delete:
tags:
- MCP Servers
summary: Asynchronously delete an MCP server by Id
description: Asynchronously delete an MCP server by `Id`.
operationId: deleteMcpServerAsync
parameters:
- name: hardDelete
in: query
description: Hard delete the entity. (Default = `false`)
schema:
type: boolean
default: false
- name: recursive
in: query
description: Recursively delete this entity and it's children. (Default `false`)
schema:
type: boolean
default: false
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: MCP Server for instance {id} is not found
/v1/mcpServers/{id}/followers/{userId}:
delete:
tags:
- MCP Servers
summary: Remove a follower
description: Remove the user identified `userId` as a follower of the MCP server.
operationId: deleteFollower_3
parameters:
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
- name: userId
in: path
description: Id of the user being removed as follower
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ChangeEvent'
/v1/mcpServers/{id}/versions/{version}:
get:
tags:
- MCP Servers
summary: Get a version of the MCP server
description: Get a version of the MCP server by given `id`
operationId: getSpecificMcpServerVersion
parameters:
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: MCP Server version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: McpServer
content:
application/json:
schema:
$ref: '#/components/schemas/McpServer'
'404':
description: MCP Server for instance {id} and version {version} is not found
/v1/mcpServers/history:
get:
tags:
- MCP Servers
summary: List all entity versions within a time range
description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
operationId: listAllEntityVersionsByTimestamp_3
parameters:
- name: startTs
in: query
description: Start timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: endTs
in: query
description: End timestamp in milliseconds since epoch
required: true
schema:
type: integer
format: int64
- name: limit
in: query
description: Limit the number of entity returned (1 to 1000000, default = 10)
schema:
maximum: 500
minimum: 1
type: integer
format: int32
default: 10
- name: before
in: query
description: Returns list of entity versions before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of entity versions after this cursor
schema:
type: string
responses:
'200':
description: List of all versions
content:
application/json:
schema:
$ref: '#/components/schemas/ResultList'
/v1/mcpServers/{id}/versions:
get:
tags:
- MCP Servers
summary: List MCP server versions
description: Get a list of all the versions of an MCP Server identified by `id`
operationId: listAllMcpServerVersions
parameters:
- name: id
in: path
description: Id of the MCP Server
required: true
schema:
type: string
format: uuid
responses:
'200':
description: List of MCP Server versions
content:
application/json:
schema:
$ref: '#/components/schemas/EntityHistory'
/v1/mcpServers/restore:
put:
tags:
- MCP Servers
summary: Restore a soft deleted MCP server
description: Restore a soft deleted MCP server.
operationId: restoreMcpServer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RestoreEntity'
responses:
'200':
description: Successfully restored the MCP Server
content:
application/json:
schema:
$ref: '#/components/schemas/McpServer'
components:
schemas:
McpUsageMetrics:
type: object
properties:
totalInvocations:
type: integer
format: int32
successRate:
type: number
format: double
averageLatencyMs:
type: number
format: double
p95LatencyMs:
type: number
format: double
lastInvokedAt:
type: integer
format: int64
uniqueUsers:
type: integer
format: int32
dailyActiveUsers:
type: integer
format: int32
McpServerList:
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/McpServer'
paging:
$ref: '#/components/schemas/Paging'
errors:
type: array
items:
$ref: '#/components/schemas/EntityError'
warningsCount:
type: integer
format: int32
warnings:
type: array
items:
$ref: '#/components/schemas/EntityError'
McpResource:
required:
- name
- uri
type: object
properties:
name:
type: string
displayName:
type: string
description:
type: string
resourceType:
type: string
enum:
- File
- Directory
- URL
- Database
- API
- Blob
- Stream
- Document
- Custom
uri:
type: string
uriTemplate:
type: string
mimeType:
type: string
dataClassification:
$ref: '#/components/schemas/DataClassification__1'
accessLevel:
type: string
enum:
- ReadOnly
- ReadWrite
- Full
requiredPermissions:
type: array
items:
type: string
sourceEntity:
$ref: '#/components/schemas/EntityReference'
annotations:
$ref: '#/components/schemas/Annotations__1'
size:
type: integer
format: int32
lastModified:
type: integer
format: int64
accessCount:
type: integer
format: int32
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
InputSchema:
type: object
Verification:
type: object
properties:
isVerified:
type: boolean
verifiedBy:
type: string
verifiedAt:
type: integer
format: int64
verificationNotes:
type: string
certificateUrl:
type: string
AccessDetails:
required:
- timestamp
type: object
properties:
timestamp:
type: integer
format: int64
accessedBy:
$ref: '#/components/schemas/EntityReference'
accessedByAProcess:
type: string
McpPrompt:
required:
- name
type: object
properties:
name:
type: string
displayName:
type: string
description:
type: string
promptType:
type: string
enum:
- Analysis
- Generation
- Transformation
- Validation
- Query
- Summarization
- Extraction
- Classification
- Custom
arguments:
type: array
items:
$ref: '#/components/schemas/McpPromptArgument'
messages:
type: array
items:
$ref: '#/components/schemas/McpPromptMessage'
examples:
type: array
items:
$ref: '#/components/schemas/Example'
dataAccessPatterns:
type: array
items:
type: string
outputClassification:
$ref: '#/components/schemas/OutputClassification'
usageCount:
type: integer
format: int32
lastUsedAt:
type: integer
format: int64
tags:
type: array
items:
$ref: '#/components/schemas/TagLabel'
HighRiskSystems:
type: object
properties:
criticalInfrastructure:
type: boolean
educationVocationalTraining:
type: boolean
employment:
type: boolean
essentialPrivateServices:
type: boolean
essentialPublicServices:
type: boolean
lawEnforcement:
type: boolean
migrationAsylumBorderControl:
type: boolean
administrationOfJustice:
type: boolean
AICompliance:
type: object
properties:
complianceRecords:
type: array
items:
$ref: '#/components/schemas/AIComplianceRecord'
McpSecurityMetrics:
type: object
properties:
authenticationRequired:
type: boolean
authorizationEnforced:
type: boolean
auditLoggingEnabled:
type: boolean
encryptionInTransit:
type: boolean
sandboxed:
type: boolean
secretsManagement:
type: string
EntityHistory:
required:
- entityType
- versions
type: object
properties:
entityType:
type: string
versions:
type: array
items:
type: object
JsonPatch:
type: object
UsageDetails:
required:
- dailyStats
- date
type: object
properties:
dailyStats:
$ref: '#/components/schemas/UsageStats'
weeklyStats:
$ref: '#/components/schemas/UsageStats'
monthlyStats:
$ref: '#/components/schemas/UsageStats'
date:
type: string
ConformityAssessment:
type: object
properties:
assessmentRequired:
type: boolean
assessmentType:
type: string
enum:
- Internal
- ThirdParty
- NotRequired
assessmentBody:
type: string
certificateNumber:
type: string
validUntil:
type: integer
format: int64
McpGovernanceMetadata:
type: object
properties:
registrationStatus:
type: string
enum:
- Registered
- Unregistered
- PendingApproval
- Approved
- Rejected
registeredBy:
type: string
registeredAt:
type: integer
format: int64
approvedBy:
type: string
approvedAt:
type: integer
format: int64
riskAssessment:
$ref: '#/components/schemas/RiskAssessment__1'
dataClassification:
$ref: '#/components/schemas/DataClassification__2'
governancePolicies:
type: array
items:
$ref: '#/components/schemas/EntityReference'
aiCompliance:
$ref: '#/components/schemas/AICompliance'
intakeNotes:
type: string
approvalComments:
type: string
TransparencyObligations:
type: object
properties:
usersInformed:
type: boolean
deepfakeLabeling:
type: boolean
emotionRecognitionDisclosure:
type: boolean
AssetCertification:
required:
- appliedDate
- expiryDate
- tagLabel
type: object
properties:
tagLabel:
$ref: '#/components/schemas/TagLabel'
appliedDate:
type: integer
format: int64
expiryDate:
type: integer
format: int64
Annotations__1:
type: object
properties:
audience:
type: array
items:
type: string
priority:
type: number
format: double
McpDataAccessSummary:
type: object
properties:
dataSources:
type: array
items:
$ref: '#/components/schemas/EntityReference'
accessPatterns:
type: array
items:
type: string
enum:
- Read
- Write
- Execute
sensitivityLevel:
type: string
enum:
- Public
- Internal
- Confidential
- Restricted
piiAccess:
type: boolean
externalApiAccess:
type: boolean
fileSystemAccess:
type: boolean
networkAccess:
type: boolean
databaseAccess:
type: boolean
McpConnectionConfig:
type: object
properties:
command:
type: string
args:
type: array
items:
type: string
env:
$ref: '#/components/schemas/Env'
workingDirectory:
type: string
url:
type: string
timeout:
type: integer
format: int32
retryAttempts:
type: integer
format: int32
Env:
type: object
DataAccess__1:
type: object
properties:
readsData:
type: boolean
writesData:
type: boolean
deletesData:
type: boolean
sensitivityLevel:
type: string
enum:
- Public
- Internal
- Confidential
- Restricted
piiAccess:
type: boolean
dataTypes:
type: array
items:
type: string
PatternMatch:
required:
- name
- score
type: object
properties:
name:
type: string
regex:
type: string
score:
type: number
format: double
AccountabilityMeasures:
type: object
properties:
hasOwner:
type: boolean
subjectToHumanOversight:
type: boolean
auditTrailEnabled:
type: boolean
TagLabelRecognizerMetadata:
required:
- recognizerId
- recognizerName
- score
type: object
properties:
recognizerId:
type: string
format: uuid
recognizerName:
type: string
score:
type: number
format: double
target:
type: string
enum:
- content
- column_name
patterns:
type: array
items:
$ref: '#/components/schemas/PatternMatch'
Annotations:
type: object
properties:
title:
type: string
readOnlyHint:
type: boolean
destructiveHint:
type: boolean
idempotentHint:
type: boolean
openWorldHint:
type: boolean
McpPromptMessage:
required:
- content
- role
type: object
properties:
role:
type: string
enum:
- user
- assistant
- system
content:
type: string
UsageStats:
required:
- count
type: object
properties:
count:
minimum: 0
type: integer
format: int32
percentileRank:
type: number
format: double
EthicalAIAssessment:
type: object
properties:
privacyLevel:
type: string
enum:
- Public
- Sensitive
- PersonalData
fairnessRisk:
type: string
enum:
- Low
- Medium
- High
biasMitigationCoverage:
type: string
enum:
- None
- Partial
- Full
reliabilitySafetyRisk:
type: string
enum:
- Low
- Moderate
- High
transparencyLevel:
type: string
enum:
- None
- Partial
- FullDisclosure
accountabilityMeasures:
$ref: '#/components/schemas/AccountabilityMeasures'
environmentalConsciousness:
type: string
enum:
- LowRisk
- MediumRisk
- HighRisk
McpServerCapabilities:
type: object
properties:
toolsSupported:
type: boolean
resourcesSupported:
type: boolean
promptsSupported:
type: boolean
loggingSupported:
type: boolean
samplingSupported:
type: boolean
rootsSupported:
type: boolean
Style:
type: object
properties:
color:
type: string
iconURL:
type: string
coverImage:
$ref: '#/components/schemas/CoverImage'
Example:
type: object
properties:
name:
type: string
arguments:
$ref: '#/components/schemas/Arguments'
expectedOutput:
type: string
RiskAssessment__1:
type: object
properties:
riskLevel:
type: string
enum:
- Low
- Medium
- High
- Critical
riskFactors:
type: array
items:
type: string
mitigations:
type: array
items:
type: string
assessedBy:
type: string
assessedAt:
type: integer
format: int64
LifeCycle:
type: object
properties:
created:
$ref: '#/components/schemas/AccessDetails'
updated:
$ref: '#/components/schemas/AccessDetails'
accessed:
$ref: '#/components/schemas/AccessDetails'
Votes:
type: object
properties:
upVotes:
type: integer
format: int32
downVotes:
type: integer
format: int32
upVoters:
type: array
items:
$ref: '#/components/schemas/EntityReference'
downVoters:
type: array
items:
$ref: '#/components/schemas/EntityReference'
Arguments:
type: object
Paging:
required:
- total
type: object
properties:
before:
type: string
after:
type: string
offset:
type: integer
format: int32
limit:
type: integer
format: int32
total:
type: integer
format: int32
EntityReference:
required:
- id
- type
type: object
properties:
id:
type: string
format: uuid
type:
type: string
name:
type: string
fullyQualifiedName:
type: string
description:
type: string
displayName:
type: string
deleted:
type: boolean
inherited:
type: boolean
href:
type: string
format: uri
ProhibitedPractices:
type: object
properties:
subliminalManipulativeTechniques:
type: boolean
exploitationOfVulnerabilities:
type: boolean
socialScoringSystem:
type: boolean
riskAssessmentCriminalOffences:
type: boolean
facialRecognitionDatabaseCreation:
type: boolean
emotionInferenceWorkplaceEducation:
type: boolean
biometricCategorisation:
type: boolean
realTimeBiometricIdentification:
type: boolean
McpTool:
required:
- name
type: object
properties:
name:
type: string
displayName:
type: string
description:
type: string
toolCategory:
type: string
enum:
- FileOperation
- WebOperation
- DataOperation
- DatabaseOperation
- SystemOperation
- SecurityOperation
- CommunicationOperation
- CodeOperation
- SearchOperation
- Custom
inputSchema:
$ref: '#/components/schemas/InputSchema'
outputSchema:
$ref: '#/components/schemas/OutputSchema'
riskLevel:
type: string
enum:
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-mcp-servers-api-openapi.yml