Official Go implementation of the UTCP
# Add to your Claude Code skills
git clone https://github.com/universal-tool-calling-protocol/go-utcp
The Universal Tool Calling Protocol (UTCP) is a modern, flexible, and scalable standard for defining and interacting with tools across a wide variety of communication protocols. It is designed to be easy to use, interoperable, and extensible, making it a powerful choice for building and consuming tool-based services.
In contrast to other protocols like MCP, UTCP places a strong emphasis on:
.env files using
UtcpDotEnv.No comments yet. Be the first to share your thoughts!
OpenApiConverterexamples directory.Each subdirectory under examples/ is a standalone Go module demonstrating a client or transport. For an overview of available examples and usage instructions, see examples/README.md. When
building or running an example from this repository, disable the
workspace to ensure Go uses the module's own go.mod:
GOWORK=off go run ./examples/cli_transport
Add the library to your project with:
go get github.com/universal-tool-calling-protocol/go-utcp@latest
You can then construct a client and call tools using any of the built-in transports. The library ships transports for HTTP, Server-Sent Events, streaming HTTP, CLI, WebSocket, gRPC, GraphQL, TCP, UDP, WebRTC and MCP providers.
package main
import (
"context"
"fmt"
"os"
"time"
utcp "github.com/universal-tool-calling-protocol/go-utcp"
)
func main() {
ctx := context.Background()
cfg := &utcp.UtcpClientConfig{
ProvidersFilePath: "providers.json",
}
fmt.Println("Creating UTCP client...")
client, err := utcp.NewUTCPClient(ctx, cfg, nil, nil)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to create UTCP client: %v\n", err)
os.Exit(1)
}
...