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.1 and below): The repository remains a single-module library (go get github.com/googleapis/mcp-toolbox-sdk-go).
  • Please update your imports and go.mod accordingly 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())
}