I built this because I wanted to give Claude Desktop access to my Notion workspace without running a flaky local Python script via stdio.
This is a Node.js/Express implementation of the Model Context Protocol (MCP) that uses SSE (Server-Sent Events) for transport. It’s designed to be stateless and deployable as a container (I'm hosting it on Apify, but it works anywhere with Node).
The Stack:
TypeScript + Express
@modelcontextprotocol/sdk
Zod for input validation
Bearer Auth for security (since it exposes an HTTP endpoint)
Capabilities: It allows the LLM to search pages, read database properties, and append blocks. I use it primarily to have Cursor/Claude summarize documentation and create tasks in my sprint board directly from the chat context.
Repo: https://github.com/piskunproject/notion-mcp-server/ One-click deploy (Apify): https://apify.com/piskunlab/notion-mcp-server
Feedback on the SSE implementation is welcome!