snowan/notion-mcp-server
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).
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
- Clone this repository:
git clone https://github.com/yourusername/notion-mcp-server.git
cd notion-mcp-server
- Install dependencies:
npm install
- 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
-
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
-
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