How I built the Appwrite MCP server (and decided to hide most of its capabilities) Appwrite's engineering team, led by Christy and including intern Matej, built an MCP server that initially supported only stdio transport, then added a hosted version with OAuth-based authorization. The team implemented RFC 9728, RFC 8707, and RFC 7591 to secure the server, but discovered that clients interpreted the specs differently, requiring a logging proxy to debug. They also chose to skip session management, which proved correct as the protocol later removed sessions. When Anthropic introduced the Model Context Protocol on November 25, 2024, it got everyone's eyes on it, including Christy, who was Appwrite's Engineering Lead back then. I had just started my role as an "Engineering Intern" and had no idea what a whole new protocol meant, or why it was such a big deal. Looking at the surface, I wasn't entirely wrong. MCP is JSON-RPC with a schema and a handshake stapled on. What took us sixteen months was everything stapled around it. Streamable HTTP did not exist when MCP launched. It replaced HTTP+SSE in the 2025-03-26 revision. Christy had a working stdio server in the repo by February 26, 2025. We already had API keys, so the wiring was simple: claude mcp add appwrite \ --env APPWRITE PROJECT ID=