Quick Start¶
Get started with mcp-datahub as a Go library in minutes.
Installation¶
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,
})