Inspiration

Customers and small importers often wait on hold just to ask where a shipment is. A voice assistant that can call a shipment tool answers in seconds.

What it does

ShipTalk is a self-hosted MCP server (Streamable HTTP, protocol 2025-11-25) with four tools: track a shipment, list at-risk shipments, explain a delay, and draft a customer update. A web page acts as a simulated Alexa+-style assistant. It is a real MCP client that sends initialize, tools/list and tools/call to the server, then shows the spoken-style answer, a shipment timeline and the raw JSON-RPC traffic. All data is mock data.

How I built it

TypeScript, Express 5, the MCP TypeScript SDK and zod for input validation, developed in GitHub Codespaces. The server checks Origin (403) and MCP-Protocol-Version (400), and runs stateless in JSON mode. An automated smoke test runs 13 protocol and tool checks. An Agent Skill in the repo tells an assistant when and how to call the tools.

Challenges

Real Alexa+ add-on tooling is limited to select partners, so I built my own web MCP client to demonstrate the server. Browser speech recognition depends on a cloud service, so typing is the reliable input.

What I learned

How the MCP handshake and Streamable HTTP work, and how to write tool answers that sound natural when read aloud. Tool calls took 4-19 ms server-side and about 135-166 ms from the browser.

What's next

OAuth for real deployments, MCP Apps for on-screen visuals, and a real carrier data source.

Built With

Share this project:

Updates

Submission history