Notion MCP Skill

Use this skill to run Notion MCP operations through uxc with OAuth and guarded write behavior.

Reuse the uxc skill guidance for discovery, schema inspection, OAuth lifecycle, and error recovery. Do not assume another skill is auto-triggered in every runtime. Keep this skill executable on its own.

Prerequisites

Core Workflow (Notion-Specific)

Endpoint argument style in this skill:

  1. Ensure endpoint mapping exists:
    • uxc auth binding match mcp.notion.com/mcp
  2. If mapping/auth is not ready, start OAuth login:
    • uxc auth oauth start notion-mcp --endpoint mcp.notion.com/mcp --redirect-uri http://127.0.0.1:8788/callback --scope read --scope write
    • Prompt user to open the printed authorization URL.
    • Ask user to paste the full callback URL after consent.
    • Complete login with uxc auth oauth complete notion-mcp --session-id <session_id> --authorization-response '<callback-url>'
  3. Bind endpoint to the credential:
    • uxc auth binding add --id notion-mcp --host mcp.notion.com --path-prefix /mcp --scheme https --credential notion-mcp --priority 100
  4. Use fixed link command by default:
    • command -v notion-mcp-cli
    • If missing, create it: uxc link notion-mcp-cli mcp.notion.com/mcp
    • notion-mcp-cli -h
    • If command conflict is detected and cannot be safely reused, stop and ask skill maintainers to pick a different fixed command name.
  5. Discover tools and inspect schema before execution:
    • notion-mcp-cli -h
    • notion-mcp-cli notion-fetch -h
    • notion-fetch requires id (URL or UUID). Examples:
      • notion-mcp-cli notion-fetch id="https://notion.so/your-page-url"
      • notion-mcp-cli notion-fetch id="12345678-90ab-cdef-1234-567890abcdef"
    • Common operations include notion-search, notion-fetch, and notion-update-page.
  6. Prefer read path first:
    • Search/fetch current state before any write.
  7. Execute writes only after explicit user confirmation:
    • For notion-update-page operations that may delete content, always confirm intent first.

OAuth Interaction Template

Use this exact operator-facing flow:

  1. Start login command and wait for authorization URL output.
  2. Tell user:
    • Open this URL in browser and approve Notion access.
    • Copy the full callback URL from browser address bar.
    • Paste the callback URL back in chat.
  3. Run uxc auth oauth complete notion-mcp --session-id <session_id> --authorization-response '<callback-url>'.
  4. Optionally confirm success with:
    • uxc auth oauth info <credential_id>

Do not ask user to manually extract or copy bearer tokens. Token exchange is handled by uxc. Use uxc auth oauth login ... --flow authorization_code only for a single-process interactive fallback.

Guardrails

References