Prerequisite: Environment Variables
Set the environment variable(s) below. These will be injected into the MCP server container via--env
in the meshagent service
command.
INTERNAL_INTEGRATION_TOKEN=ntn_****
(replacentn_****
with your real Notion integration token)
Quick Start Steps
-
Install Meshagent CLI and MCP plugin
-
Sign In to Meshagent
- Follow account setup and authentication here: Meshagent CLI Guide
-
Start the Notion MCP Server as a Meshagent Service in a Room
- What this does: Launches a Room named
test
with an MCP server (mcp-notion-service-test
) that exposes Notion tools. When the Room closes or goes inactive, the service shuts down automatically.
- What this does: Launches a Room named
-
Start a Chatbot in the Room
- What this does: Bootstraps a chatbot (
mcp-notion
) in the same Room, wired up to the Notion toolkits. - Room link (for browser-based interaction) is printed after the command completes.
- What this does: Bootstraps a chatbot (
-
Test via Browser
- Open the provided Room link.
- Interact with the agent by sending it commands or prompts to use the Notion MCP Server tools live!
Project-level Deployment: Persistent MCP Server & Chatbot
For production or permanent deployments, make services persistently available in all Rooms within a Meshagent Project. This ensures the Notion MCP Server tools and chatbot are present whenever new Rooms are created in your project.Steps
-
Create a Persistent Notion MCP Service
-
Create a Persistent Chatbot Service
With this setup: Every Room you create in your project will auto-join the MCP server and chatbot, so team members have instant access to Notion tools via chat—no manual launching required.
Tools Available (Notion MCP Server)
Below are the Notion tools available through this MCP Server:Tool Name | Description |
---|---|
API-create-a-comment | Create comment |
API-create-a-database | Create a database |
API-delete-a-block | Delete a block |
API-get-block-children | Retrieve block children |
API-get-self | Retrieve your token’s bot user |
API-get-user | Retrieve a user |
API-get-users | List all users |
API-patch-block-children | Append block children |
API-patch-page | Update page properties |
API-post-database-query | Query a database |
API-post-page | Create a page |
API-post-search | Search by title |
API-retrieve-a-block | Retrieve a block |
API-retrieve-a-comment | Retrieve comments |
API-retrieve-a-database | Retrieve a database |
API-retrieve-a-page | Retrieve a page |
API-retrieve-a-page-property | Retrieve a page property item |
API-update-a-block | Update a block |
API-update-a-database | Update a database |
Tool Details
Tool: API-create-a-comment
Create commentParameters:
parent
(object): The page that contains the commentrich_text
(array)
Tool: API-create-a-database
Create a databaseParameters:
parent
(object)properties
(object): Property schema of database. The keys are the names of properties as they appear in Notion and the values are property schema objects.title
(array, optional)
Tool: API-delete-a-block
Delete a blockParameters:
block_id
(string): Identifier for a Notion block
Tool: API-get-block-children
Retrieve block childrenParameters:
block_id
(string): Identifier for a blockpage_size
(integer, optional): The number of items from the full list desired in the response. Maximum: 100start_cursor
(string, optional): Cursor for pagination
Tool: API-get-self
Retrieve your token’s bot user
Tool: API-get-user
Retrieve a userParameters:
user_id
(string)
Tool: API-get-users
List all usersParameters:
page_size
(integer, optional): The number of items from the full list desired in the response. Maximum: 100start_cursor
(string, optional): Cursor for pagination
Tool: API-patch-block-children
Append block childrenParameters:
block_id
(string): Identifier for a block or pagechildren
(array): Child content as block objectsafter
(string, optional): ID to append after
Tool: API-patch-page
Update page propertiesParameters:
page_id
(string): Page ID to updatearchived
(boolean, optional)cover
(object, optional): Cover image (external file objects)icon
(object, optional): Page iconin_trash
(boolean, optional): Delete or restoreproperties
(object, optional): Property values to update
Tool: API-post-database-query
Query a databaseParameters:
database_id
(string): Notion database identifierarchived
(boolean, optional)filter
(object, optional)filter_properties
(array, optional)in_trash
(boolean, optional)page_size
(integer, optional): Maximum 100sorts
(array, optional)start_cursor
(string, optional): Cursor for pagination
Tool: API-post-page
Create a pageParameters:
parent
(object)properties
(object)children
(array, optional): Page content as block objectscover
(string, optional)icon
(string, optional)
Tool: API-post-search
Search by titleParameters:
filter
(object, optional)page_size
(integer, optional): Maximum 100query
(string, optional)sort
(object, optional)start_cursor
(string, optional)
Tool: API-retrieve-a-block
Retrieve a blockParameters:
block_id
(string): Block ID
Tool: API-retrieve-a-comment
Retrieve commentsParameters:
block_id
(string): Block or page IDpage_size
(integer, optional): Maximum 100start_cursor
(string, optional)
Tool: API-retrieve-a-database
Retrieve a databaseParameters:
database_id
(string): Database identifier
Tool: API-retrieve-a-page
Retrieve a pageParameters:
page_id
(string): Page identifierfilter_properties
(string, optional): Property IDs
Tool: API-retrieve-a-page-property
Retrieve a page property itemParameters:
page_id
(string): Page IDproperty_id
(string): Property IDpage_size
(integer, optional)start_cursor
(string, optional)
Tool: API-update-a-block
Update a blockParameters:
block_id
(string): Block IDarchived
(boolean, optional)type
(object, optional): Block type properties (text
,checked
forto_do
)
Tool: API-update-a-database
Update a databaseParameters:
database_id
(string): Database identifierdescription
(array, optional): Database description (rich text objects)properties
(object, optional): Property schematitle
(array, optional): Database title (rich text objects)