# MCP HTTP Example This example demonstrates how to use the Model Context Protocol (MCP) over HTTP using the streamable transport. It includes both a server and client implementation. ## Overview The example implements: - A server that provides a `cityTime` tool - A client that connects to the server, lists available tools, and calls the `cityTime` tool ## Usage Start the Server ```bash go run main.go server ``` This starts an MCP server on `http://localhost:8080` (default) that provides a `cityTime` tool. To run a client in another terminal: ```bash go run main.go client ``` The client will: 1. Connect to the server 2. List available tools 3. Call the `cityTime` tool for NYC, San Francisco, and Boston 4. Display the results At any given time you can pass a custom URL to the program to run it on a custom host/port: ``` go run main.go -host 0.0.0.0 -port 9000 server ``` ## Testing with real-world MCP Clients Once the server is started, assuming it's the default localhost:8080, you can try to add it to a popular MCP client: claude mcp add -t http timezone http://localhost:8080 Once added, Claude Code will be able to discover and use the `cityTime` tool provided by this server. In Claude Code: > what's the timezone ⏺ I'll get the current time in a major US city for you. ⏺ timezone - cityTime (MCP)(city: "nyc") ⎿ The current time in New York City is 7:30:16 PM EDT on Wedn esday, July 23, 2025 ⏺ The current timezone is EDT (Eastern Daylight Time), and it's 7:30 PM on Wednesday, July 23, 2025. > what timezones do you support? ⏺ The timezone tool supports three US cities: - NYC (Eastern Time) - SF (Pacific Time) - Boston (Eastern Time)