API-create-a-comment
Notion | Create comment Error Responses: 400: Bad request
Read and write a Notion workspace from the conversation — pages as Markdown, data sources queried, blocks and comments edited.
LABSCO SUMMARY
The two Markdown calls treat a page as text, so a document can be read, edited and written back without walking the block tree — and the range option means an edit can land in the middle of a long page. Everything structured is still there when the job needs it: data source queries, page properties, comments and the users behind them.
The Notion API as 24 tools: search, users, pages and their properties, blocks and their children, data sources and databases, comments, and two calls that read or write a page's whole content as Markdown.
npx on your PATH and NOTION_TOKEN in the environment. The integration reaches only what has been shared with it, and the Markdown calls need its read and update content capability — without that they return 403.
One command plus a key — npx @notionhq/notion-mcp-server, then supply credentials
USE CASES
Find where it belongs, create the page under that parent, and write the body as Markdown in one call rather than block by block.
Query the data source with the filter and sort you would have clicked, and read the rows back as data instead of as a screenshot of a board.
Read the page as Markdown, change what needs changing, and write back only the range you touched. The rest of the page is left as it was.
Read the comments on the page or block, then reply where a reply is what is needed, without opening the workspace.
Move the page under a different parent and update its properties, which is the tidy-up that otherwise happens by dragging things in a sidebar.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
API-create-a-commentNotion | Create comment Error Responses: 400: Bad request
API-create-a-data-sourceNotion | Create a data source Error Responses: 400: Bad request
API-delete-a-blockNotion | Delete a block Error Responses: 400: Bad request
API-get-block-childrenNotion | Retrieve block children Error Responses: 400: Bad request
API-get-selfNotion | Retrieve your token's bot user Error Responses: 400: Bad request
API-get-userNotion | Retrieve a user Error Responses: 400: 400
API-get-usersNotion | List all users Error Responses: 400: 400
API-list-data-source-templatesNotion | List templates in a data source Error Responses: 400: Bad request
API-move-pageNotion | Move a page Error Responses: 400: Bad request
API-patch-block-childrenNotion | Append block children Error Responses: 400: Bad request
API-patch-pageNotion | Update page properties Error Responses: 400: Bad request
API-post-pageNotion | Create a page Error Responses: 400: Bad request
API-post-searchNotion | Search by title Error Responses: 400: Bad request
API-query-data-sourceNotion | Query a data source Error Responses: 400: Bad request
API-retrieve-a-blockNotion | Retrieve a block Error Responses: 400: Bad request
API-retrieve-a-commentNotion | Retrieve comments Error Responses: 400: Bad request
API-retrieve-a-data-sourceNotion | Retrieve a data source Error Responses: 400: Bad request
API-retrieve-a-databaseNotion | Retrieve a database Error Responses: 400: Bad request
API-retrieve-a-pageNotion | Retrieve a page Error Responses: 400: Bad request
API-retrieve-a-page-propertyNotion | Retrieve a page property item Error Responses: 400: Bad request
API-retrieve-page-markdownNotion | Retrieve a page as Markdown Error Responses: 400: Bad request 403: The integration lacks the read/update content capability required for this page. 404: Page not found or not shared with the integration. 429: Rate limited.
API-update-a-blockNotion | Update a block Error Responses: 400: Bad request
API-update-a-data-sourceNotion | Update a data source Error Responses: 400: Bad request
API-update-page-markdownNotion | Update a page's content as Markdown Error Responses: 400: Bad request 403: The integration lacks the read/update content capability required for this page. 404: Page not found or not shared with the integration. 409: Conflict (e.g. row limit exceeded). 429: Rate limited.
BEFORE YOU INSTALL
24 tools when we connected. Every tool name carries an API- prefix (API-move-page), so bare names from the documentation will not resolve. post-database-query, update-a-database and create-a-database were removed. Your integration's Notion capabilities and connected pages decide what works.
All 7 documented setups run the server on your machine.
CONTEXT COST
Rated by the size of the 24 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx @notionhq/notion-mcp-server{
"mcpServers": {
"notionApi": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "<YOUR_NOTION_TOKEN>"
}
}
}
}{
"mcpServers": {
"notionApi": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2025-09-03\" }"
}
}
}
}{
"context_servers": {
"some-context-server": {
"command": {
"path": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2025-09-03\" }"
}
},
"settings": {}
}
}
}{
"mcpServers": {
"notionApi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"NOTION_TOKEN",
"mcp/notion"
],
"env": {
"NOTION_TOKEN": "<YOUR_NOTION_TOKEN>"
}
}
}
}