mcp-server-openmetadata
If you are the rightful owner of mcp-server-openmetadata and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server implementation for OpenMetadata, enabling seamless integration with MCP clients.
mcp-server-openmetadata
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.
About
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.
Feature Implementation Status
Core Data Entities (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} | ✅ |
Data Assets (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} | ✅ |
Users & Teams (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} | ✅ |
Governance & Classification (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} | ✅ |
System & Operations (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 | ✅ |
Analytics & Monitoring (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 | ✅ |
Data Quality (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 | ✅ |
Access Control & Security (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 Management (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} | ✅ |
Not Yet Implemented
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 | ❌ |
API Groups
The server supports modular API group selection via command line arguments. Available API groups:
Core Data Entities
table
- Table entity managementdatabase
- Database entity managementdatabaseschema
- Database schema management
Data Assets
dashboard
- Dashboard entity managementchart
- Chart entity managementpipeline
- Pipeline entity managementtopic
- Topic entity managementmetrics
- Metric entity managementcontainer
- Container entity managementreport
- Report entity managementmlmodel
- ML Model entity management
Users & Teams
user
- User entity managementteam
- Team entity management
Governance & Classification
classification
- Classification entity managementglossary
- Glossary and glossary terms managementtag
- Tag and tag category management
System & Operations
bot
- Bot entity managementservices
- Service configurations and connection testingevent
- Event subscriptions and notifications
Analytics & Monitoring
lineage
- Data lineage managementusage
- Usage analytics managementsearch
- Search and discovery operations
Data Quality
test_case
- Data quality test case managementtest_suite
- Data quality test suite management
Access Control & Security
policy
- Access policies and security managementrole
- Role-based access control management
Domain Management
domain
- Domain and data product management
You 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
Setup
Installing via Smithery
To install OpenMetadata MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @yangkyeongmo/mcp-server-openmetadata --client claude
Environment Variables
Set one of the following authentication methods:
Token Authentication (Recommended)
OPENMETADATA_HOST=<your-openmetadata-host>
OPENMETADATA_JWT_TOKEN=<your-jwt-token>
Basic Authentication
OPENMETADATA_HOST=<your-openmetadata-host>
OPENMETADATA_USERNAME=<your-username>
OPENMETADATA_PASSWORD=<your-password>
Usage with Claude Desktop
Add to your claude_desktop_config.json
using one of the following authentication methods:
Token Authentication (Recommended)
{
"mcpServers": {
"mcp-server-openmetadata": {
"command": "uvx",
"args": ["mcp-server-openmetadata"],
"env": {
"OPENMETADATA_HOST": "https://your-openmetadata-host",
"OPENMETADATA_JWT_TOKEN": "your-jwt-token"
}
}
}
}
Basic Authentication
{
"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
:
Token Authentication (Recommended)
{
"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"
}
}
}
}
Basic Authentication
{
"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.
Manual Execution
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)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License