MCP server for querying a Notion knowledge base
The server implements a single tool, ask_notion_question, which has a clear purpose but significant structural and documentation gaps. The tool definition is visible in the source code with an explicit @mcp.tool() decorator. However, the parameter schema is minimal (only 'question' with basic type), the description lacks critical details about behavior and side effects, and there is no documented output schema. The tool accepts a 'ctx' parameter which is internal to the MCP framework and should not be exposed in the tool schema. Error handling is present but recovery guidance is limited. Overall, this is a mediocre implementation typical of early-stage MCP servers.
Ask a question about the Notion knowledge base. Args: question: The question to ask about the Notion knowledge base ctx: MCP context for logging and progress tracking Returns: Dictionary containing the answer and related Notion page information Raises: ValueError: If the API key is not set or if the request fails
Minimal input schema: only 'question' parameter documented with type string, no constraints, enums, length limits, or format specification
No documented output schema: tool returns Dict[str, Any] with fields 'answer', 'notion_page_url', 'notion_page_id' but LLM has no way to know what to expect or plan downstream operations
Description is generic and lacks specificity: does not clearly state when to use this tool vs alternatives, what the question format should be, expected response length, or use cases
Tool name 'ask_notion_question' is vague about what 'asking' means, does it search, retrieve, summarize, or generate? More specific names like 'search_notion_knowledge_base' or 'query_notion_documents' would be clearer
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 36 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 36 | - | v1 |
Error messages are wrapped in ValueError but do not include actionable recovery guidance for the LLM, e.g., 'API request failed' does not suggest retry, check credentials, or alternate paths
API key (DIFY_API_BACKEND_KEY) is correctly injected via environment variable, but tool description does not mention any prerequisites or setup steps required by the user