MCP
The mcp module provides a Go equivalent of createMCPClient and converts MCP tools into provider.Tool for the tool-loop agent.
Install
go get github.com/iamanishx/go-ai/mcpCreate MCP Client (Stdio)
import ( "context" "os"
"github.com/iamanishx/go-ai/mcp")
ctx := context.Background()
client, err := mcp.CreateMCPClient(ctx, mcp.MCPClientConfig{ Transport: mcp.NewStdioClientTransport(mcp.StdioConfig{ Command: "npx", Args: []string{ "-y", "@modelcontextprotocol/server-filesystem", ".", }, Stderr: os.Stderr, }),})if err != nil { panic(err)}defer client.Close()Create MCP Client (SSE)
client, err := mcp.CreateMCPClient(ctx, mcp.MCPClientConfig{ Transport: mcp.NewSSEClientTransport(mcp.SSETransportConfig{ URL: "https://your-server.com/sse", }),})Create MCP Client (HTTP)
client, err := mcp.CreateMCPClient(ctx, mcp.MCPClientConfig{ Transport: mcp.NewHTTPClientTransport(mcp.HTTPTransportConfig{ URL: "https://your-server.com/mcp", }),})Use MCP Tools with Agent
mcpToolsMap, err := client.Tools(ctx)if err != nil { panic(err)}
tools := make([]provider.Tool, 0, len(mcpToolsMap))for _, t := range mcpToolsMap { tools = append(tools, t)}
toolAgent := agent.CreateToolLoopAgent(agent.ToolLoopAgentSettings{ Model: chatModel, Tools: tools, ExecuteTools: true, MaxSteps: 10,})Available Client Methods
Tools(ctx)ListTools(ctx, cursor)ToolsFromDefinitions(defs)ListResources(ctx, cursor)ReadResource(ctx, uri)ListResourceTemplates(ctx, cursor)ListPrompts(ctx, cursor)GetPrompt(ctx, name, args)Close()