Notion Weaver
Enables AI workflows to integrate with Notion workspaces, supporting page and database creation, queries with filters and sorting, content updates, and workspace-wide search operations.
README
Notion Weaver
A production-ready Model Context Protocol (MCP) server for Notion workspace automation. Seamlessly integrate Notion into your AI workflows with full TypeScript support.
Features
-
6 Powerful Tools: Complete Notion API coverage
create_page- Create new pages in databases or as child pagescreate_database- Create new databases with custom schemasquery_database- Query databases with filters and sortingupdate_page- Update page properties and contentget_page- Retrieve specific pages by IDsearch_content- Search across your entire workspace
-
Type-Safe: Full TypeScript strict mode implementation
-
Production-Ready: Comprehensive error handling and validation
-
Standards-Compliant: Implements MCP JSON-RPC 2.0 protocol
-
Well-Documented: Extensive examples and setup guides
Installation
npm install notion-weaver
Or clone and build from source:
git clone https://github.com/consigcody94/notion-weaver.git
cd notion-weaver
npm install
npm run build
Setup
1. Get Your Notion API Key
- Go to Notion Integrations
- Click "+ New integration"
- Name your integration and select the workspace
- Copy the "Internal Integration Token"
2. Share Pages/Databases with Your Integration
- Open the Notion page or database you want to access
- Click the "..." menu in the top right
- Scroll to "Add connections"
- Select your integration
3. Configure Environment Variable
export NOTION_API_KEY="your_integration_token_here"
For persistent configuration, add to your shell profile (~/.bashrc, ~/.zshrc, etc.):
echo 'export NOTION_API_KEY="your_integration_token_here"' >> ~/.bashrc
source ~/.bashrc
Configuration for Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"notion-weaver": {
"command": "node",
"args": ["/path/to/notion-weaver/dist/index.js"],
"env": {
"NOTION_API_KEY": "your_integration_token_here"
}
}
}
}
Or if installed globally:
{
"mcpServers": {
"notion-weaver": {
"command": "notion-weaver",
"env": {
"NOTION_API_KEY": "your_integration_token_here"
}
}
}
}
Usage Examples
Create a Page
// In a database
{
"tool": "create_page",
"arguments": {
"parent_database_id": "abc123...",
"title": "New Project",
"content": "Project description goes here"
}
}
// As a child page
{
"tool": "create_page",
"arguments": {
"parent_page_id": "xyz789...",
"title": "Meeting Notes",
"content": "Discussion points..."
}
}
Create a Database
{
"tool": "create_database",
"arguments": {
"parent_page_id": "xyz789...",
"title": "Task Tracker",
"properties": {
"Name": { "title": {} },
"Status": {
"select": {
"options": [
{ "name": "Not Started", "color": "red" },
{ "name": "In Progress", "color": "yellow" },
{ "name": "Complete", "color": "green" }
]
}
},
"Due Date": { "date": {} }
}
}
}
Query a Database
{
"tool": "query_database",
"arguments": {
"database_id": "abc123...",
"filter": {
"property": "Status",
"select": {
"equals": "In Progress"
}
},
"sorts": [
{
"property": "Due Date",
"direction": "ascending"
}
]
}
}
Update a Page
{
"tool": "update_page",
"arguments": {
"page_id": "page123...",
"properties": {
"Status": {
"select": {
"name": "Complete"
}
}
}
}
}
Get a Page
{
"tool": "get_page",
"arguments": {
"page_id": "page123..."
}
}
Search Content
{
"tool": "search_content",
"arguments": {
"query": "project requirements",
"filter": {
"property": "object",
"value": "page"
}
}
}
Finding Page and Database IDs
From URL
When viewing a page or database in Notion, the ID is in the URL:
https://www.notion.so/My-Page-abc123def456...
^----- This is the ID
Using search_content
Search for pages/databases by title:
{
"tool": "search_content",
"arguments": {
"query": "My Database Name"
}
}
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch mode for development
npm run watch
Requirements
- Node.js >= 18.0.0
- Notion API Key
- TypeScript 5.7+
Security
- Never commit your
NOTION_API_KEYto version control - Use environment variables for sensitive credentials
- Regularly rotate your API keys
- Limit integration permissions to only required pages/databases
Troubleshooting
"Error: NOTION_API_KEY environment variable is required"
- Ensure you've set the
NOTION_API_KEYenvironment variable - Check that the variable is available in the process environment
"Object not found" errors
- Verify the page/database ID is correct
- Ensure your integration has been added to the page/database
- Check that the page/database hasn't been deleted
"Validation failed" errors
- Verify property types match the database schema
- Check that required properties are included
- Ensure property names are spelled correctly
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
MIT License - see LICENSE file for details.
Links
Support
For bugs and feature requests, please use GitHub Issues.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Neon Database
MCP server for interacting with Neon Management API and databases