/ Annuaire / Playground / Notion
● Officiel makenotion 🔑 Nécessite votre clé

Notion

par makenotion · makenotion/notion-mcp-server

Donnez à votre agent un accès en lecture/écriture à la base de connaissances de votre équipe : recherche de spécifications, rédaction de pages, base de données CRUD, le tout dans un seul MCP.

Notion officielle MCP. Lit les pages, crée des blocs, interroge les bases de données, met à jour les propriétés. Transforme Notion en un deuxième cerveau auquel votre agent peut rechercher, résumer et ajouter des éléments : le moyen le plus propre de rendre les documents internes adressables par l'IA sans pipeline RAG séparé.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

notion.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ]
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ]
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ]
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ]
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "notion",
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "notion": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@notionhq/notion-mcp-server"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add notion -- npx -y @notionhq/notion-mcp-server

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : Notion

Demandez à un agent d'examiner votre PRD pour détecter les lacunes

👤 PM, responsables techniques ⏱ ~15 min intermediate

Quand l'utiliser : Vous avez rédigé une spécification et souhaitez une lecture critique avant de la partager avec l'ingénierie.

Prérequis
  • Notion de jeton d'intégration interne — notion.so/my-integrations → Nouvelle intégration → copier le secret
  • Page partagée avec l'intégration — Sur la page : ••• → Connexions → ajoutez votre intégration
Déroulement
  1. Récupérer le contenu de la page
    Lisez la page Notion à l'adresse <URL>. Résumez en 5 puces ce que propose cette spécification.✓ Copié
    → Résumé précis d'un paragraphe – prouve que l'agent l'a compris
  2. Trouver des zones sous-spécifiées
    Répertoriez tous les endroits où la spécification est vague : cas d'erreur manquants, comportement de périphérie non défini, propriété peu claire, pas de plan de déploiement, pas de mesure de réussite.✓ Copié
    → Liste d'espacement numérotée avec références de pages
  3. Projets de questions pour l'examen
    Convertissez ces lacunes en 5 à 10 questions spécifiques qu'un ingénieur réviseur poserait. Ajoutez-les à la page Notion en tant que nouvelle section « Questions ouvertes ».✓ Copié
    → Bloc de questions ajouté à la page

Résultat : Une spécification plus stricte et une section de questions ouvertes qui lancent les bonnes conversations avant la réunion d'examen.

Pièges
  • L'agent hallucine des détails qui ne figurent pas dans les spécifications — Dans l'invite, insistez : « signalez uniquement les lacunes ; » n'inventez pas de faits ; citer la section où se produit chaque lacune »
  • Les spécifications longues sont tronquées lors de la récupération — Utilisez retrieve_block_children page par page si la page comporte de nombreux blocs ; ne comptez pas sur un seul appel get_page
Combiner avec : linear

Générez automatiquement une page stand-up quotidienne à partir de Linear + GitHub

👤 Responsables d'ingénierie, scrum masters ⏱ ~10 min intermediate

Quand l'utiliser : Vous gérez une page stand-up Notion quotidienne et souhaitez qu'elle soit pré-remplie avec l'activité d'hier.

Prérequis
  • Une base de données Notion 'Standups' — Possède des propriétés : Date (date), Équipe (sélectionner), Statut (rich_text)
Déroulement
  1. Gather yesterday's activity
    From Linear, list issues moved to Done in the last 24h for ENG team. From GitHub, list merged PRs by our team.✓ Copié
    → Combined activity list
  2. Build the standup content
    Format as: Wins (shipped), In-flight (open PRs), Blockers (issues tagged 'blocked'), Today's focus (issues in-progress). Keep each section under 5 bullets.✓ Copié
    → Formatted block list
  3. Create the Notion page
    Create a new page in the Standups database. Date = today, Team = ENG, and paste the content as structured blocks (h2 per section).✓ Copié
    → Page URL returned

Résultat : Une page stand-up pré-remplie prête pour la synchronisation à 9 heures du matin permet d'économiser 15 minutes de brouillage.

Pièges
  • Database property names are case-sensitive and must match exactly — List properties with retrieve_database before first run and hardcode the exact keys
Combiner avec : linear · github

Build a Slack-ready Q&A bot over your Notion docs

👤 Ops leads, support managers ⏱ ~20 min intermediate

Quand l'utiliser : New hires keep asking the same questions. Your answers are already written in Notion — just not findable.

Prérequis
  • Onboarding docs live in a known Notion space — Share the parent page with the integration so all children inherit access
Déroulement
  1. Search the workspace
    Search Notion for pages matching: '[user question]'. Return top 5 page titles and URLs.✓ Copié
    → Ranked result list
  2. Read the most relevant
    For the top 2 matches, fetch full content. Quote the passages that answer the question.✓ Copié
    → Verbatim quotes + source URLs
  3. Answer with citations
    Answer the user's question in 2-3 sentences, grounded only in those quotes. End with: 'Source: <url>'. If the docs don't actually answer, say so.✓ Copié
    → Answer with citation or honest 'not in docs'

Résultat : Grounded answers that let people find their own way to the source doc — no more 'where is X?' in Slack.

Pièges
  • Agent fabricates a plausible answer when docs don't actually cover it — Explicit instruction: 'if the retrieved quotes don't answer the question, reply with I don't see this in our docs — no guesses'
  • Notion search is keyword-based, misses semantic matches — If results feel thin, pair with a proper RAG stack (embed Notion content into a vector DB)

Convert meeting notes into Linear issues

👤 Tech leads, PMs ⏱ ~10 min beginner

Quand l'utiliser : You took rough notes during a meeting in Notion. Now you need to extract the action items.

Prérequis
  • Linear MCP installed — See linear guide
Déroulement
  1. Read the meeting page
    Read the Notion page at <URL>. Extract every action item — anything phrased as 'X will do Y' or 'we should Z'.✓ Copié
    → List with owner if mentioned
  2. Confirm before creating
    Show me the action list. For each, propose a Linear title, team, and priority. Do not create yet.✓ Copié
    → Dry-run table for human review
  3. Create approved items
    Create Linear issues for items 1, 3, and 5. Link each back to the Notion meeting page.✓ Copié
    → Linear issue URLs returned

Résultat : Meeting actions that actually get tracked instead of lost in a Notion page no one revisits.

Pièges
  • Agent treats every informational bullet as an action — In the prompt: 'only items with a clear owner OR a deliverable — drop everything else'
Combiner avec : linear

Audit your Notion docs for staleness

👤 Docs leads, DevEx engineers ⏱ ~20 min intermediate

Quand l'utiliser : Quarterly cleanup — find docs that haven't been touched in 6+ months and likely lie.

Prérequis
  • A root page for the docs area — e.g., /Engineering/Docs — shared with the integration
Déroulement
  1. List child pages with timestamps
    List all descendant pages under the 'Engineering Docs' page. For each: title, URL, last_edited_time, last_edited_by.✓ Copié
    → Full inventory
  2. Filter to stale pages
    Filter to pages last edited more than 180 days ago. Group by top-level section.✓ Copié
    → Stale list per section
  3. Tag for review
    For each stale page, add a callout block at the top: '⚠ Needs review — last updated <date>. Ping <last-editor> to confirm.'✓ Copié
    → Pages updated with review banner

Résultat : A docs area where staleness is visible, not hidden — and owners get a nudge to either update or delete.

Pièges
  • Some pages are deliberately archival (ADRs, postmortems) and should NOT get the banner — Filter by tag or parent — exclude anything under /Archive or tagged 'historical'

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

notion + linear

Scaffold a Linear project from a Notion PRD

Read the Notion PRD at <URL>, extract deliverables, and create a matching Linear project with issues grouped by milestone.✓ Copié
notion + github

Keep a README in sync with a Notion design doc

Read the Notion page '<API Design>' and update the README.md in our api repo to match — open a PR with the diff.✓ Copié
notion + sentry

Post weekly engineering quality reports to a Notion database

Pull this week's Sentry error stats per project and create a new page in the Notion 'Weekly Quality' database.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
search query, filter?: {property, value} Discovery — find pages by keyword across the workspace 1 API call
retrieve_page page_id Get page metadata/properties — not content blocks 1 API call
retrieve_block_children block_id, start_cursor? Read actual page content — call repeatedly until no next_cursor 1 API call (may need pagination)
append_block_children block_id, children: Block[] Add content to a page or under a specific block 1 API call
update_block block_id, {type}: {...} Edit text/content of an existing block in place 1 API call
create_page parent: {database_id}|{page_id}, properties, children? Create a new page — under a parent page or inside a database 1 API call
query_database database_id, filter?, sorts? Structured query — filter/sort entries in a database 1 API call
update_page page_id, properties Update page-level properties (status, tags, date) 1 API call
retrieve_database database_id Introspect property names/types before writing 1 API call

Coût et limites

Coût d'exécution

Quota d'API
Notion: average 3 req/sec per integration, bursts allowed. Will 429 aggressively at scale.
Tokens par appel
500–3000 tokens per page depending on block count
Monétaire
Free — API included with any Notion plan
Astuce
Pages with many nested blocks are expensive to read fully. Search first, fetch only targeted pages.

Sécurité

Permissions, secrets, portée

Portées minimales : read_content
Stockage des identifiants : Internal integration secret in env var NOTION_API_KEY
Sortie de données : All calls to api.notion.com
Ne jamais accorder : update_content insert_content

Dépannage

Erreurs courantes et correctifs

object_not_found

Page exists but isn't shared with your integration. Open the page → ••• → Connections → add integration.

validation_error on create_page

Property names/types in your payload don't match the database schema. Call retrieve_database first and copy exact keys.

429 rate limited

Notion limits to ~3 req/sec. Add a 350ms sleep between writes or batch via append_block_children (send 100 blocks per call, not 100 calls).

Page content looks empty

retrieve_page returns metadata only — content is in blocks. Call retrieve_block_children to get actual text.

Alternatives

Notion vs autres

AlternativeQuand l'utiliserCompromis
Confluence MCPYour org is on Confluence/Atlassian instead of NotionHeavier permissions model; agent workflows tend to be slower
Obsidian / filesystem MCPYour knowledge base is local markdown filesNo multi-user sync or permissions, but zero API cost and instant reads

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills