GitHub - v-3/notion-server (original) (raw)

Notion MCP Server

A Model Context Protocol (MCP) server that provides seamless integration with Notion. This server enables Language Models to interact with your Notion workspace through standardized tools for searching, reading, creating, and updating pages and databases.

🌟 Key Features

Page Operations

Enhanced Markdown Support

Database Operations

🚀 Getting Started

Prerequisites

Installation

  1. Clone the repository:

git clone https://github.com/v-3/notion-server.git cd notion-server

  1. Install dependencies:
  2. 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

  1. Build the server:

🔧 Configuration

Claude Desktop Setup

  1. Update your Claude Desktop configuration (claude_desktop_config.json):

{ "mcpServers": { "notion": { "command": "node", "args": ["/absolute/path/to/notion-server/build/index.js"], "env": { "NOTION_API_KEY": "your_notion_api_key_here" } } } }

  1. Restart Claude Desktop to apply changes

🛠️ Available Tools

Page Operations

// Search pages { query: string // Search query }

// Read page { pageId: string // ID of the page to read }

// Create page { title?: string, // Page title content?: string, // Page content in markdown parentPageId: string // Parent page ID properties?: object // For database items }

// Update page { pageId: string, // Page ID to update content: string, // New content type?: string // Content type }

Database Operations

// Create database { parentPageId: string, title: string, properties: object }

// Query database { databaseId: string, filter?: object, sort?: object }

🔐 Setting Up Notion Access

Creating an Integration

  1. Visit Notion Integrations
  2. Click "New integration"
  3. Configure permissions:
    • Content: Read, Update, Insert
    • Comments: Read, Create
    • User Information: Read

Connecting Pages

  1. Open your Notion page
  2. Click "..." menu → "Connections"
  3. Add your integration
  4. Repeat for other pages as needed

📝 Usage Examples

Creating a Page

const result = await notion.create_page({ parentPageId: "page_id", title: "My Page", content: "# Welcome\nThis is a test page." });

Querying a Database

const result = await notion.query_database({ databaseId: "db_id", filter: { property: "Status", select: { equals: "In Progress" } } });

🤝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a Pull Request

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

This project has been significantly improved by sweir1/notion-server, who has made following updates:

To use sweir1's version, you can clone their repository:

git clone https://github.com/sweir1/notion-server.git