Does notion-mcp-server support OAuth and permission scoping?
This post might have stale content, as HEAD is 7 commits ahead.
해당 mcp에서 다음과 같은 기능이 지원되는지 확인해줘
- notion_token 대신 oauth 사용 가능한지
- notion write/delete 권한을 뺄 수 있는지
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등의 쓰기/삭제 도구들이 포함되어 있습니다.
- 이 서버는
요약:
- OAuth: 이 로컬 서버에서는 지원되지 않으며, OAuth가 필요하면 Notion에서 제공하는 Remote MCP를 사용해야 합니다.
- 권한 제어: Notion 통합 설정에서 **"Read content"**만 허용하도록 설정하여 쓰기/삭제 권한을 쉽게 뺄 수 있습니다.
END OF POST