A FastMCP server for Atlassian Confluence integration enabling page management, search, comments, and labels
The Confluence FastMCP server provides 12 well-structured tools with consistent naming patterns and reasonable descriptions. Tool names follow the verb_noun convention (get_page, create_page, delete_page, search_confluence, add_comment, etc.), which aligns with Arcade pattern:tool. All tools have descriptions ranging from 30 - 95 characters. Input schemas are properly defined with type information and descriptions for most parameters. However, there are meaningful gaps: (1) Output schemas are not documented, we can see tools return Dict[str, Any] but no structured schema definition is visible in the source. (2) Parameter descriptions, while present, are sometimes terse and lack detail on format, range, or constraints (e.g., 'limit' parameters lack min/max bounds). (3) Error handling is basic, the code shows generic try/except blocks returning {'status': 'error', 'message': str(e)}, with no guidance on recovery, retryability, or actionable next steps. (4) No tool uses explicit error classification or enum constraints for parameters like 'depth' or 'content_format'. (5) No evidence of pagination documentation for search_confluence or get_spaces despite returning large lists. Tools are well-composed (each has single responsibility) and naming is clear, pushing the score to the low-60s; but missing output documentation and weak error handling prevent a higher grade.
Add a comment to a Confluence page.
Add a label to a Confluence page.
Create a new Confluence page.
Delete a Confluence page.
Get comments for a Confluence page.
Get labels for a Confluence page.
Get Confluence page content and metadata by ID.
No output schemas documented. Tools return Dict[str, Any] with no field descriptions, making it impossible for LLMs to plan downstream calls or extract specific data. Per pattern:tool and mxe:include-chaining-ids, responses should include IDs for tool chaining (e.g., create_page should return page_id for use in add_comment).
Generic error handling with no guidance. All tools return {'status': 'error', 'message': str(e)} on exception. No classification of errors as retryable vs fatal, no actionable recovery hints (e.g., 'Try search_confluence() with a partial name'). Per pattern:recovery-guide, errors must guide the LLM's next action.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 71 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 47 | - | v1 |
Get ancestor (parent) pages of a Confluence page.
Get child pages of a Confluence page.
List available Confluence spaces.
Search Confluence content using CQL or text search.
Update an existing Confluence page.
Numeric parameters lack bounds. 'limit' parameters in get_page_children, get_spaces, and search_confluence have no documented min/max. No explicit type constraints visible in descriptions.
Enum constraints not declared. 'depth' parameter in get_comments accepts 'all', 'root', or 'specific level', should be declared as an enum in the schema. 'content_format' in create_page and update_page accepts 'storage' or 'wiki', should be an enum. Per pattern:constrained-input, enums prevent hallucinated values.
No pagination documentation for search_confluence and get_spaces. Both tools accept 'limit' and likely return lists, but no mention of total count, next_cursor, or offset. Per pattern:paginated-result, large-result tools must document pagination to avoid context window exhaustion.
Parameter descriptions are terse and lack format/constraint details. Examples: 'parent_id' in create_page lacks explanation of when it's optional or how it affects hierarchy. 'query' in search_confluence mentions CQL briefly but does not explain how to construct queries.
Destructive tool (delete_page) has no confirmation or dry-run pattern. Per pattern:confirmation-request, irreversible operations should support a dry-run step or require explicit confirmation to prevent catastrophic agent errors.
No tool annotations visible in source. Per CURRENT MCP spec (2026-07-28), tools should declare readOnlyHint, destructiveHint, and idempotentHint in metadata to guide agent behavior. E.g., get_page should have readOnlyHint=true; delete_page should have destructiveHint=true.