프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Notion

제작자: foreverworks버전 0.1.1i★ –i내 컴퓨터에서 실행
레지스트리 이름com.foreverworks/notion

설치

개요

제작자가 쓴 설명(영어 원문)

Search, read and write your Notion workspaces, with pages as Markdown and typed database queries.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 문서, 시트 및 사무 업무
  • 입력해야 할 값: NOTION_TOKENS_DIR

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: NOTION_TOKENS_DIR

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@foreverworks/mcp-notion"
      ],
      "env": {
        "NOTION_TOKENS_DIR": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add notion --env NOTION_TOKENS_DIR=your-value -- npx -y @foreverworks/mcp-notion

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@foreverworks/mcp-notion"
      ],
      "env": {
        "NOTION_TOKENS_DIR": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "notion": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@foreverworks/mcp-notion"
      ],
      "env": {
        "NOTION_TOKENS_DIR": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • NOTION_TOKENS_DIR 필수 env
    A folder holding one file per workspace, notion- , each with that workspace's integration token or personal access token.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 도메인 foreverworks.com 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

문서, 시트 및 사무 업무 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 2191개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 2191개 중 80%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 2191개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Notion, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: NOTION_TOKENS_DIR

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.1)은 6일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Agent-Native Calendar

제작자: BuilderIO

Agent-Native Google Calendar - manage events, sync, and public booking

클라우드에서 실행★ 7,620MIT2개월 전 업데이트
설치

Excel MCP Server

제작자: haris-musa

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

내 컴퓨터에서 실행★ 4,276MIT6일 전 업데이트
설치

MCP Server for Excel

제작자: sbroenne

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

내 컴퓨터에서 실행★ 847MIT3일 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Notion MCP server

Search, read and write your Notion workspaces from your AI assistant, several through one server: pages as Markdown, databases queried and counted by column, saved views, people, comments and files. It creates pages, rows, columns and databases, edits properties and bodies, comments, uploads files, and moves pages to Notion's trash (kept 30 days; restore_page brings them back). No tool is money.

You need a Notion integration per workspace, its token in a file of its own, and your top-level pages shared with it: an integration sees only what you share. Uploads take files up to 20 MiB (5 MiB on Notion's Free plan).

What you can ask

  • "Find the Q3 roadmap page in my work workspace and summarise it."
  • "How many rows of the Tasks database are in each Status?"
  • "Show me my Due this week view."
  • "Add 'Thinking in Systems' to the Reading List with status To read and the tag Books."
  • "In the Onboarding page, replace 'Slack' with 'Mattermost' everywhere."
  • "Download the PDFs attached to the Client SRL row of the Contracts database."

Install

With Claude Code:

claude mcp add notion -e NOTION_TOKENS_DIR="<path to Notion tokens folder>" -- npx -y @foreverworks/mcp-notion

Claude Desktop (Settings, Developer, Edit Config) and most other clients read the same command as JSON:

{

"mcpServers": { "notion": { "command": "npx", "args": ["-y", "@foreverworks/mcp-notion"], "env": { "NOTION_TOKENS_DIR": " " } } } }

Each runs the published package on Node 22.19 or newer. VS Code and the Claude Desktop bundle ask for NOTION_TOKENS_DIR as they add the server. Cursor reads it from your environment instead (${env:NOTION_TOKENS_DIR}), so set it before you start Cursor. Configuration says what it holds.

From a clone
git clone https://github.com/foreverworks/mcps.git && cd mcps

npm ci && npm run build claude mcp add notion -e NOTION_TOKENS_DIR=" " -- node "$PWD/servers/notion/dist/index.js"

In a JSON configuration, the command is node and its one argument the full path of servers/notion/dist/index.js. To share one running copy between several clients over HTTP, see docs/deploying.md.

Over HTTP, a deployment that limits its hosts sets MCP_EGRESS_ALLOW=api.notion.com,prod-files-secure.s3.us-west-2.amazonaws.com,s3.us-west-2.amazonaws.com: Notion's API and the hosts its files are served from.

Configuration

VariableRequiredMeaning
NOTION_TOKENS_DIRyes, or CREDENTIALS_DIRECTORYA folder holding one file per workspace, notion- , each holding that workspace's token and nothing else.
CREDENTIALS_DIRECTORYRead when NOTION_TOKENS_DIR is unset: under systemd, LoadCredential=notion- : puts the same files there, readable by the unit alone.
NOTION_OUTBOX_DIRfor download_filesThe folder downloaded files are saved in, which the server writes and you read. Unset, download_files answers a config error naming it; every other tool works.

Each file is a workspace: notion-personal and notion-work are labelled personal and work, and the server names the labels it found at start. A label is lower-case letters, digits and hyphens; an empty file is skipped. There is no default folder, so a test or a hand-run copy cannot reach a workspace by accident. The files are re-read at most once a minute, and at once after a refused token, so a new token needs no restart. The variables every server shares (transport, limits, MCP_FILE_ROOTS for uploads) are in docs/configuration.md.

Getting a token

For each workspace:

  1. Open https://www.notion.so/profile/integrations, signed in to that workspace, and create a new internal integration.
  2. Turn on the capabilities the assistant needs: read, update and insert content for pages and databases, and the comment capabilities for comments. People's emails appear only if it may read user information with email addresses.
  3. Copy its Internal Integration Secret straight into notion- in your tokens folder, readable by you alone (mode 0600). Do not paste it into a chat.
  4. Share your pages with the integration, which starts out seeing nothing. In Notion, open each top-level page the assistant should reach, then the ••• menu, Connections, and add the integration. Pages under it inherit the access; a new top-level page must be shared the same way.

A personal access token works in the same file instead (made at https://www.notion.so/developers/tokens, signed in to the workspace, with the Notion API capability). It acts as you: it sees every page you see, with nothing to share, and can create private top-level pages, which an integration cannot. It expires within a year.

First run

Ask your assistant to run Notion's health check. Per workspace, it says whether the token is accepted, the workspace and integration names, and whether the integration sees any page yet; if not, do step 4 above.

From a shell, node dist/index.js --health prints one NOTION: line per workspace and exits 0 when all is well, 1 when a person has to act (a refused token, a missing capability), and 2 for a warning (an integration that sees nothing yet, or Notion unwell), which suits a timer.

Tools

read changes nothing; write changes something in a workspace. A tool that takes an id also takes a Notion URL, and finds the workspace itself.

Workspaces and search
ToolAccessWhat it does
list_accountsreadThe workspaces with a token file, by label. No request to Notion.
healthreadPer workspace: the token accepted, the workspace and integration names, whether it sees any page yet.
list_usersreadThe people (and bots) of every workspace: id, name, and email when the token may read it; narrowed by a word.
searchreadPages and databases by title, in every workspace at once, each hit tagged with its workspace.
Pages
ToolAccessWhat it does
read_pagereadA page's properties as plain values and its body as Notion's Markdown.
read_blocksreadThe blocks directly inside a page or a block: id, type, plain text. A meeting-notes block names the blocks holding its summary, notes and transcript.
create_pagewriteA row in a database, checked against its columns (or started from one of its templates), or a child page; either with a Markdown body.
update_pagewriteA page's properties and icon.
append_contentwriteMarkdown at the end, the start, or after a passage.
edit_contentwriteFind and replace in a page's Markdown.
replace_contentwriteA page's whole body; an empty one only with clear. Answers with the page's title and its block count before and after.
move_pagewriteUnder another page or into a database, within one workspace.
trash_page / restore_pagewriteInto Notion's trash (kept 30 days) and back. A database template only with allow_template.
Databases
ToolAccessWhat it does
describe_databasereadA database's tables and columns: types, options, status groups, relation targets, formulas.
query_databasereadRows, filtered by where (typed from the schema) or Notion's own filter, sorted, up to 1,000 in one call.
count_rowsreadHow many rows match, and per value of a column ("tasks per status"), without sending the rows.
list_viewsreadA database's saved views: id, name, type, and the filter and sorts saved in each, columns by name.
query_viewreadThe rows a saved view shows, in its order, filtered exactly as Notion applies it, with the view's total.
list_database_templatesreadA database's page templates: their page ids, names and which is the default.
add_columnwriteA column on a database: a free name, a type and its settings (options, number format, formula, relation), checked against the table first.
add_optionswriteOptions on a select, multi-select or status column; the ones there are kept by id and the column is read back after.
create_databasewriteA database under a page, with its title column and other columns, each checked against the others first.
Comments and files
ToolAccessWhat it does
get_commentsreadA page's open comments.
add_commentwriteA comment on a page, or a reply in a discussion.
upload_filewriteA file by path, uploaded to a row's files column or into a block at the end of a page's body; answers its size and SHA-256.
download_filesreadA page's Notion-hosted files (its files columns and the file blocks of its body) saved to the outbox, each with its SHA-256.

test/tools.snapshot.json pins what a client lists; a diff there is a breaking change.

Troubleshooting

`health` says "the integration sees no page yet", or a call answers `not_shared`. Notion answers the same 404 for an id that does not exist and a page not shared with the integration. Check the id, then share the page (step 4 of Getting a token); sharing a top-level page shares everything under it.

`auth`. The token was refused: revoked, or a personal access token past its expiry. Put a new one in the notion- file; the next call reads it.

`forbidden`. The integration lacks a capability for this call. Turn it on at https://www.notion.so/profile/integrations (step 2 of Getting a token).

`config`. No token files where NOTION_TOKENS_DIR points, an unreadable one, or one holding more than one token. For download_files, set NOTION_OUTBOX_DIR.

`input` from `create_page` with no parent. Notion refuses a top-level page from an integration; give a parent page, or use a personal access token. Any other input names what to fix, and nothing changed.

`outcome_unknown`. An append, a find-and-replace, a new page or a comment lost its answer; it is never resent blind. Read the page (or search for a new one) before writing again: the change may be there.

`conflict`: someone edited the same object at that moment; read it again, then retry. `rate_limited`: Notion still throttles after the retries (180 requests a minute on the Free plan); wait a minute. `api`: Notion was unreachabl

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기