{"name":"io.github.n24q02m/better-notion-mcp","slug":"n24q02m-better-notion-mcp","title":null,"description":"Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.","url":"https://mcp.market/server/n24q02m-better-notion-mcp","rating":null,"grade":"C","score":60,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":46,"stars":36,"forks":12,"downloads_week":1304,"last_push_at":"2026-09-13T08:12:03.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/n24q02m/better-notion-mcp.git","website":null,"version":"2.41.6","remotes":[],"packages":[{"registryType":"npm","identifier":"@n24q02m/better-notion-mcp","version":"2.41.6","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Notion integration token. Create at https://www.notion.so/my-integrations","isRequired":true,"isSecret":true,"name":"NOTION_TOKEN"}]},{"registryType":"oci","identifier":"docker.io/n24q02m/better-notion-mcp:latest","runtimeHint":"docker","transport":{"type":"stdio"},"environmentVariables":[{"description":"Notion integration token. Create at https://www.notion.so/my-integrations","isRequired":true,"isSecret":true,"name":"NOTION_TOKEN"}]}],"tools":[{"name":"blocks","description":"Read and modify block-level content within pages. Actions (required params -> optional): - get (block_id): retrieve single block - children (block_id): list child blocks - append (block_id, content -> position, after_block_id): add markdown content at position - update (block_id, content): replace text block content - delete (block_id): remove block Use `pages` for page metadata/properties. Page I","write_action":false,"price_micros":0,"input_schema":null},{"name":"comments","description":"Manage page comments. Actions (required params -> optional): - list (page_id): all comments on a page - get (comment_id): single comment - create (content -> page_id for new discussion, discussion_id for reply)","write_action":false,"price_micros":0,"input_schema":null},{"name":"config","description":"Manage server configuration and credential state. Actions: - status: current credential state, token source, setup URL - setup_status: credential/setup state only (alias-equivalent to status for notion; kept for cross-server parity) - setup_start (-> force): trigger relay setup to configure Notion token via browser - setup_reset: clear credentials and config, return to awaiting_setup - setup_compl","write_action":false,"price_micros":0,"input_schema":null},{"name":"config__open_relay","description":"Open the relay configuration form for better-notion-mcp in the user browser. Returns the relay URL, whether the browser launched, and the current credential state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"content_convert","description":"Convert between markdown and Notion block JSON. Directions: markdown-to-blocks (input: markdown string), blocks-to-markdown (input: JSON array of Notion blocks or JSON string). Most tools (pages, blocks) handle markdown automatically -- use this only for preview/validation. Supported markdown: headings, lists, to-do, code blocks, blockquotes, dividers, callouts (> [!NOTE]), toggles (<details>), ta","write_action":false,"price_micros":0,"input_schema":null},{"name":"databases","description":"Database schema, query, and bulk row operations. Actions (required params -> optional): - create (parent_id -> title, properties, is_inline, icon, cover) - get (database_id) - query (database_id -> filters, sorts, limit, search) - create_page (database_id, pages[{properties}]) - update_page (database_id, page_id, page_properties) - delete_page (database_id, page_ids) - create_data_source / update_","write_action":false,"price_micros":0,"input_schema":null},{"name":"file_uploads","description":"Upload files to Notion. Actions (required params -> optional): - create (filename -> content_type, mode=\"single\"|\"multi_part\", number_of_parts) - send (file_upload_id, file_content -> part_number): base64-encoded content - complete (file_upload_id) - retrieve (file_upload_id) - list (-> limit) Max 20MB direct, multi-part for larger files.","write_action":true,"price_micros":0,"input_schema":null},{"name":"help","description":"Get full documentation for a tool. Use when compressed descriptions are insufficient.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pages","description":"Page CRUD for individual pages and database rows. Actions (required params -> optional): - create (parent_id -> title, content, properties, icon, cover) - get (page_id -> content_limit, content_cursor): returns markdown content; bounded reads return content_truncated and next_cursor - get_property (page_id, property_id) - update (page_id -> title, content, append_content, properties, icon, cover, ","write_action":false,"price_micros":0,"input_schema":null},{"name":"users","description":"Get user information. Actions (required params): - list: all workspace users (requires admin permissions) - get (user_id): single user info - me: current bot/integration user - from_workspace: extract users from accessible pages (use if list fails)","write_action":false,"price_micros":0,"input_schema":null},{"name":"workspace","description":"Search workspace and get workspace info. Actions (required params -> optional): - info: workspace name, plan, and bot user - search (-> query, filter.object=\"page\"|\"data_source\", sort, limit): find pages/databases shared with integration","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":60,"grade":"C","scanned_at":"2026-09-19T21:08:29.526Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:08:29.523Z","components":{"code":{"score":25,"max":25,"notes":["120 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":0,"max":15,"notes":["repository archived"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"maint.archived","severity":"high","component":"maintenance","title":"Repository is archived"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@n24q02m/better-notion-mcp","version":"2.41.6","found":true,"license":"Apache-2.0","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-09-13T04:32:33.580Z","repositoryUrl":"git+https://github.com/n24q02m/better-notion-mcp.git"}],"repo":{"found":true,"owner":"n24q02m","repo":"better-notion-mcp","archived":true,"pushedAt":"2026-09-13T08:12:03Z","stars":36,"forks":12,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/135627235?v=4","ownerCreatedAt":"2023-06-05T14:04:23Z","license":"Apache-2.0"},"icon":{"url":null,"source":"none"},"presence":{"stars":36,"forks":12,"downloadsWeek":1304,"license":"Apache-2.0","lastPushAt":"2026-09-13T08:12:03.000Z","score":46}}}},"grade_history":[{"kind":"restore","fromGrade":"D","toGrade":"C","reason":"score 60: Repository is archived","createdAt":"2026-09-19T21:08:30.224Z"}],"reviews":[]}