- 16,200lines in the weather-intelligence MCP server
- 9public data-service clients behind both surfaces
- 12,400lines of TypeScript plugins on an unmodified chat server
- 6,500lines in the vendor event intake, tests and migrations included
One MCP server, sized for two kinds of client
Auth and access plane includes a product I built to learn what an enterprise agent platform needs from an MCP server: a weather-intelligence server on Express 5 and the official MCP TypeScript SDK. I gave it two surfaces. Desktop assistants get the full set over the local stdio transport; Microsoft Copilot Studio gets a trimmed set over Streamable HTTP, with the session header its connector expects, because that platform copes poorly with large catalogs.
I later ported it to C# on the official .NET MCP SDK.
Building the same server on two official SDKs showed me which decisions were mine and which were the SDK's.
Living inside the tools people already use
Helix needed to live inside the tools people already use. I wrote a Teams admin tab in React and Fluent UI so an administrator manages the digital employee from inside Teams. The multi-model workspace runs on an unmodified open-source team chat server; its behaviour, including the council view where models deliberate and ratify, lives in plugins, TypeScript alongside 11,000 lines of JavaScript, so I never had to fork the server and upstream upgrades stay open. A Node relay with twenty tests serves the meeting-stage app the digital employee presents through.
Vendor events, stored before they are acknowledged
FAFOHive receives vendor events for governed agent teams, and I wanted that intake on the platform the vendors' own examples use. It is a TypeScript service on Node and PostgreSQL. It checks each vendor's signature over the raw bytes before any parsing, stores the event before acknowledging it, works out which governed assignment caused it, and freezes events into delivery batches with stable keys, so a retried delivery is recognised as the same batch and a team's mailbox receives each batch once. Thin per-vendor edge workers sit in front. See Agents with real tools and no keys.
I pick TypeScript where the surrounding platform lives in it, Node services, web plugins and Microsoft's client surfaces, and keep system cores in Rust. The weather data comes from public services and the chat server is open source; the tool design, plugins, event handling and packaging are mine.