productivity
Notion MCP Integration for Codex
Connect Notion to Codex through the local KosmoKrator MCP gateway with scoped tools, credentials, and write policy.
Connect Notion to Codex
Use KosmoKrator as a local MCP proxy for Codex so coding sessions can reach selected integrations with explicit write policy.
Register kosmo mcp:serve as a local stdio server and choose the integration allowlist. The gateway is local, scoped to this integration, and starts with
--write=deny so Codex can inspect read-capable tools without receiving write access by default.
Notion MCP Config for Codex
Keep write access denied or ask-based unless the workspace is trusted.
{
"mcpServers": {
"kosmokrator-notion": {
"type": "stdio",
"command": "kosmo",
"args": [
"mcp:serve",
"--integration=notion",
"--write=deny"
]
}
}
} Run the Gateway Manually
kosmokrator mcp:serve --integration=notion --write=deny Why Use KosmoKrator Here
Expose only Notion instead of a broad multi-service tool list.
Reuse credentials already configured for the KosmoKrator CLI and Lua runtime.
Start read-only, then opt into ask or allow for trusted workspaces.
Notion Tools Visible to Codex
Codex sees stable MCP tool names generated from the Notion integration catalog.
| MCP tool | Source function | Type | Description |
|---|---|---|---|
integration__notion__notion_search | notion.notion_search | Read | Search pages and databases in your Notion workspace. Returns matching results with their IDs, types, and titles. Optionally filter by type (page or database) and control sort direction. |
integration__notion__notion_create_page | notion.notion_create_page | Write | Create a new page in Notion. The page can be created as a child of a database (to create a row) or as a child of another page (to create a sub-page). Provide properties as a JSON object matching the database schema when using a database parent. Provide children (block content) as a JSON array of block objects. |
integration__notion__notion_get_page | notion.notion_get_page | Read | Retrieve a Notion page by its ID. Returns the page object with properties, including title, icon, cover, parent info, and timestamps. |
integration__notion__notion_update_page | notion.notion_update_page | Write | Update properties on a Notion page. Provide properties as a JSON object matching the database/page schema. Can also archive/unarchive the page. |
integration__notion__notion_archive_page | notion.notion_archive_page | Write | Archive a Notion page by setting its archived flag to true. The page can be restored by using notion_update_page with archived=false. |
integration__notion__notion_create_database | notion.notion_create_database | Write | Create a new database as a child of a page. Provide the parent page ID, a title, and a properties schema. Properties define the columns of the database. Example properties: {"Name": {"title": {}}, "Status": {"select": {"options": [{"name": "Todo"}, {"name": "Done"}]}}}. |
integration__notion__notion_get_database | notion.notion_get_database | Read | Retrieve a Notion database by its ID. Returns the full database schema including all property definitions (columns), title, and parent info. |
integration__notion__notion_update_database | notion.notion_update_database | Write | Update a Notion database's title and/or property schema. Provide a new title and/or modified properties as a JSON object. |
integration__notion__notion_query_database | notion.notion_query_database | Read | Query a Notion database to retrieve rows (pages). Supports filtering and sorting. Filter and sorts can be provided as JSON strings or arrays. Example filter: {"property": "Status", "select": {"equals": "Done"}} Example sorts: [{"property": "Name", "direction": "ascending"}] |
integration__notion__notion_list_databases | notion.notion_list_databases | Read | List all databases accessible to the integration. Uses the search endpoint filtered to database objects. Optionally provide a query to filter by name. |
integration__notion__notion_get_block_children | notion.notion_get_block_children | Read | Get the child blocks of a Notion block or page. Returns a list of block objects. Use this to read the content of a page or to navigate nested block structures. Supports pagination. |
integration__notion__notion_append_block_children | notion.notion_append_block_children | Write | Append blocks to a Notion page or block. Provide children as a JSON array of block objects. Example: [{"object":"block","type":"paragraph","paragraph":{"rich_text":[{"type":"text","text":{"content":"Hello world"}}]}}] |
integration__notion__notion_get_block | notion.notion_get_block | Read | Retrieve a single Notion block by its ID. Returns the full block object including type-specific content, has_children flag, and parent info. |
integration__notion__notion_update_block | notion.notion_update_block | Write | Update the content of a Notion block. Provide the block ID and the type-specific content to update. For example, to update a paragraph block, provide: {"type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "New text"}}]}} Only the fields you include will be updated. |
integration__notion__notion_delete_block | notion.notion_delete_block | Write | Delete a Notion block by its ID. This permanently removes the block (moves it to trash if it is a top-level page block). |
integration__notion__notion_get_current_user | notion.notion_get_current_user | Read | Get information about the current integration bot user. Returns the bot's name, avatar, and workspace info. |
integration__notion__notion_list_users | notion.notion_list_users | Read | List all users in the Notion workspace. Returns user IDs, names, types, and avatar URLs. Supports pagination. |
integration__notion__notion_get_user | notion.notion_get_user | Read | Retrieve a Notion user by their ID. Returns the user's name, type, avatar URL, and email (if available). |
integration__notion__notion_create_comment | notion.notion_create_comment | Write | Create a comment on a Notion page. You can either start a new discussion (provide parent_id) or reply to an existing discussion (provide discussion_id). Provide body_text for simple text, or body_children for rich content blocks. |
integration__notion__notion_get_comments | notion.notion_get_comments | Read | Retrieve comments on a Notion page or block. Returns all comment objects with their content, authors, and timestamps. Supports pagination. |