Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
MCP server for DataHub data catalogs. Discover datasets, explore lineage, and access metadata.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
リンク先は作者自身のファイルです。私たちが置いたり再パッケージしたりしたものではありません。ファイルを開くと、Claude Desktopがインストールします。
ターミナルでこれを実行します
ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント txn2 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.15.1)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにMCPBも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, AvaHR
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read hiring data and create inactive assessment and questionnaire drafts for human review.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
An MCP server and composable Go library that connects AI assistants to DataHub metadata catalogs. Search datasets, explore schemas, trace lineage, and access glossary terms and domains.
[mcp-datahub.txn2.com](https://mcp-datahub.txn2.com) | [Installation](https://mcp-datahub.txn2.com/server/installation/) | [Library Docs](https://mcp-datahub.txn2.com/library/)
mcp-datahub is part of a broader suite of open-source MCP servers designed to work together as a composable data platform. Each component can run standalone or be combined to give AI assistants unified access to storage, query engines, and metadata catalogs.
Install and connect to Claude Desktop, Cursor, or any MCP client:
Claude Desktop (Easiest) - Download the .mcpb bundle from releases and double-click to install:
mcp-datahub_X.X.X_darwin_arm64.mcpbmcp-datahub_X.X.X_darwin_amd64.mcpbmcp-datahub_X.X.X_windows_amd64.mcpbOther Installation Methods:
# Homebrew (macOS)
brew install txn2/tap/mcp-datahub
go install github.com/txn2/mcp-datahub/cmd/mcp-datahub@latest
Manual Claude Desktop Configuration (if not using MCPB):
{
"mcpServers": { "datahub": { "command": "/opt/homebrew/bin/mcp-datahub", "env": { "DATAHUB_URL": "https://datahub.example.com", "DATAHUB_TOKEN": "your_token" } } } }
Connect to multiple DataHub instances simultaneously:
# Primary server
export DATAHUB_URL=https://prod.datahub.example.com/api/graphql export DATAHUB_TOKEN=prod-token export DATAHUB_CONNECTION_NAME=prod
export DATAHUB_ADDITIONAL_SERVERS='{"staging":{"url":"https://staging.datahub.example.com/api/graphql","token":"staging-token"}}'
Use datahub_list_connections to discover available connections, then pass the connection parameter to any tool.
Import into your own MCP server for custom authentication, tenant isolation, and audit logging:
import (
"github.com/txn2/mcp-datahub/pkg/client" "github.com/txn2/mcp-datahub/pkg/tools" )
// Create client and register tools with your MCP server datahubClient, _ := client.NewFromEnv() defer datahubClient.Close()
toolkit := tools.NewToolkit(datahubClient, tools.Config{}) toolkit.RegisterAll(yourMCPServer)
Override tool descriptions to match your deployment:
toolkit := tools.NewToolkit(datahubClient, tools.Config{},
tools.WithDescriptions(map[tools.ToolName]string{ tools.ToolSearch: "Search our internal data catalog for datasets and dashboards", }), )
Override MCP tool annotations (behavior hints for AI clients):
toolkit := tools.NewToolkit(datahubClient, tools.Config{},
tools.WithAnnotations(map[tools.ToolName]*mcp.ToolAnnotations{ tools.ToolSearch: {ReadOnlyHint: true, OpenWorldHint: boolPtr(true)}, }), )
All 12 tools ship with default annotations: read tools are marked ReadOnlyHint: true; datahub_create is non-destructive and non-idempotent; datahub_update is non-destructive and idempotent; datahub_delete is destructive and idempotent.
Enable optional middleware via the extensions package:
import "github.com/txn2/mcp-datahub/pkg/extensions"
// Load from environment variables (MCP_DATAHUB_EXT_*) cfg := extensions.FromEnv() opts := extensions.BuildToolkitOptions(cfg) toolkit := tools.NewToolkit(datahubClient, toolsCfg, opts...)
// Or load from a YAML/JSON config file serverCfg, _ := extensions.LoadConfig("config.yaml")
See the library documentation for middleware, selective tool registration, and enterprise patterns.
Build a unified data platform MCP server by combining DataHub metadata with Trino query execution:
import (
datahubClient "github.com/txn2/mcp-datahub/pkg/client" datahubTools "github.com/txn2/mcp-datahub/pkg/tools" trinoClient "github.com/txn2/mcp-trino/pkg/client" trinoTools "github.com/txn2/mcp-trino/pkg/tools" )
// Add DataHub tools (search, lineage, schema, glossary) dh, _ := datahubClient.NewFromEnv() datahubTools.NewToolkit(dh, datahubTools.Config{}).RegisterAll(server)
// Add Trino tools (query execution, catalog browsing) tr, _ := trinoClient.NewFromEnv() trinoTools.NewToolkit(tr, trinoTools.Config{}).RegisterAll(server)
// AI assistants can now: // - Search DataHub for tables -> Get schema -> Query via Trino // - Explore lineage -> Understand data flow -> Run validation queries
See txn2/mcp-trino for the companion library.
The library supports bidirectional context injection. While mcp-trino can pull semantic context from DataHub, mcp-datahub can receive query execution context back from a query engine:
import (
datahubTools "github.com/txn2/mcp-datahub/pkg/tools" "github.com/txn2/mcp-datahub/pkg/integration" )
// QueryProvider enables query engines to inject context into DataHub tools type myQueryProvider struct { trinoClient *trino.Client }
func (p *myQueryProvider) Name() string { return "trino" }
func (p *myQueryProvider) ResolveTable(ctx context.Context, urn string) (*integration.TableIdentifier, error) { // Map DataHub URN to Trino table (catalog.schema.table) return &integration.TableIdentifier{ Catalog: "hive", Schema: "production", Table: "users", }, nil }
func (p *myQueryProvider) GetTableAvailability(ctx context.Context, urn string) (*integration.TableAvailability, error) { // Check if table is queryable return &integration.TableAvailability{Available: true}, nil }
func (p *myQueryProvider) GetQueryExamples(ctx context.Context, urn string) ([]integration.QueryExample, error) { // Return sample queries for this entity return []integration.QueryExample{ {Name: "sample", SQL: "SELECT * FROM hive.production.users LIMIT 10"}, }, nil }
// Wire it up toolkit := datahubTools.NewToolkit(datahubClient, config, datahubTools.WithQueryProvider(&myQueryProvider{trinoClient: trino}), )
When a QueryProvider is configured, tool responses are enriched:
query_context with table availabilityquery_table, query_examples, query_availabilityquery_table for immediate SQL usageexecution_context mapping URNs to tablesEnterprise features like access control and audit logging are enabled through middleware adapters:
import (
datahubTools "github.com/txn2/mcp-datahub/pkg/tools" "github.com/txn2/mcp-datahub/pkg/integration" )
// Access control - filter entities by user permissions type myAccessFilter struct{} func (f *myAccessFilter) CanAccess(ctx context.Context, urn string) (bool, error) { /* ... */ } func (f *myAccessFilter) FilterURNs(ctx context.Context, urns []string) ([]string, error) { /* ... */ }
// Audit logging - track all tool invocations type myAuditLogger struct{} func (l *myAuditLogger) LogToolCall(ctx context.Context, tool string, params map[string]any, userID string) error { /* ... */ }
// Wire up with multiple integration options toolkit := datahubTools.NewToolkit(datahubClient, config, datahubTools.WithAccessFilter(&myAccessFilter{}), datahubTools.WithAuditLogger(&myAuditLogger{}, func(ctx context.Context) string { return ctx.Value("user_id").(string) }), datahubTools.WithURNResolver(&myURNResolver{}), // Map external IDs to URNs datahubTools.WithMetadataEnricher(&myEnricher{}), // Add custom metadata )
See the library documentation for complete integration patterns.
| Tool | Description |
|---|---|
datahub_search | Search for datasets, dashboards, pipelines by query and entity type |
datahub_get_entity | Get entity metadata by URN (description, owners, tags, domain) |
datahub_get_schema | Get dataset schema with field types and descriptions |
datahub_get_lineage | Get upstream/downstream lineage (supports level=column for column-level) |
datahub_get_queries | Get SQL queries associated with a dataset |
datahub_browse | Browse catalog: list tags, domains, or data products |
datahub_get_glossary_term | Get glossary term definition and properties |
datahub_get_data_product | Get data product details (owners, domain, properties) |
datahub_list_connections | List configured DataHub server connections (multi-server mode) |
DATAHUB_WRITE_ENABLED=true)3 CRUD tools using the what discriminator pattern — 37 operations total:
| Tool | Operations | Description |
|---|---|---|
datahub_create | 10 | Create tags, domains, glossary terms, data products, documents, applications, queries, incidents, structured properties, data contracts |
datahub_update | 19 | Update descriptions (including tag/glossaryTerm descriptions), tags, glossary terms, links, owners, domains, structured properties, custom properties, incidents, queries, documents, data contracts |
datahub_delete | 8 | Delete queries, tags, domains, glossary entities, data products, applications, documents, structured properties |
Write tools are disabled by default for safety.
Minimum: DataHub 1.3.x. Full feature set: DataHub 1.4.x.
| DataHub Version | Features |
|---|---|
| 1.3.x+ (minimum) | All read tools, all write operations except documents (tags, domains, glossary, data products, queries, owners, links, descriptions, incidents, applications, structured properties incl. delete, data contracts) |
| 1.4.x+ (full) | + Documents (create/update/delete) |
The client gracefully handles version differences — read queries return empty results (not errors) when a feature is unavailable on older versions.
See the tools reference for detailed documentation.
| Variable | Description | Default |
|---|---|---|
DATAHUB_URL | DataHub GraphQL API URL | (required) |
DATAHUB_TOKEN | API token | (required) |
DATAHUB_TIMEOUT | Request timeout (seconds) | 30 |
DATAHUB_DEFAULT_LIMIT | Default search limit | 10 |
DATAHUB_MAX_LIMIT | Maximum limit | 100 |
| DATAHUB_CONNECTION_NAME | Display name for primary connection | `dat
冒頭だけを表示しています。続きはリポジトリで読めます