Genkit Package
MCP Toolbox Genkit for integrating functionalities of MCP Toolbox into your Agentic apps.
Overview
The tbgenkit package provides a Go interface to the MCP Toolbox service, enabling you to load and invoke tools from your own applications.
Installation
go get github.com/googleapis/mcp-toolbox-sdk-go/tbgenkit
This SDK is supported on Go version 1.24.4 and higher.
Note
Breaking Change Notice: As of version 0.6.0, this repository has transitioned to a multi-module structure.
- For new versions (
v0.6.0+): You must import specific modules (e.g.,go get github.com/googleapis/mcp-toolbox-sdk-go/tbgenkit). - For older versions (
v0.5.1and below): The repository remains a single-module library (go get github.com/googleapis/mcp-toolbox-sdk-go). - Please update your imports and
go.modaccordingly when upgrading.
Quickstart
For more information on how to load a ToolboxTool, see the core package
Convert Toolbox Tool to a Genkit Tool
"github.com/googleapis/mcp-toolbox-sdk-go/tbgenkit"
func main() {
// Assuming the toolbox tool is loaded
// Make sure to add error checks for debugging
ctx := context.Background()
g, err := genkit.Init(ctx)
genkitTool, err := tbgenkit.ToGenkitTool(toolboxTool, g)
}
Using with Orchestration Frameworks
To see how the MCP Toolbox Go SDK works with orchestration frameworks, check out these end-to-end examples given below.
Genkit Go
//This sample contains a complete example on how to integrate MCP Toolbox Go SDK with Genkit Go using the tbgenkit package.
package main
import (
"context"
"fmt"
"log"
"github.com/googleapis/mcp-toolbox-sdk-go/core"
"github.com/googleapis/mcp-toolbox-sdk-go/tbgenkit"
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/genkit"
"github.com/firebase/genkit/go/plugins/googlegenai"
)
func main() {
ctx := context.Background()
toolboxClient, err := core.NewToolboxClient("http://127.0.0.1:5000")
if err != nil {
log.Fatalf("Failed to create Toolbox client: %v", err)
}
// Load the tools using the MCP Toolbox SDK.
tools, err := toolboxClient.LoadToolset("my-toolset", ctx)
if err != nil {
log.Fatalf("Failed to load tools: %v\nMake sure your Toolbox server is running and the tool is configured.", err)
}
// Initialize genkit
g := genkit.Init(ctx,
genkit.WithPlugins(&googlegenai.GoogleAI{}),
genkit.WithDefaultModel("googleai/gemini-1.5-flash"),
)
// Convert your tool to a Genkit tool.
genkitTools := make([]ai.Tool, len(tools))
for i, tool := range tools {
newTool, err := tbgenkit.ToGenkitTool(tool, g)
if err != nil {
log.Fatalf("Failed to convert tool: %v\n", err)
}
genkitTools[i] = newTool
}
toolRefs := make([]ai.ToolRef, len(genkitTools))
for i, tool := range genkitTools {
toolRefs[i] = tool
}
// Generate llm response using prompts and tools.
resp, err := genkit.Generate(ctx, g,
ai.WithPrompt("Find hotels in Basel with Basel in it's name."),
ai.WithTools(toolRefs...),
)
if err != nil {
log.Fatalf("%v\n", err)
}
fmt.Println(resp.Text())
}