OpenMetadata
STDIOMCP server for OpenMetadata API integration via Model Context Protocol
MCP server for OpenMetadata API integration via Model Context Protocol
A Model Context Protocol (MCP) server implementation for OpenMetadata, enabling seamless integration with MCP clients. This project provides a standardized way to interact with OpenMetadata through the Model Context Protocol.
This project implements a Model Context Protocol server that wraps OpenMetadata's REST API, allowing MCP clients to interact with OpenMetadata in a standardized way.
table, database, databaseschema)| Feature | API Path | Status | 
|---|---|---|
| Tables | ||
| List Tables | /api/v1/tables | ✅ | 
| Get Table | /api/v1/tables/{id} | ✅ | 
| Get Table by Name | /api/v1/tables/name/{fqn} | ✅ | 
| Create Table | /api/v1/tables | ✅ | 
| Update Table | /api/v1/tables/{id} | ✅ | 
| Delete Table | /api/v1/tables/{id} | ✅ | 
| Databases | ||
| List Databases | /api/v1/databases | ✅ | 
| Get Database | /api/v1/databases/{id} | ✅ | 
| Get Database by Name | /api/v1/databases/name/{fqn} | ✅ | 
| Create Database | /api/v1/databases | ✅ | 
| Update Database | /api/v1/databases/{id} | ✅ | 
| Delete Database | /api/v1/databases/{id} | ✅ | 
| Database Schemas | ||
| List Database Schemas | /api/v1/databaseSchemas | ✅ | 
| Get Database Schema | /api/v1/databaseSchemas/{id} | ✅ | 
| Get Database Schema by Name | /api/v1/databaseSchemas/name/{fqn} | ✅ | 
| Create Database Schema | /api/v1/databaseSchemas | ✅ | 
| Update Database Schema | /api/v1/databaseSchemas/{id} | ✅ | 
| Delete Database Schema | /api/v1/databaseSchemas/{id} | ✅ | 
dashboard, chart, pipeline, topic, metric, container, report, mlmodel)| Feature | API Path | Status | 
|---|---|---|
| Dashboards | ||
| List Dashboards | /api/v1/dashboards | ✅ | 
| Get Dashboard | /api/v1/dashboards/{id} | ✅ | 
| Get Dashboard by Name | /api/v1/dashboards/name/{fqn} | ✅ | 
| Create Dashboard | /api/v1/dashboards | ✅ | 
| Update Dashboard | /api/v1/dashboards/{id} | ✅ | 
| Delete Dashboard | /api/v1/dashboards/{id} | ✅ | 
| Charts | ||
| List Charts | /api/v1/charts | ✅ | 
| Get Chart | /api/v1/charts/{id} | ✅ | 
| Get Chart by Name | /api/v1/charts/name/{fqn} | ✅ | 
| Create Chart | /api/v1/charts | ✅ | 
| Update Chart | /api/v1/charts/{id} | ✅ | 
| Delete Chart | /api/v1/charts/{id} | ✅ | 
| Pipelines | ||
| List Pipelines | /api/v1/pipelines | ✅ | 
| Get Pipeline | /api/v1/pipelines/{id} | ✅ | 
| Get Pipeline by Name | /api/v1/pipelines/name/{fqn} | ✅ | 
| Create Pipeline | /api/v1/pipelines | ✅ | 
| Update Pipeline | /api/v1/pipelines/{id} | ✅ | 
| Delete Pipeline | /api/v1/pipelines/{id} | ✅ | 
| Topics | ||
| List Topics | /api/v1/topics | ✅ | 
| Get Topic | /api/v1/topics/{id} | ✅ | 
| Get Topic by Name | /api/v1/topics/name/{fqn} | ✅ | 
| Create Topic | /api/v1/topics | ✅ | 
| Update Topic | /api/v1/topics/{id} | ✅ | 
| Delete Topic | /api/v1/topics/{id} | ✅ | 
| Metrics | ||
| List Metrics | /api/v1/metrics | ✅ | 
| Get Metric | /api/v1/metrics/{id} | ✅ | 
| Get Metric by Name | /api/v1/metrics/name/{fqn} | ✅ | 
| Create Metric | /api/v1/metrics | ✅ | 
| Update Metric | /api/v1/metrics/{id} | ✅ | 
| Delete Metric | /api/v1/metrics/{id} | ✅ | 
| Containers | ||
| List Containers | /api/v1/containers | ✅ | 
| Get Container | /api/v1/containers/{id} | ✅ | 
| Get Container by Name | /api/v1/containers/name/{fqn} | ✅ | 
| Create Container | /api/v1/containers | ✅ | 
| Update Container | /api/v1/containers/{id} | ✅ | 
| Delete Container | /api/v1/containers/{id} | ✅ | 
| Reports | ||
| List Reports | /api/v1/reports | ✅ | 
| Get Report | /api/v1/reports/{id} | ✅ | 
| Get Report by Name | /api/v1/reports/name/{fqn} | ✅ | 
| Create Report | /api/v1/reports | ✅ | 
| Update Report | /api/v1/reports/{id} | ✅ | 
| Delete Report | /api/v1/reports/{id} | ✅ | 
| ML Models | ||
| List ML Models | /api/v1/mlmodels | ✅ | 
| Get ML Model | /api/v1/mlmodels/{id} | ✅ | 
| Get ML Model by Name | /api/v1/mlmodels/name/{fqn} | ✅ | 
| Create ML Model | /api/v1/mlmodels | ✅ | 
| Update ML Model | /api/v1/mlmodels/{id} | ✅ | 
| Delete ML Model | /api/v1/mlmodels/{id} | ✅ | 
user, team)| Feature | API Path | Status | 
|---|---|---|
| Teams | ||
| List Teams | /api/v1/teams | ✅ | 
| Get Team | /api/v1/teams/{id} | ✅ | 
| Get Team by Name | /api/v1/teams/name/{name} | ✅ | 
| Create Team | /api/v1/teams | ✅ | 
| Update Team | /api/v1/teams/{id} | ✅ | 
| Delete Team | /api/v1/teams/{id} | ✅ | 
| Users | ||
| List Users | /api/v1/users | ✅ | 
| Get User | /api/v1/users/{id} | ✅ | 
| Get User by Name | /api/v1/users/name/{name} | ✅ | 
| Create User | /api/v1/users | ✅ | 
| Update User | /api/v1/users/{id} | ✅ | 
| Delete User | /api/v1/users/{id} | ✅ | 
classification, glossary, tag)| Feature | API Path | Status | 
|---|---|---|
| Classifications | ||
| List Classifications | /api/v1/classifications | ✅ | 
| Get Classification | /api/v1/classifications/{id} | ✅ | 
| Get Classification by Name | /api/v1/classifications/name/{name} | ✅ | 
| Create Classification | /api/v1/classifications | ✅ | 
| Update Classification | /api/v1/classifications/{id} | ✅ | 
| Delete Classification | /api/v1/classifications/{id} | ✅ | 
| Glossaries | ||
| List Glossaries | /api/v1/glossaries | ✅ | 
| Get Glossary | /api/v1/glossaries/{id} | ✅ | 
| Get Glossary by Name | /api/v1/glossaries/name/{name} | ✅ | 
| Create Glossary | /api/v1/glossaries | ✅ | 
| Update Glossary | /api/v1/glossaries/{id} | ✅ | 
| Delete Glossary | /api/v1/glossaries/{id} | ✅ | 
| List Glossary Terms | /api/v1/glossaryTerms | ✅ | 
| Get Glossary Term | /api/v1/glossaryTerms/{id} | ✅ | 
| Tags | ||
| List Tags | /api/v1/tags | ✅ | 
| Get Tag | /api/v1/tags/{id} | ✅ | 
| Get Tag by Name | /api/v1/tags/name/{name} | ✅ | 
| Create Tag | /api/v1/tags | ✅ | 
| Update Tag | /api/v1/tags/{id} | ✅ | 
| Delete Tag | /api/v1/tags/{id} | ✅ | 
bot, services, event)| Feature | API Path | Status | 
|---|---|---|
| Bots | ||
| List Bots | /api/v1/bots | ✅ | 
| Get Bot | /api/v1/bots/{id} | ✅ | 
| Get Bot by Name | /api/v1/bots/name/{name} | ✅ | 
| Create Bot | /api/v1/bots | ✅ | 
| Update Bot | /api/v1/bots/{id} | ✅ | 
| Delete Bot | /api/v1/bots/{id} | ✅ | 
| Services | ||
| List Services | /api/v1/services | ✅ | 
| Database Services | /api/v1/services/databaseServices | ✅ | 
| Dashboard Services | /api/v1/services/dashboardServices | ✅ | 
| Messaging Services | /api/v1/services/messagingServices | ✅ | 
| Test Connection | /api/v1/services/testConnection | ✅ | 
| Events | ||
| List Events | /api/v1/events | ✅ | 
| List Event Subscriptions | /api/v1/events/subscriptions | ✅ | 
| Get Event Subscription | /api/v1/events/subscriptions/{id} | ✅ | 
| Create Event Subscription | /api/v1/events/subscriptions | ✅ | 
| Update Event Subscription | /api/v1/events/subscriptions/{id} | ✅ | 
| Delete Event Subscription | /api/v1/events/subscriptions/{id} | ✅ | 
| Test Destination | /api/v1/events/subscriptions/testDestination | ✅ | 
lineage, usage, search)| Feature | API Path | Status | 
|---|---|---|
| Lineage | ||
| Get Lineage by Entity ID | /api/v1/lineage/{entity}/{id} | ✅ | 
| Get Lineage by Entity Name | /api/v1/lineage/{entity}/name/{fqn} | ✅ | 
| Add/Update Lineage | /api/v1/lineage | ✅ | 
| Delete Lineage | /api/v1/lineage | ✅ | 
| Usage | ||
| Get Entity Usage | /api/v1/usage/{entity}/{id} | ✅ | 
| Add Usage Data | /api/v1/usage | ✅ | 
| Get Usage Summary | /api/v1/usage/summary | ✅ | 
| Search & Discovery | ||
| Search Query | /api/v1/search/query | ✅ | 
| Search Suggest | /api/v1/search/suggest | ✅ | 
| Search Aggregate | /api/v1/search/aggregate | ✅ | 
| Search Field Query | /api/v1/search/fieldQuery | ✅ | 
test_case, test_suite)| Feature | API Path | Status | 
|---|---|---|
| Test Cases | ||
| List Test Cases | /api/v1/dataQuality/testCases | ✅ | 
| Get Test Case | /api/v1/dataQuality/testCases/{id} | ✅ | 
| Get Test Case by Name | /api/v1/dataQuality/testCases/name/{fqn} | ✅ | 
| Create Test Case | /api/v1/dataQuality/testCases | ✅ | 
| Update Test Case | /api/v1/dataQuality/testCases/{id} | ✅ | 
| Delete Test Case | /api/v1/dataQuality/testCases/{id} | ✅ | 
| List Test Case Results | /api/v1/dataQuality/testCases/{fqn}/testCaseResult | ✅ | 
| Get Test Case Results | /api/v1/dataQuality/testCases/testCaseResults/{fqn} | ✅ | 
| Test Suites | ||
| List Test Suites | /api/v1/dataQuality/testSuites | ✅ | 
| Get Test Suite | /api/v1/dataQuality/testSuites/{id} | ✅ | 
| Get Test Suite by Name | /api/v1/dataQuality/testSuites/name/{name} | ✅ | 
| Create Basic Test Suite | /api/v1/dataQuality/testSuites/basic | ✅ | 
| Create Executable Test Suite | /api/v1/dataQuality/testSuites/executable | ✅ | 
| Update Test Suite | /api/v1/dataQuality/testSuites/{id} | ✅ | 
| Delete Test Suite | /api/v1/dataQuality/testSuites/{id} | ✅ | 
| Get Execution Summary | /api/v1/dataQuality/testSuites/executionSummary | ✅ | 
| Get Data Quality Report | /api/v1/dataQuality/testSuites/dataQualityReport | ✅ | 
policy, role)| Feature | API Path | Status | 
|---|---|---|
| Policies | ||
| List Policies | /api/v1/policies | ✅ | 
| Get Policy | /api/v1/policies/{id} | ✅ | 
| Get Policy by Name | /api/v1/policies/name/{name} | ✅ | 
| Create Policy | /api/v1/policies | ✅ | 
| Update Policy | /api/v1/policies/{id} | ✅ | 
| Delete Policy | /api/v1/policies/{id} | ✅ | 
| Validate Policy | /api/v1/policies/validation/condition | ✅ | 
| List Policy Resources | /api/v1/policies/resources | ✅ | 
| Roles | ||
| List Roles | /api/v1/roles | ✅ | 
| Get Role | /api/v1/roles/{id} | ✅ | 
| Get Role by Name | /api/v1/roles/name/{name} | ✅ | 
| Create Role | /api/v1/roles | ✅ | 
| Update Role | /api/v1/roles/{id} | ✅ | 
| Delete Role | /api/v1/roles/{id} | ✅ | 
domain)| Feature | API Path | Status | 
|---|---|---|
| Domains | ||
| List Domains | /api/v1/domains | ✅ | 
| Get Domain | /api/v1/domains/{id} | ✅ | 
| Get Domain by Name | /api/v1/domains/name/{name} | ✅ | 
| Create Domain | /api/v1/domains | ✅ | 
| Update Domain | /api/v1/domains/{id} | ✅ | 
| Delete Domain | /api/v1/domains/{id} | ✅ | 
| Data Products | ||
| List Data Products | /api/v1/dataProducts | ✅ | 
| Get Data Product | /api/v1/dataProducts/{id} | ✅ | 
| Get Data Product by Name | /api/v1/dataProducts/name/{fqn} | ✅ | 
| Create Data Product | /api/v1/dataProducts | ✅ | 
| Update Data Product | /api/v1/dataProducts/{id} | ✅ | 
| Delete Data Product | /api/v1/dataProducts/{id} | ✅ | 
| Feature | API Path | Status | 
|---|---|---|
| API Management | ||
| API Collections | /api/v1/apiCollections | ❌ | 
| API Endpoints | /api/v1/apiEndpoints | ❌ | 
| Other Assets | ||
| Apps | /api/v1/apps | ❌ | 
| Feeds & Activity | ||
| Feeds | /api/v1/feed | ❌ | 
| Advanced Features | ||
| Personas | /api/v1/personas | ❌ | 
| Queries | /api/v1/queries | ❌ | 
| Search Indexes | /api/v1/searchIndexes | ❌ | 
| Stored Procedures | /api/v1/storedProcedures | ❌ | 
| Suggestions | /api/v1/suggestions | ❌ | 
| Webhooks | /api/v1/webhooks | ❌ | 
The server supports modular API group selection via command line arguments. Available API groups:
table - Table entity managementdatabase - Database entity managementdatabaseschema - Database schema managementdashboard - Dashboard entity managementchart - Chart entity managementpipeline - Pipeline entity managementtopic - Topic entity managementmetrics - Metric entity managementcontainer - Container entity managementreport - Report entity managementmlmodel - ML Model entity managementuser - User entity managementteam - Team entity managementclassification - Classification entity managementglossary - Glossary and glossary terms managementtag - Tag and tag category managementbot - Bot entity managementservices - Service configurations and connection testingevent - Event subscriptions and notificationslineage - Data lineage managementusage - Usage analytics managementsearch - Search and discovery operationstest_case - Data quality test case managementtest_suite - Data quality test suite managementpolicy - Access policies and security managementrole - Role-based access control managementdomain - Domain and data product managementYou can specify which API groups to enable when running the server:
# Enable only core entities python -m src.main --apis table,database,databaseschema # Enable comprehensive data quality and governance python -m src.main --apis test_case,test_suite,policy,role,tag,domain # Enable all available APIs python -m src.main --apis table,database,databaseschema,dashboard,chart,pipeline,topic,metrics,container,report,mlmodel,user,team,classification,glossary,tag,bot,services,event,lineage,usage,search,test_case,test_suite,policy,role,domain # Use default selection (all implemented APIs) python -m src.main
To install OpenMetadata MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @yangkyeongmo/mcp-server-openmetadata --client claude
Set one of the following authentication methods:
OPENMETADATA_HOST=<your-openmetadata-host>
OPENMETADATA_JWT_TOKEN=<your-jwt-token>
OPENMETADATA_HOST=<your-openmetadata-host>
OPENMETADATA_USERNAME=<your-username>
OPENMETADATA_PASSWORD=<your-password>
Add to your claude_desktop_config.json using one of the following authentication methods:
{ "mcpServers": { "mcp-server-openmetadata": { "command": "uvx", "args": ["mcp-server-openmetadata"], "env": { "OPENMETADATA_HOST": "https://your-openmetadata-host", "OPENMETADATA_JWT_TOKEN": "your-jwt-token" } } } }
{ "mcpServers": { "mcp-server-openmetadata": { "command": "uvx", "args": ["mcp-server-openmetadata"], "env": { "OPENMETADATA_HOST": "https://your-openmetadata-host", "OPENMETADATA_USERNAME": "your-username", "OPENMETADATA_PASSWORD": "your-password" } } } }
Alternative configuration using uv:
{ "mcpServers": { "mcp-server-openmetadata": { "command": "uv", "args": [ "--directory", "/path/to/mcp-server-openmetadata", "run", "mcp-server-openmetadata" ], "env": { "OPENMETADATA_HOST": "https://your-openmetadata-host", "OPENMETADATA_JWT_TOKEN": "your-jwt-token" } } } }
{ "mcpServers": { "mcp-server-openmetadata": { "command": "uv", "args": [ "--directory", "/path/to/mcp-server-openmetadata", "run", "mcp-server-openmetadata" ], "env": { "OPENMETADATA_HOST": "https://your-openmetadata-host", "OPENMETADATA_USERNAME": "your-username", "OPENMETADATA_PASSWORD": "your-password" } } } }
Replace /path/to/mcp-server-openmetadata with the actual path where you've cloned the repository.
You can also run the server manually:
python src/server.py
Options:
--port: Port to listen on for SSE (default: 8000)--transport: Transport type (stdio/sse, default: stdio)Contributions are welcome! Please feel free to submit a Pull Request.
MIT License