Model Context Protocol (MCP) is one of the most common ways to extend the functionality of LLMs. If you want Claude to be able to automatically mark completed tasks as closed in Linear or want Codex to pull issue comments from a GitHub repo, that’s where MCP comes in. But basic MCP tools only support returning structured data, typically JSON or text, and the LLM decides how to interpret and present the structured data.

MCP apps allow your MCP tools to render HTML - you can render tables, charts, maps, or even a full web application. In this post, we’ll build a couple of simple MCP apps in Node.js using the official SDK and connect it to Claude - focusing on minimal examples just to get something working end-to-end.