MCP Toolbox for Databases
MCP Toolbox for Databases is an open source MCP server for databases that provides advanced security features like Authenticated parameters, Authorized tool calls and more. It was designed with enterprise-grade and production-quality in mind. It enables you to develop tools easier, faster, and more securely by handling the complexities such as connection pooling, authentication, and more.
Toolbox Tools can be seamlessly integrated with Genkit applications. For more information on getting started or configuring Toolbox, see the documentation.
Configure and deploy
Section titled “Configure and deploy”Toolbox is an open source server that you deploy and manage yourself. For more instructions on deploying and configuring, see the official Toolbox documentation:
Install client SDK
Section titled “Install client SDK”Genkit relies on the mcp-toolbox-sdk-go
Go module to use Toolbox. Install the
module before getting started:
go get github.com/googleapis/mcp-toolbox-sdk-go
Loading Toolbox Tools
Section titled “Loading Toolbox Tools”Once your Toolbox server is configured and up and running, you can load tools from your server:
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() // Replace with your Toolbox Server URL url := "http://127.0.0.1:5000" toolboxClient, err := core.NewToolboxClient(url) 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\n", err) }
g, err := genkit.Init(ctx, genkit.WithPlugins(&googlegenai.GoogleAI{}), genkit.WithDefaultModel("googleai/gemini-1.5-flash"), ) if err != nil { log.Fatalf("Failed to init genkit: %v\n", err) }
// 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 }
resp, err := genkit.Generate(ctx, g, ai.WithPrompt("Ask some question"), ai.WithTools(toolRefs...), ) if err != nil { log.Fatalf("%v\n", err) } fmt.Println(resp.Text())}
Advanced Toolbox Features
Section titled “Advanced Toolbox Features”Toolbox has a variety of features to make developing Gen AI tools for databases. For more information, read more about the following features:
- Authenticated Parameters: bind tool inputs to values from OIDC tokens automatically, making it easy to run sensitive queries without potentially leaking data
- Authorized Invocations: restrict access to use a tool based on the users Auth token
- OpenTelemetry: get metrics and tracing from Toolbox with OpenTelemetry