✨ From vibe coding to vibe deployment. UBOS MCP turns ideas into infra with one message.

Learn more

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:

    • Go to https://www.notion.so/my-integrations
    • Create a new integration
    • Copy the “Internal Integration Token”
    • Add this token as your NOTION_API_KEY in the .env file
  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

Featured Templates

View More

Start your free trial

Build your solution today. No credit card required.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.