An interactive chatbot MCP client: it launches an MCP server over stdio, lists its tools, and hands them to Claude, which can call them while answering your questions.
This example accompanies the Build an MCP client tutorial.
- Go 1.25+
- An Anthropic API key (optional — see below)
Put your API key in a .env file (or export ANTHROPIC_API_KEY in your shell — the .env file is optional):
cp .env.example .env
# then edit .env and add your keyPass the command that starts the server — a binary or an interpreter plus its arguments:
go run main.go ../weather-server-go/weather(Build the server first with go build -o weather in its directory.) Any server command works, for example the Python server:
go run main.go uv --directory ../weather-server-python run weather.pyType a question (for example, "What's the weather in Sacramento?") and Claude answers using the server's tools. Type quit to exit.
Without an ANTHROPIC_API_KEY, the client still connects, prints the server's tools, and exits — useful for verifying the MCP wiring without credentials.
The SDK does not validate tool output, so this client compiles each declared outputSchema at connect time and checks results against it — the spec's client-side SHOULD. It uses jsonschema-go, already an SDK dependency.
The two channels go to different readers: Content is forwarded to the model, while StructuredContent is used as data — the client counts the items it returns. See Structured Content.