Skip to main content
Glama

Notion MCP Server

A Model Context Protocol (MCP) server implementation for Notion integration, providing a standardized interface for interacting with Notion's API. Compatible with Claude Desktop and other MCP clients.

Features

  • List and query Notion databases

  • Create and update pages

  • Search across Notion workspace

  • Get database details and block children

  • Full async/await support with httpx

  • Type-safe with Pydantic v2 models

  • Proper error handling with detailed logging

  • Compatibility with MCP 1.6.0

Related MCP server: Notion MCP Server

Installation

  1. Clone the repository:

git clone https://github.com/ccabanillas/notion-mcp.git cd notion-mcp
  1. Create a virtual environment and install dependencies (using uv):

uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -e .

Alternatively, using standard venv:

python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -e .
  1. Create a .env file in the project root:

NOTION_API_KEY=your_notion_integration_token

Usage

  1. Test the server (it should run without errors):

python -m notion_mcp
  1. To use it with Claude Desktop, adjust your claude_desktop_config.json file (located at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{ "servers": { "notion-mcp": { "command": "/Users/username/Projects/notion-mcp/.venv/bin/python", "args": ["-m", "notion_mcp"], "cwd": "/Users/username/Projects/notion-mcp" } } }

Be sure to replace /Users/username/ with your actual home directory path.

Development

Project Structure

notion-mcp/ ├── src/ │ └── notion_mcp/ │ ├── models/ │ │ ├── __init__.py │ │ └── notion.py # Pydantic models for Notion objects │ ├── __init__.py │ ├── __main__.py # Entry point │ ├── client.py # Notion API client │ └── server.py # MCP server implementation ├── .env # Environment variables (add your Notion API key here) ├── .gitignore ├── pyproject.toml # Project dependencies └── README.md

Running Tests

pytest

Configuration

The server requires a Notion integration token. To set this up:

  1. Go to https://www.notion.so/my-integrations

  2. Create a new integration with appropriate capabilities (read/write as needed)

  3. Copy the integration token

  4. Add it to your .env file in the project root directory:

NOTION_API_KEY=your_notion_integration_token
  1. Share your Notion databases with the integration (from the database's "Share" menu)

Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

MIT License - Use at your own risk

Troubleshooting

Common Issues

  • Connection Errors: Make sure your Notion API key is correct and you have internet access

  • Permission Errors: Ensure your integration has been given access to the databases you're trying to access

  • Claude Desktop Integration: If Claude Desktop isn't connecting, check that your config path is correct and that the server is running without logging to stdout

Acknowledgments

  • Built to work with Claude Desktop and other MCP clients

  • Uses Notion's API (latest compatible version 2022-02-22)

  • MCP 1.6.0 compatibility maintained

  • Special thanks to danhilse, I referenced his notion-mcp-server project

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ccabanillas/notion-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server