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.
Feature | API Path | Status |
---|---|---|
Data Assets | ||
List Databases | /api/v1/databases |
❌ |
Get Database | /api/v1/databases/{id} |
❌ |
Get Database by Name | /api/v1/databases/name/{fqn} |
❌ |
Export Database | /api/v1/databases/name/{name}/export |
❌ |
Import Database | /api/v1/databases/name/{name}/import |
❌ |
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} |
✅ |
Export Table | /api/v1/tables/name/{name}/export |
❌ |
Import Table | /api/v1/tables/name/{name}/import |
❌ |
List Metrics | /api/v1/metrics |
❌ |
Get Metric | /api/v1/metrics/{id} |
❌ |
List Dashboards | /api/v1/dashboards |
❌ |
Get Dashboard | /api/v1/dashboards/{id} |
❌ |
Get Dashboard by Name | /api/v1/dashboards/name/{fqn} |
❌ |
List Reports | /api/v1/reports |
❌ |
Get Report | /api/v1/reports/{id} |
❌ |
List Pipelines | /api/v1/pipelines |
❌ |
Get Pipeline | /api/v1/pipelines/{id} |
❌ |
Get Pipeline by Name | /api/v1/pipelines/name/{fqn} |
❌ |
List Topics | /api/v1/topics |
❌ |
Get Topic | /api/v1/topics/{id} |
❌ |
Services | ||
List Database Services | /api/v1/services/databaseServices |
❌ |
Get Database Service | /api/v1/services/databaseServices/{id} |
❌ |
Get Database Service by Name | /api/v1/services/databaseServices/name/{fqn} |
❌ |
Export Database Service | /api/v1/services/databaseServices/name/{name}/export |
❌ |
Import Database Service | /api/v1/services/databaseServices/name/{name}/import |
❌ |
List Dashboard Services | /api/v1/services/dashboardServices |
❌ |
Get Dashboard Service | /api/v1/services/dashboardServices/{id} |
❌ |
Get Dashboard Service by Name | /api/v1/services/dashboardServices/name/{fqn} |
❌ |
Teams & Users | ||
List Teams | /api/v1/teams |
❌ |
Get Team | /api/v1/teams/{id} |
❌ |
Get Team by Name | /api/v1/teams/name/{fqn} |
❌ |
Export Team | /api/v1/teams/name/{name}/export |
❌ |
Import Team | /api/v1/teams/name/{name}/import |
❌ |
List Users | /api/v1/users |
❌ |
Get User | /api/v1/users/{id} |
❌ |
Get User by Name | /api/v1/users/name/{name} |
❌ |
User Login | /api/v1/users/login |
❌ |
User Logout | /api/v1/users/logout |
❌ |
User Signup | /api/v1/users/signup |
❌ |
Change Password | /api/v1/users/changePassword |
❌ |
Search | ||
Search Query | /api/v1/search/query |
❌ |
Search Suggest | /api/v1/search/suggest |
❌ |
Search Aggregate | /api/v1/search/aggregate |
❌ |
Field Query | /api/v1/search/fieldQuery |
❌ |
Get Document | /api/v1/search/get/{index}/doc/{id} |
❌ |
Tags & Classifications | ||
List Tags | /api/v1/tags |
❌ |
Get Tag | /api/v1/tags/{id} |
❌ |
Get Tag by Name | /api/v1/tags/name/{fqn} |
❌ |
Lineage | ||
Get Lineage | /api/v1/lineage/getLineage |
❌ |
Export Lineage | /api/v1/lineage/export |
❌ |
Get Entity Lineage by Name | /api/v1/lineage/{entity}/name/{fqn} |
❌ |
Get Entity Lineage by ID | /api/v1/lineage/{entity}/{id} |
❌ |
Get Lineage Edge | /api/v1/lineage/getLineageEdge/{fromId}/{toId} |
❌ |
Add/Update Lineage | /api/v1/lineage |
❌ |
Add/Update Lineage by FQN | /api/v1/lineage/{fromEntity}/name/{fromFQN}/{toEntity}/name/{toFQN} |
❌ |
Add/Update Lineage by ID | /api/v1/lineage/{fromEntity}/{fromId}/{toEntity}/{toId} |
❌ |
Glossaries | ||
List Glossaries | /api/v1/glossaries |
❌ |
Get Glossary | /api/v1/glossaries/{id} |
❌ |
Get Glossary by Name | /api/v1/glossaries/name/{fqn} |
❌ |
Export Glossary | /api/v1/glossaries/name/{name}/export |
❌ |
Import Glossary | /api/v1/glossaries/name/{name}/import |
❌ |
List Glossary Terms | /api/v1/glossaryTerms |
❌ |
Get Glossary Term | /api/v1/glossaryTerms/{id} |
❌ |
Get Glossary Term by Name | /api/v1/glossaryTerms/name/{fqn} |
❌ |
Add Assets to Term | /api/v1/glossaryTerms/{id}/assets/add |
❌ |
Remove Assets from Term | /api/v1/glossaryTerms/{id}/assets/remove |
❌ |
Validate Term Tags | /api/v1/glossaryTerms/{id}/tags/validate |
❌ |
Usage | ||
Get Entity Usage by Name | /api/v1/usage/{entity}/name/{fqn} |
❌ |
Get Entity Usage by ID | /api/v1/usage/{entity}/{id} |
❌ |
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