Notion ReadOnly MCP Server
Notion ReadOnly MCP 서버
이 프로젝트는 Notion API에 최적화된 읽기 전용 MCP 서버를 구현하여 AI 어시스턴트가 Notion 콘텐츠를 쿼리하고 검색할 때의 성능과 효율성에 초점을 맞춥니다.
주요 개선 사항
읽기 전용 디자인 : 데이터 검색 작업에만 집중하여 Notion 콘텐츠에 대한 안전한 액세스를 보장합니다.
최소화된 도구 세트 : 노출된 Notion API 도구 수를 15개 이상에서 문서 분석에 필수적인 6개로 줄였습니다.
병렬 처리 : 블록 콘텐츠를 검색하기 위해 비동기 및 병렬 API 요청을 구현하여 성능을 향상시키고 응답 시간을 크게 줄였습니다.
확장된 데이터베이스 액세스 : 데이터베이스, 페이지 속성, 주석 검색 작업에 대한 지원이 추가되었습니다.
AI 도우미에 최적화 : 도구 개수를 대폭 줄여 Cursor와 같은 AI 도우미의 "도구가 너무 많으면 성능이 저하될 수 있음" 문제를 해결했습니다. 이 문제는 모델에 사용할 수 있는 도구 수를 약 40개로 제한합니다.
Related MCP server: notion-slim
도구 비교
이 읽기 전용 구현은 표준 Notion API 통합에 비해 훨씬 적은 도구를 노출하여 AI 어시스턴트와의 성능과 호환성을 향상시킵니다.

축소된 도구 세트는 모든 필수 기능을 제공하는 동시에 최적의 AI 어시스턴트 성능을 위해 권장되는 도구 한도 내에 머무르는 데 도움이 됩니다.
설치
1. Notion에서 통합 설정:
https://www.notion.so/profile/integrations 로 이동하여 새로운 내부 통합을 만들거나 기존 통합을 선택하세요.

Notion API의 노출 범위를 읽기 전용 작업으로 제한하고 있지만, LLM에 노출될 경우 작업 공간 데이터에 대한 위험이 존재합니다. 보안에 민감한 사용자는 통합 기능 의 추가 구성을 고려할 수 있습니다.
예를 들어, "구성" 탭에서 "콘텐츠 읽기" 액세스만 부여하여 읽기 전용 통합 토큰을 만들 수 있습니다.

2. 클라이언트에 MCP 구성 추가:
npm 사용하기:
.cursor/mcp.json 또는 claude_desktop_config.json 에 다음을 추가합니다(MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json )
지엑스피1
Docker 사용:
.cursor/mcp.json 또는 claude_desktop_config.json 에 다음을 추가하세요.
{
"mcpServers": {
"notionApi": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "OPENAPI_MCP_HEADERS",
"taewoong1378/notion-readonly-mcp-server"
],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer ntn_****\",\"Notion-Version\":\"2022-06-28\"}"
}
}
}
}ntn_**** 통합 비밀번호로 바꾸는 것을 잊지 마세요. 통합 설정 탭에서 비밀번호를 확인하세요.
3. 통합에 콘텐츠 연결:
관련 페이지와 데이터베이스가 통합에 연결되어 있는지 확인하세요.
이를 위해 해당 페이지를 방문하여 3개의 점을 클릭하고 "통합에 연결"을 선택하세요.

사용 가능한 도구
이 최적화된 서버는 필수적인 읽기 전용 Notion API 도구만 노출합니다.
API-retrieve-a-page: 페이지 정보 가져오기API-get-block-children: 페이지 콘텐츠 블록 가져오기(병렬 처리 포함)API-retrieve-a-block: 특정 블록에 대한 세부 정보 가져오기API-retrieve-a-database: 데이터베이스 정보 가져오기API-retrieve-a-comment: 페이지 또는 블록에 대한 댓글 가져오기API-retrieve-a-page-property: 페이지에서 특정 속성 정보를 가져옵니다.API-get-one-pager: 새롭게 추가된 기능! 한 번의 호출로 모든 블록, 데이터베이스 및 관련 콘텐츠가 포함된 전체 Notion 페이지를 재귀적으로 검색합니다.
이러한 7가지 필수 도구로 제한함으로써(표준 구현에서는 15개 이상) 다음이 보장됩니다.
도구 수 제한이 있는 Cursor 및 Claude와 같은 AI 어시스턴트에서 더 나은 성능 제공
적절한 도구를 선택하면 AI 모델의 인지 부하가 감소합니다.
고려해야 할 API 옵션이 적어 응답 시간이 더 빠릅니다.
API 표면 영역 최소화를 통한 보안 강화
자동 콘텐츠 탐색
새로운 API-get-one-pager 도구는 여러 API 호출 없이 Notion 페이지를 탐색할 수 있는 강력한 방법을 제공합니다.
재귀적 검색 : 중첩된 블록을 포함한 전체 페이지 구조를 자동으로 탐색합니다.
병렬 처리 : 최대 성능을 위해 여러 블록과 해당 자식을 동시에 가져옵니다.
지능형 캐싱 : 중복 API 호출을 최소화하기 위해 검색된 데이터를 저장합니다.
포괄적인 콘텐츠 : 페이지, 블록, 데이터베이스, 댓글 및 자세한 속성 정보 포함
사용자 정의 가능한 깊이 : 세부 사항과 성능 간의 균형을 맞추기 위해 재귀 수준을 제어합니다.
One Pager 도구 사용
{
"page_id": "YOUR_PAGE_ID",
"maxDepth": 5, // Optional: Maximum recursion depth (default: 5)
"includeDatabases": true, // Optional: Include linked databases (default: true)
"includeComments": true, // Optional: Include comments (default: true)
"includeProperties": true // Optional: Include detailed page properties (default: true)
}이러한 자동 탐색 기능은 수십 개의 별도 API 호출을 하지 않고도 Notion 페이지의 전체 내용을 이해해야 하는 AI 어시스턴트에게 특히 유용하며, 훨씬 더 빠르고 효율적인 응답을 제공합니다.
비동기 처리
서버는 대용량 Notion 문서를 처리하기 위해 고급 병렬 처리 기술을 구현합니다.
여러 요청이 일괄 처리되어 동시에 처리됩니다.
블록 자식의 경우 페이지 매김이 자동으로 처리됩니다.
결과는 반환되기 전에 효율적으로 집계됩니다.
콘솔 로깅은 응답 형식에 영향을 주지 않고 프로세스에 대한 가시성을 제공합니다.
예시
다음 지침을 사용하세요.
Get the content of page 1a6b35e6e67f802fa7e1d27686f017f2AI는 블록 콘텐츠의 병렬 처리를 통해 효율적으로 페이지 세부 정보를 검색합니다.
데이터베이스 정보 사용:
Get the structure of database 8a6b35e6e67f802fa7e1d27686f017f2개발
짓다:
pnpm build실행하다:
pnpm dev특허
MIT
AI 어시스턴트 성능 이점
Cursor와 Claude와 같은 최신 AI 어시스턴트는 효과적으로 처리할 수 있는 도구 수에 제한이 있습니다.
대부분의 모델은 총 40개 이상의 도구를 존중하지 않을 수 있습니다.
도구가 너무 많으면 전반적인 성능과 추론 능력이 저하될 수 있습니다.
복잡한 도구 세트는 응답 지연과 의사 결정의 어려움을 증가시킵니다.
이 읽기 전용 구현은 모든 필수 기능을 유지하면서 이러한 한계를 해결하기 위해 Notion API의 표면적을 의도적으로 줄였습니다. 결과는 다음과 같습니다.
AI 어시스턴트의 더 빠르고 안정적인 응답
Notion 콘텐츠와 상호 작용할 때 정확도가 향상되었습니다.
집중된 API 설계를 통해 전반적인 성능 향상
Available Tools
8 toolsAPI-get-background-resultC
Retrieve the result of a background processing request
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Identifier for the Notion page that was processed in background |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a retrieval operation, implying it's likely read-only, but doesn't clarify authentication needs, rate limits, error conditions, or what happens if the background processing isn't complete. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It's appropriately sized and front-loaded, efficiently conveying the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the result contains (e.g., status, data, errors), how to handle pending processing, or any dependencies. For a tool that retrieves background processing results, this leaves critical context gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'page_id' documented as 'Identifier for the Notion page that was processed in background'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Retrieve') and resource ('result of a background processing request'), making the purpose understandable. However, it doesn't differentiate this tool from its siblings (like API-retrieve-a-page or API-retrieve-a-database), which also retrieve data but for different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that a background processing request must have been initiated first) or compare it to sibling tools that retrieve other types of data, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-get-block-childrenC
Retrieve block children
| Name | Required | Description | Default |
|---|---|---|---|
| block_id | Yes | Identifier for a [block](ref:block) | |
| start_cursor | No | If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results. | |
| page_size | No | The number of items from the full list desired in the response. Maximum: 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Retrieve' implies a read-only operation, but it does not specify critical traits like pagination behavior (implied by 'start_cursor' and 'page_size' in the schema), rate limits, authentication needs, or error handling. The description adds minimal context beyond the basic action, leaving gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description 'Retrieve block children' is extremely concise—just three words—and front-loaded with the core action. There is no wasted language or unnecessary elaboration, making it efficient for quick comprehension. Every word earns its place by directly stating the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a paginated retrieval tool with no annotations and no output schema, the description is incomplete. It does not explain what 'block children' are, the return format, pagination details, or error conditions. While the schema covers inputs, the lack of behavioral and output information makes it inadequate for an agent to use the tool effectively without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning the input schema fully documents all parameters ('block_id', 'start_cursor', 'page_size') with clear descriptions. The description does not add any meaning beyond this, such as explaining relationships between parameters or usage examples. According to the rules, with high schema coverage, the baseline score is 3, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve block children' states the verb ('Retrieve') and resource ('block children'), making the purpose clear. However, it lacks specificity about what 'block children' are (e.g., nested content in a Notion-like system) and does not differentiate from sibling tools like 'API-retrieve-a-block', which might retrieve a single block rather than its children. This vagueness prevents a higher score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools such as 'API-retrieve-a-block' or 'API-retrieve-a-page', nor does it specify contexts like fetching hierarchical content. Without any usage context or exclusions, the agent must infer when to apply it, leading to potential misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-get-one-pagerB
Recursively retrieve a full Notion page with all its blocks, databases, and related content
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Identifier for a Notion page | |
| maxDepth | No | Maximum recursion depth (default: 5) | |
| includeDatabases | No | Whether to include linked databases (default: true) | |
| includeComments | No | Whether to include comments (default: true) | |
| includeProperties | No | Whether to include detailed page properties (default: true) | |
| maxParallelRequests | No | Maximum number of parallel requests (default: 15) | |
| batchSize | No | Batch size for parallel processing (default: 10) | |
| timeoutMs | No | Timeout in milliseconds (default: 300000) | |
| runInBackground | No | Process request in background without timeout (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions recursion and content inclusion but lacks details on performance implications, error handling, rate limits, authentication needs, or what the output looks like. For a complex tool with 9 parameters, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly communicates the tool's function, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations, no output schema), the description is insufficient. It lacks information on output format, error conditions, performance trade-offs, and when to use alternatives, leaving the agent with incomplete context for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional parameter semantics beyond implying recursion and content scope, which is already covered by parameter names like 'maxDepth' and 'includeDatabases'. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('recursively retrieve') and the resource ('full Notion page with all its blocks, databases, and related content'), making the purpose specific and unambiguous. It distinguishes from siblings like 'API-retrieve-a-page' by emphasizing the comprehensive, recursive nature of the retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or compare it to sibling tools like 'API-retrieve-a-page' for simpler needs or 'API-get-background-result' for background processing, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-retrieve-a-blockC
Retrieve a block
| Name | Required | Description | Default |
|---|---|---|---|
| block_id | Yes | Identifier for a Notion block |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails to add any meaningful context. It doesn't specify whether this is a read-only operation, what permissions are required, potential rate limits, error conditions, or the format of returned data. The description is too minimal to provide useful behavioral insights beyond the basic action implied by 'retrieve'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just two words ('Retrieve a block'), with zero wasted language. It's front-loaded with the core action, though this brevity comes at the cost of completeness. Every word serves a purpose in stating the basic function, making it structurally efficient despite its limitations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, 100% schema coverage) but lack of annotations and output schema, the description is incomplete. It doesn't explain what 'retrieve' entails (e.g., returns block content, metadata, or both), how it differs from sibling tools, or any behavioral aspects. For a retrieval tool in a family of similar tools, more context is needed to guide proper usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'block_id' clearly documented as 'Identifier for a Notion block' in the schema. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline score of 3 for adequate coverage when the schema handles parameter documentation effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve a block' is a tautology that essentially restates the tool name 'API-retrieve-a-block', providing no additional specificity. It mentions the verb 'retrieve' and resource 'block', but doesn't distinguish what kind of block (Notion block is only implied by the parameter description in the schema) or what information is retrieved, making it vague compared to more specific alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus sibling tools like 'API-retrieve-a-page', 'API-retrieve-a-database', or 'API-get-block-children'. There's no mention of prerequisites, alternatives, or contextual constraints, leaving the agent with no usage direction beyond the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-retrieve-a-commentC
Retrieve comments
| Name | Required | Description | Default |
|---|---|---|---|
| block_id | Yes | Identifier for a Notion block or page | |
| start_cursor | No | If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results. | |
| page_size | No | The number of items from the full list desired in the response. Maximum: 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Retrieve comments' implies a read-only operation, but it doesn't specify authentication needs, rate limits, error handling, or pagination behavior. The description lacks details on what 'retrieve' entails, such as whether it returns all comments or supports filtering, leaving behavioral traits unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with 'Retrieve comments', which is front-loaded and wastes no words. However, it may be overly brief, risking under-specification. For a tool with three parameters and no annotations, more detail could be beneficial, but the current form is structurally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the return values, error cases, or operational context. For a retrieval tool in a Notion API context, more information on what 'comments' are and how they relate to 'block_id' would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear documentation for 'block_id', 'start_cursor', and 'page_size'. The description adds no parameter-specific information beyond the schema. Since the schema is comprehensive, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract from the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve comments' restates the tool name with minimal elaboration. It specifies the action ('retrieve') and resource ('comments'), but lacks detail about scope or context, making it vague. Compared to siblings like 'API-retrieve-a-block' or 'API-retrieve-a-page', it doesn't clearly differentiate what makes retrieving comments unique, beyond the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or exclusions. Given siblings like 'API-get-block-children' that might overlap in functionality, the absence of usage guidelines leaves the agent without direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-retrieve-a-databaseC
Retrieve a database
| Name | Required | Description | Default |
|---|---|---|---|
| database_id | Yes | An identifier for the Notion database. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Retrieve') without detailing aspects like authentication requirements, rate limits, error handling, or what the retrieval entails (e.g., read-only operation, data format returned). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two words, making it front-loaded and free of unnecessary information. Every word earns its place, though this brevity contributes to gaps in other dimensions like purpose clarity and guidelines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a retrieval tool. It fails to explain what is retrieved (e.g., database properties, schema, content), potential side effects, or response format, leaving the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'database_id' clearly documented as 'An identifier for the Notion database.' The description adds no additional semantic context beyond this, so it meets the baseline score of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve a database' is a tautology that essentially restates the tool name 'API-retrieve-a-database' without adding meaningful specificity. While it indicates a retrieval action on a database resource, it lacks details about what exactly is retrieved (structure, content, metadata) and doesn't differentiate from sibling tools like 'API-retrieve-a-page' or 'API-retrieve-a-block' beyond the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are no explicit instructions, prerequisites, or comparisons to sibling tools (e.g., when to retrieve a database vs. a page or block), leaving the agent with no contextual cues for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-retrieve-a-pageC
Retrieve a page
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Identifier for a Notion page | |
| filter_properties | No | A list of page property value IDs associated with the page. Use this param to limit the response to a specific page property value or values. To retrieve multiple properties, specify each page property ID. For example: `?filter_properties=iAk8&filter_properties=b7dh`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Retrieve a page' implies a read-only operation but doesn't specify authentication requirements, rate limits, error handling, or what the response contains. For a tool with no annotation coverage, this is a significant gap in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two words, 'Retrieve a page', which is front-loaded and wastes no space. While under-specified in content, it earns full marks for brevity and structure as every word contributes directly to the core purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a retrieval tool with 2 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what a 'page' is in context (Notion), how results are returned, or any behavioral aspects. The agent lacks sufficient context to use this tool effectively beyond basic parameter passing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters ('page_id' and 'filter_properties') fully documented in the input schema. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline score of 3 for adequate coverage when the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve a page' is a tautology that essentially restates the tool name 'API-retrieve-a-page'. It doesn't specify what kind of page (Notion page) or provide any distinguishing context from sibling tools like 'API-retrieve-a-database' or 'API-retrieve-a-block'. The purpose is minimally stated but lacks specificity and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With sibling tools like 'API-retrieve-a-database' and 'API-retrieve-a-block', the description offers no context about when this tool is appropriate, what prerequisites exist, or when other tools might be better suited. This leaves the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
API-retrieve-a-page-propertyC
Retrieve a page property item
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | Identifier for a Notion page | |
| property_id | Yes | Identifier for a page [property](https://developers.notion.com/reference/page#all-property-values) | |
| page_size | No | For paginated properties. The max number of property item objects on a page. The default size is 100 | |
| start_cursor | No | For paginated properties. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action ('retrieve') without disclosing behavioral traits such as authentication needs, rate limits, error handling, or what 'retrieve' entails operationally (e.g., read-only, data format). This leaves significant gaps for a tool with 4 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a tool with 4 parameters, the description is incomplete. It fails to address key aspects like return values, error cases, or operational context, making it inadequate for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no meaning beyond the schema, as it doesn't explain parameter relationships or usage context. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Retrieve a page property item' states the action (retrieve) and target (page property item), which is clear but vague. It doesn't specify what a 'property item' entails or differentiate from siblings like 'API-retrieve-a-page' or 'API-retrieve-a-database', leaving ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'API-retrieve-a-page' and 'API-retrieve-a-database', the description lacks context for choosing this specific retrieval tool, offering no explicit or implied usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- First observed
API-get-background-result - First observed
API-get-block-children - First observed
API-get-one-pager - First observed
API-retrieve-a-block - First observed
API-retrieve-a-comment - First observed
API-retrieve-a-database - First observed
API-retrieve-a-page - First observed
API-retrieve-a-page-property
TDQS
Scored across 8 tools
Most tools have distinct purposes targeting specific Notion resources (blocks, pages, databases, comments, properties), but 'API-retrieve-a-block' and 'API-get-block-children' could cause confusion as both relate to blocks with overlapping retrieval functions. The descriptions help clarify, but the boundary isn't perfectly clear.
The naming follows a mostly consistent 'API-[verb]-a-[noun]' pattern for seven tools, but 'API-get-background-result' and 'API-get-one-pager' deviate with different verb structures ('get' vs 'retrieve') and compound nouns. This mixed convention reduces predictability, though the names remain readable.
With 8 tools, the count is well-scoped for a read-only Notion server, covering key retrieval operations without bloat. Each tool serves a clear purpose, making the set manageable and focused on the server's stated functionality.
For a read-only server, the tool set provides comprehensive coverage of Notion's core resources (pages, blocks, databases, comments, properties) and includes useful utilities like background result retrieval. A minor gap exists in lacking a tool for listing/searching across multiple resources, but agents can work around this with the available retrieval tools.
Maintenance
Related MCP Connectors
Read-only MCP server: let AI agents read your ORANO saved-video library, tasks, and memory.
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
Read-only MCP server for Muovi, Argentina's trust-first local services marketplace (6 tools).
- HAVNOAuthapp.havnre
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, read, summarize, and analyze sentiment of Notion pages and databases, turning your Notion workspace into an intelligent, queryable knowledge system.MIT
- AlicenseNot gradedqualityDmaintenanceA token-optimized MCP server for Notion that reduces context window usage by 73% while preserving full functionality, enabling AI assistants to interact with Notion efficiently.18 npm1MIT
- AlicenseNot gradedqualityAmaintenanceA lightweight, read-only MCP server for Notion that enables searching, reading pages, and querying databases with token-efficient output and smart caching.25 npm5MIT
- AlicenseNot gradedqualityDmaintenanceFast, read-only MCP server for Notion that reads directly from local SQLite cache, enabling instant access to Notion pages, databases, and users without API calls or rate limits.1MIT