Notion MCP Server
README.md
# Notion MCP-Server
Ein [Model Context Protocol (MCP)](https://modelcontextprotocol.io)-Server, der **Notion mit Claude verbindet** – für Claude Desktop, Claude Code und jeden anderen MCP-fähigen Client.
Damit kann Claude direkt in deinem Notion-Workspace suchen, Seiten lesen und erstellen, Datenbanken abfragen und Inhalte bearbeiten.
## Funktionen (Tools)
| Tool | Beschreibung |
|---|---|
| `notion_search` | Workspace nach Seiten und Datenbanken durchsuchen |
| `notion_get_page` | Metadaten und Properties einer Seite abrufen |
| `notion_get_page_content` | Seiteninhalt als Markdown lesen (inkl. verschachtelter Blöcke) |
| `notion_create_page` | Neue Seite erstellen (als Unterseite oder Datenbank-Eintrag), Inhalt als Markdown |
| `notion_append_content` | Markdown-Inhalt an eine bestehende Seite anhängen |
| `notion_update_page` | Properties ändern, Seite archivieren/wiederherstellen |
| `notion_get_database` | Schema einer Datenbank abrufen (Properties, Optionen) |
| `notion_query_database` | Datenbank-Einträge abfragen (mit Filter und Sortierung) |
| `notion_create_database` | Neue Datenbank unter einer Seite anlegen |
| `notion_add_comment` | Kommentar zu einer Seite hinzufügen |
| `notion_get_comments` | Kommentare einer Seite lesen |
| `notion_list_users` | Benutzer des Workspace auflisten |
Alle Tools akzeptieren sowohl Notion-IDs als auch vollständige Notion-URLs.
## Voraussetzungen
- Node.js 18 oder neuer
- Ein Notion-Konto mit einem Workspace
## 1. Notion-Integration erstellen
1. Öffne <https://www.notion.so/profile/integrations>
2. Klicke auf **„Neue Integration“** und gib ihr einen Namen (z. B. „Claude“)
3. Wähle deinen Workspace aus und speichere
4. Kopiere den **Internal Integration Token** (beginnt mit `ntn_` oder `secret_`)
**Wichtig:** Die Integration sieht nur Seiten, die du explizit freigibst. Öffne dazu in Notion die gewünschte Seite (oder eine übergeordnete Seite), klicke oben rechts auf **`···` → Verbindungen → Verbindung hinzufügen** und wähle deine Integration aus. Unterseiten erben die Freigabe automatisch.
## 2. Server installieren und bauen
```bash
git clone https://github.com/loberkehr-art/Code-mcp-Notion-.git
cd Code-mcp-Notion-
npm install
npm run build
```
## 3. Mit Claude verbinden
### Claude Desktop
Trage den Server in die Konfigurationsdatei ein:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["/absoluter/pfad/zu/Code-mcp-Notion-/dist/index.js"],
"env": {
"NOTION_API_KEY": "ntn_dein_token_hier"
}
}
}
}
```
Danach Claude Desktop neu starten. Die Notion-Tools erscheinen im Tool-Menü (🔨).
### Claude Code (CLI)
```bash
claude mcp add notion \
--env NOTION_API_KEY=ntn_dein_token_hier \
-- node /absoluter/pfad/zu/Code-mcp-Notion-/dist/index.js
```
## Beispiele
Sobald der Server verbunden ist, kannst du Claude z. B. bitten:
- *„Suche in Notion nach meinen Meeting-Notizen“*
- *„Lies die Seite ‚Projektplan‘ und fasse sie zusammen“*
- *„Erstelle in der Aufgaben-Datenbank einen Eintrag ‚Steuererklärung‘ mit Status ‚Offen‘“*
- *„Zeige alle Einträge der Datenbank, deren Status ‚In Arbeit‘ ist“*
- *„Hänge diese Zusammenfassung an meine Wochennotizen an“*
## Entwicklung
```bash
npm run dev # Server direkt aus TypeScript starten (tsx)
npm run watch # TypeScript im Watch-Modus kompilieren
```
Der Server kommuniziert über **stdio** (Standard-Ein-/Ausgabe) und loggt Statusmeldungen nach stderr, damit das MCP-Protokoll auf stdout ungestört bleibt.
### Projektstruktur
```
src/
├── index.ts # MCP-Server und Tool-Definitionen
├── markdown.ts # Konvertierung Markdown ⇄ Notion-Blöcke
└── properties.ts # Lesen und Schreiben von Seiten-Properties
```
## Hinweise & Grenzen
- Die Notion-API erlaubt maximal 100 Blöcke pro Schreibvorgang – längere Inhalte werden automatisch in mehreren Aufrufen angehängt.
- Neue Seiten können nur unterhalb einer bestehenden Seite oder Datenbank angelegt werden (API-Einschränkung von Notion).
- Berechnete Property-Typen (`formula`, `rollup`, `created_time`, …) sind nur lesbar, nicht beschreibbar.
- Der Token gehört in die Umgebungsvariable `NOTION_API_KEY` – niemals ins Repository committen (`.env` ist in `.gitignore`).
## Lizenz
MIT
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues