Notion MCP Server
A server that connects to the Notion API and exposes functionality through Claude's Machine Context Protocol, enabling search, retrieval, querying, and creation of Notion pages and databases.
README Documentation
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