Simple Notion MCP Server

by larryhudson

157 downloads
Not rated
GitHub

About

Notion MCP server that uses Markdown for better LLM support

Details

Author
larryhudson
Downloads
157
Categories
Knowledge Base

- Converts Notion pages to clean, readable Markdown format.
- Preserves rich text formatting (bold, italic, strikethrough, code).
- Retrieves page metadata and all blocks recursively.
- Built with TypeScript, MCP, and the official Notion API Client.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Simple Notion MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Create a Notion integration at https://www.notion.so/my-integrations and obtain an API token. Set the token as the NOTION_TOKEN environment variable or in a .env file. Share any Notion pages you want to access with your integration. Then configure your MCP-compatible application (VS Code, Claude, etc.) to run the server via npx -y @larryhudson/simple-notion-mcp-server with the token. Use the get_page tool with a page_id parameter to retrieve and render a page as Markdown.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "simple notion mcp server": {
            "simple-notion-mcp-server": {
                "command": "npx",
                "args": [
                    "@modelcontextprotocol/inspector",
                    "npx",
                    "tsx",
                    "src/index.ts"
                ]
            }
        }
    }
}

McpServers

{
    "simple-notion-mcp-server": {
        "command": "npx",
        "args": [
            "@modelcontextprotocol/inspector",
            "npx",
            "tsx",
            "src/index.ts"
        ]
    }
}

Simple Notion MCP Server

Overview

This project implements a Model Context Protocol (MCP) server that acts as a bridge between AI assistants and the Notion API. Unlike the official Notion MCP server which returns large JSON blobs, this server renders Notion pages as Markdown, making them much more efficient for LLMs to process and understand.

Features

- Markdown Rendering: Converts Notion pages to clean, readable Markdown format
- Rich Text Support: Preserves formatting for bold, italic, strikethrough, and code elements

Setup

1. Create a Notion integration and get an API token from https://www.notion.so/my-integrations
2. Set the token as an environment variable:

export NOTION_TOKEN=your-notion-api-token

Alternatively, you can create a .env file in your project with:

NOTION_TOKEN=your-notion-api-token

3. Make sure to share any Notion pages you want to access with your integration

Usage

Using with VS Code

Add this to your settings JSON file:

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "notion_token",
        "description": "Notion API Token",
        "password": true
      }
    ],
    "servers": {
      "notion": {
        "command": "npx",
        "args": [
          "-y",
          "@larryhudson/simple-notion-mcp-server"
        ],
        "env": {
          "NOTION_TOKEN": "${input:notion_token}"
        }
      }
    }
  }
}

Using with Claude or other MCP-compatible applications

Add this to your MCP configuration JSON file:

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@larryhudson/simple-notion-mcp-server"],
      "env": {
        "NOTION_TOKEN": "<YOUR_NOTION_API_TOKEN>"
      }
    }
  }
}

Available Tools

get_page

Retrieves a Notion page by ID and renders it as Markdown.

Parameters:
- page_id: The ID of the Notion page to retrieve

Example:

{
"page_id": "83c75a5b7a324be29d454536f2345678"
}

How It Works

The server processes Notion pages through these steps:

1. Fetches page metadata using the Notion API
2. Retrieves all blocks from the page (with recursive fetching of child blocks)
3. Formats blocks into Markdown, maintaining structure and formatting
4. Returns a clean Markdown representation of the page

Technical Details

Built with:
- Model Context Protocol (MCP): Framework for allowing AI assistants to interact with external tools
- Notion API Client: Official client for communicating with Notion
- TypeScript: For type safety and better developer experience

Development

You can use the Model Context Protocol inspector to try out the server:

npx @modelcontextprotocol/inspector npx tsx src/index.ts

Limitations and Future Improvements

- Currently only supports retrieving pages (not updating or creating)
- Image handling could be improved in future updates (e.g. rendering images as base64 image blocks)

License

MIT

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.