notion-mcp-server

snowan/notion-mcp-server

3.2

If you are the rightful owner of notion-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A server that connects to the Notion API and exposes functionality through Claude's Machine Context Protocol (MCP).

Tools
4
Resources
0
Prompts
0

Notion MCP Server

A server that connects to the Notion API and exposes functionality through Claude's Machine Context Protocol (MCP).

Features

  • Search Notion pages by title or content
  • Retrieve page details and content
  • Query Notion databases
  • Create new pages in Notion

Setup

  1. Clone this repository:
git clone https://github.com/yourusername/notion-mcp-server.git
cd notion-mcp-server
  1. Install dependencies:
npm install
  1. Create a .env file in the root directory with the following content:
NOTION_API_KEY=your_notion_api_key_here
PORT=3000
# Optional: if you want to query a specific database by default
NOTION_DATABASE_ID=your_notion_database_id_here
  1. Get your Notion API key:

  2. Connect your Notion integration to your workspace:

    • Go to a page or database in your Notion workspace
    • Click the "..." menu in the top right
    • Select "Add connections"
    • Find and add your integration

Running the Server

Start the server in development mode:

npm run dev

Or in production mode:

npm start

The server will run on the port specified in your .env file (default: 3000).

API Endpoints

Regular HTTP Endpoints

  • POST /api/notion/search

    • Search for pages in Notion
    • Body: { "query": "search term" }
  • POST /api/notion/page

    • Get a page by ID
    • Body: { "page_id": "page-id-here" }
  • POST /api/notion/database/query

    • Query a database
    • Body: { "database_id": "database-id-here", "filter": {}, "sorts": [] }
  • POST /api/notion/page/create

    • Create a new page
    • Body: { "parent": {}, "properties": {}, "children": [] }

MCP Integration

The server exposes an MCP manifest at /mcp/manifest.json which describes the available functions.

To invoke an MCP function, send a POST request to /api/notion/mcp/invoke with the following structure:

{
  "function_name": "search_pages",
  "parameters": {
    "query": "search term"
  }
}

Available MCP Functions

  • search_pages - Search Notion pages by title or content
  • get_page - Get a Notion page by ID
  • query_database - Query a Notion database
  • create_page - Create a new page in Notion

License

MIT