home / mcp / notion mcp server
Provides a Notion-integrated MCP server that enables page and database operations via MCP clients.
Configuration
View docs{
"mcpServers": {
"v-3-notion-server": {
"command": "node",
"args": [
"/absolute/path/to/notion-server/build/index.js"
],
"env": {
"NOTION_API_KEY": "your_notion_api_key_here"
}
}
}
}The Notion MCP Server lets you connect a compatible MCP client to your Notion workspace, enabling search, read, create, update, and collaboration features via standardized tools. It provides rich Markdown support and database interactions so you can automate and extend Notion directly from your MCP client.
You can interact with Notion through your MCP client by performing page and database operations. Use search to locate pages, read content with clean formatting, create pages with Markdown, and update existing pages or blocks. You can add and fetch comments, and perform block-level updates or deletions. For databases, you can create and manage databases, add or update items, and query with filters and sorts using supported property types like Title, Rich text, Number, Date, Checkbox, Select, and Multi-select.
Prerequisites you need before installing are Node.js v16 or higher and a Notion API key. You will also want a compatible MCP client (for example Claude Desktop) to connect to the server.
Step-by-step commands to set up the server locally:
# 1) Clone the repository
git clone https://github.com/v-3/notion-server.git
cd notion-server
# 2) Install dependencies
npm install
# 3) Set up your environment
# Create .env file
echo "NOTION_API_KEY=your_notion_api_key_here" > .env
# Or export directly
export NOTION_API_KEY=your_notion_api_key_here
# 4) Build the server
npm run buildConfigure your MCP client to use the local Notion MCP server by pointing it to the build output. The server is started via Node and runs from the built index file.
# Claude Desktop setup example
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["/absolute/path/to/notion-server/build/index.js"],
"env": {
"NOTION_API_KEY": "your_notion_api_key_here"
}
}
}
}Create a Page
const result = await notion.create_page({
parentPageId: "page_id",
title: "My Page",
content: "# Welcome\nThis is a test page."
});Query a Database
const result = await notion.query_database({
databaseId: "db_id",
filter: {
property: "Status",
select: {
equals: "In Progress"
}
}
});Search Notion pages by a query string and return matching results.
Read page content by page ID and return formatted content with markdown support.
Create a new page under a specified parent page with optional markdown content and properties.
Update the content or properties of an existing page by page ID.
Add and retrieve comments on pages.
Perform block-level updates and deletions within a page.
Create a new database under a specified parent and define its properties.
Query a database with filters and sorting options.