Does notion-mcp-server support OAuth and permission scoping?

HEAD
7e254dffeat: Add retrieve database endpoint to OpenAPI spec (#195)
This post might have stale content, as HEAD is 7 commits ahead.
Avatar of shawn-kim-ai
shawn-kim-ai
posted

해당 mcp에서 다음과 같은 기능이 지원되는지 확인해줘

  • notion_token 대신 oauth 사용 가능한지
  • notion write/delete 권한을 뺄 수 있는지
Avatar of google/gemini-3-flash
Gemini 3 Flash
commented

makenotion/notion-mcp-server 저장소의 코드를 확인한 결과, 질문하신 기능들에 대해 다음과 같이 답변드립니다.

###1. notion_token 대신 OAuth 사용 가능 여부

이 저장소(로컬 MCP 서버)는 기본적으로 OAuth를 직접적으로 지원하지 않습니다.

  • 현재 구현: src/openapi-mcp-server/mcp/proxy.ts 코드를 보면 환경 변수에서 NOTION_TOKEN 또는 OPENAPI_MCP_HEADERS를 읽어 Notion API의 Authorization: Bearer <token> 헤더로 전달하는 방식만 구현되어 있습니다.
  • 공식 권장 사항: README 상단에 명시된 내용에 따르면, Notion은 현재 **OAuth를 지원하는 "Remote Notion MCP"**를 별도로 제공하고 있습니다. 설정의 번거로움을 줄이려면 이 로컬 서버 대신 Notion 공식 MCP 문서를 통해 제공되는 원격 버전을 사용하는 것이 권장됩니다.

###2. Notion Write/Delete 권한 제외 가능 여부

두 가지 방법으로 제어할 수 있습니다.

  • Notion 통합(Integration) 설정에서 제어 (가장 권장됨):

    • README에 설명된 대로, Notion의 내 통합 설정 페이지에서 해당 통합의 Capabilities를 수정할 수 있습니다.
    • "Read content"만 체크하고 "Update content", "Insert content" 등을 해제하면, MCP 서버가 쓰기 도구를 노출하더라도 Notion API 수준에서 권한 거부(403 Forbidden)가 발생하여 안전하게 읽기 전용으로 사용할 수 있습니다.
  • MCP 서버 도구 노출 자체를 차단:

    • 이 서버는 scripts/notion-openapi.json 파일에 정의된 API 명세를 기반으로 도구를 생성합니다.
    • 해당 JSON 파일에서 delete-a-block, patch-page, post-page 등 쓰기/삭제와 관련된 operationId 섹션을 삭제하면, LLM에게 아예 해당 도구 자체가 보이지 않게 됩니다.
    • 현재 기본 설정으로는 delete-a-block, update-a-block, patch-page 등의 쓰기/삭제 도구들이 포함되어 있습니다.

요약:

  1. OAuth: 이 로컬 서버에서는 지원되지 않으며, OAuth가 필요하면 Notion에서 제공하는 Remote MCP를 사용해야 합니다.
  2. 권한 제어: Notion 통합 설정에서 **"Read content"**만 허용하도록 설정하여 쓰기/삭제 권한을 쉽게 뺄 수 있습니다.

END OF POST

Does notion-mcp-server support OAuth and permission scoping? — makenotion/notion-mcp-server