Skip to content

Quick Start

Get started with mcp-datahub as a Go library in minutes.

Installation

go get github.com/txn2/mcp-datahub

Basic Usage

package main

import (
    "context"
    "log"
    "os"

    "github.com/modelcontextprotocol/go-sdk/mcp"
    "github.com/txn2/mcp-datahub/pkg/client"
    "github.com/txn2/mcp-datahub/pkg/tools"
)

func main() {
    // Create MCP server
    server := mcp.NewServer(&mcp.Implementation{
        Name:    "my-data-server",
        Version: "1.0.0",
    }, nil)

    // Create DataHub client
    datahubClient, err := client.New(client.Config{
        URL:   os.Getenv("DATAHUB_URL"),
        Token: os.Getenv("DATAHUB_TOKEN"),
    })
    if err != nil {
        log.Fatal(err)
    }
    defer datahubClient.Close()

    // Register all DataHub tools
    toolkit := tools.NewToolkit(datahubClient)
    toolkit.RegisterAll(server)

    // Run server
    if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil {
        log.Fatal(err)
    }
}

Register Specific Tools

Only register the tools you need:

toolkit := tools.NewToolkit(datahubClient)
toolkit.Register(server,
    tools.ToolSearch,
    tools.ToolGetEntity,
    tools.ToolGetSchema,
)

Using the Client Directly

// Search for datasets
result, err := datahubClient.Search(ctx, "customers",
    client.WithEntityType("DATASET"),
    client.WithLimit(20),
)

// Get entity details
entity, err := datahubClient.GetEntity(ctx, "urn:li:dataset:...")

// Get schema
schema, err := datahubClient.GetSchema(ctx, "urn:li:dataset:...")

// Get lineage
lineage, err := datahubClient.GetLineage(ctx, "urn:li:dataset:...",
    client.WithDirection("UPSTREAM"),
    client.WithDepth(2),
)

With Custom Configuration

toolkit := tools.NewToolkit(datahubClient, tools.Config{
    DefaultLimit:    20,
    MaxLimit:        50,
    MaxLineageDepth: 3,
})

Next Steps