Confluence API Docs MCP Server
Allows generating API documentation in Confluence from Swagger/OpenAPI specs and NestJS controllers, with automatic Postman collection generation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Confluence API Docs MCP ServerCreate API documentation from http://petstore.swagger.io/v2/swagger.json in space DEV"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Confluence API Docs MCP Server
An MCP (Model Context Protocol) server that generates API documentation in Confluence from:
Swagger/OpenAPI specifications (JSON files or URLs)
NestJS controller files (TypeScript decorators)
Automatically generates Postman collections and embeds them in documentation pages.
Installation
npm install
npm run buildRelated MCP server: Confluence MCP Server
Configuration
Copy
.env.exampleto.envFill in your Confluence Cloud credentials:
CONFLUENCE_BASE_URL: Your Atlassian Cloud URL (e.g., https://mycompany.atlassian.net)CONFLUENCE_EMAIL: Your email addressCONFLUENCE_API_TOKEN: API token from https://id.atlassian.com/manage-profile/security/api-tokens
Add to
~/.claude.json:
{
"mcpServers": {
"confluence-api-docs": {
"command": "node",
"args": ["/home/harsh-vaghela/saleshandy/confluence-api-docs-mcp/dist/index.js"],
}
}
}Usage
Available Tools
Space Management:
list_spaces- List all Confluence spacessearch_pages- Search for existing pagesget_page- Get page contentdelete_page- Delete a page
Swagger/OpenAPI Documentation:
create_api_doc- Create API documentation from Swagger/OpenAPI spec (URL or file)update_api_doc- Update existing API documentation from specsync_swagger_to_confluence- Full sync with configurable grouping (tag, path, or single page)
NestJS Controller Documentation:
create_api_doc_from_controller- Create documentation from NestJS controller filesupdate_api_doc_from_controller- Update documentation from controller files
Note: All tools automatically generate Postman collections embedded in the documentation.
Examples
List available spaces:
Show me available Confluence spacesCreate API docs from Swagger:
Create API documentation in space DEV from http://localhost:3000/swagger.jsonCreate API docs from NestJS controller:
Create API documentation from src/controllers/dialer.controller.ts in space DEV with base URL https://api.example.comCreate docs from controller directory:
Create API documentation from src/controllers in space DEVUpdate API docs:
Update page 12345678 with latest API spec from /path/to/swagger.jsonUpdate from controller:
Update page 12345678 from src/controllers/dialer.controller.tsDevelopment
npm run dev # Run with ts-node
npm run build # Build to dist/
npm start # Run compiled version
npm run clean # Remove dist/Architecture
MCP Server
├── Parsers
│ ├── Swagger Parser Service
│ │ └── Parses OpenAPI specs from URLs or files
│ └── Controller Parser Service
│ └── Parses NestJS TypeScript controller files
├── Generators
│ ├── Doc Generator Service
│ │ └── Converts parsed specs to Confluence storage format
│ └── Postman Generator Service
│ └── Generates Postman Collection v2.1 JSON
├── Confluence Client Service
│ └── Handles Confluence REST API v2 calls
└── Tools
├── Space Management
├── Swagger-based Documentation
├── Controller-based Documentation
└── MaintenanceDual-Mode Pipeline
Both Swagger and Controller inputs converge to the same ParsedSwagger format, ensuring identical output documentation:
Swagger JSON/URL → Swagger Parser → ParsedSwagger ─┐
├→ Doc Generator → Confluence HTML + Postman JSON
NestJS Controller → Controller Parser → ParsedSwagger ┘Supported Swagger/OpenAPI Versions
OpenAPI 3.0.x
OpenAPI 3.1.x
Swagger 2.0
License
MIT
Available Tools
9 toolscreate_api_docC
Create a new API documentation page from a Swagger/OpenAPI specification
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional: custom page title (defaults to API title) | |
| spaceKey | Yes | Target Confluence space key | |
| filterTags | No | Optional: only include endpoints with these tags | |
| filterPaths | No | Optional: only include endpoints matching these path patterns | |
| parentPageId | No | Optional: parent page ID for nesting | |
| swaggerSource | Yes | URL or file path to the Swagger/OpenAPI specification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it is a single sentence. It conveys that a page is created but does not disclose whether the operation is idempotent, whether an existing page with the same title is overwritten or duplicated, or whether swaggerSource must be reachable from the server. For a mutating tool with zero annotation coverage, this is a significant gap.
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?
A single 12-word sentence with zero filler; the verb and object are front-loaded. Every word earns its place and nothing extraneous is included.
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?
For a 6-parameter mutation tool with no annotations, no output schema, and a near-twin sibling, the description is too thin. It omits default filter behavior (does omitting filterTags/filterPaths import all endpoints?), the on-success result, and re-run semantics. An agent gets schema help for parameters but no decision help for tool selection or operational expectations.
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%: every parameter (swaggerSource, spaceKey, title, filterTags, filterPaths, parentPageId) already carries an inline description, including optionality and defaults. The tool description adds no parameter meaning beyond the schema, which matches the baseline-3 rule for high-coverage schemas.
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 states a specific verb ('Create'), a concrete deliverable ('new API documentation page'), and the input source ('from a Swagger/OpenAPI specification'). The source phrase implicitly distinguishes it from the controller-based sibling create_api_doc_from_controller, but it does not explicitly differentiate it from sync_swagger_to_confluence, which also ingests Swagger specs.
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 offers no guidance on when to choose this tool over siblings. Nothing clarifies whether to prefer this over create_api_doc_from_controller (controller source), update_api_doc (page already exists), or sync_swagger_to_confluence, nor whether re-running creates duplicates. An agent selecting between the two create variants must rely on name-guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_api_doc_from_controllerC
Create a new API documentation page from NestJS controller files
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional: custom page title | |
| baseUrl | No | Optional: API base URL for Postman collection | |
| spaceKey | Yes | Target Confluence space key | |
| filterTags | No | Optional: only include endpoints with these tags | |
| filterPaths | No | Optional: only include endpoints matching these path patterns | |
| parentPageId | No | Optional: parent page ID for nesting | |
| controllerPath | Yes | Path to a .controller.ts file or directory containing controller files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears the full responsibility for behavioral disclosure. It states a creation action but does not mention side effects, whether the tool is idempotent, what happens if a page with the same title exists, or any permission requirements. This is insufficient for a mutation tool that creates a resource.
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 no filler words or redundant information. It states the action and source directly, earning its place without waste.
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?
With seven parameters, no output schema, and no annotations, this terse description leaves significant gaps. It omits behavioral details, return/result information, and any guidance about how controller files are processed. The schema covers parameters well, but the overall tool context is under-specified for a complex operation.
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?
All seven parameters are already documented in the input schema, so the baseline for parameter semantics is met. The description's mention of 'NestJS controller files' adds a tad of context about controllerPath, but it mostly restates what the schema already conveys. No additional parameter-specific insights are provided.
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 uses a clear verb (create), resource (new API documentation page), and source (NestJS controller files), so an agent immediately understands the action. However, it does not differentiate this from sibling create_api_doc or update_api_doc_from_controller, since the description does not state what distinguishes creation from controller files vs. other sources or updating.
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?
There is no guidance on when to use this tool versus siblings like create_api_doc or update_api_doc_from_controller. The phrase 'from NestJS controller files' implies a use case but provides no explicit conditions, exclusions, or alternative routing. An agent must infer when creation is appropriate rather than an update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pageC
Delete a Confluence page
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The Confluence page ID to delete |
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 restates the action implied by the tool name and does not mention irreversibility, cascading effects on child pages, authentication requirements, or any other side effects of deletion.
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, front-loaded sentence with no filler. It is appropriately concise for such a simple operation, though it is arguably too spare to add much value beyond the tool name.
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?
For a destructive tool with no annotations and no output schema, the description is too minimal. An agent cannot determine whether deletion is permanent, whether related content is affected, or what response to expect on success or failure.
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 already documents pageId with 100% coverage and a clear description. The tool description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 applies.
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 operation ('Delete') and the resource ('a Confluence page'), making the tool's purpose immediately understandable. It distinguishes itself from siblings like get_page, create_api_doc, and update_api_doc, though it is terse and does not clarify whether deletion is soft or permanent.
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 gives no guidance on when to use this tool versus alternatives, nor any conditions or exclusions. It does not mention prerequisites like permissions, whether deletion is reversible, or when a sibling tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageA
Get the content of an existing Confluence page
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The Confluence page ID |
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. It discloses that this is a read operation and that the page must already exist, but it does not clarify what 'content' includes (body, metadata, attachments) or how missing/invalid pages are handled.
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?
One short sentence with no wasted words, and the core action is front-loaded. It is concise without sacrificing clarity.
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?
The tool is simple, but with no output schema and no annotations, the vague term 'content' leaves questions about return format and error behavior. It is minimally adequate but has clear gaps in routing and expected output details.
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 already fully documents the single pageId parameter. The description adds no parameter-specific meaning beyond the schema.
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 states a specific verb ('get') and resource ('content of an existing Confluence page'). This clearly distinguishes it from sibling create/update/delete/list/search operations.
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 intended use is implied: when you need the content of an existing page. However, there is no explicit guidance on when to choose this over search_pages or list_spaces, nor any mention of how to obtain the pageId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spacesA
List all available Confluence spaces
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. 'List all available Confluence spaces' indicates a read-only operation and implies permission-based availability, but it does not disclose output shape, pagination, or ordering. This is acceptable for a simple list but not deeply informative.
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, front-loaded sentence with no wasted words. Every word contributes meaning and the core operation is immediately visible.
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?
For a zero-parameter list tool, the description is nearly sufficient for an agent to invoke it correctly. It lacks details about the returned fields or limits, but the absence of parameters and the simple read-only nature keep the requirements minimal.
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 is empty with 100% coverage, so there are no parameters requiring explanation. The description appropriately handles this by focusing on the operation itself.
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 uses a specific verb ('List') and resource ('all available Confluence spaces'), making the function unambiguous. It is clearly distinct from the sibling page- and doc-focused tools.
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?
There is no guidance about when to choose list_spaces over alternatives, nor any mention of exclusions or use cases. The intended context must be inferred entirely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pagesC
Search for existing pages in Confluence
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query term | |
| spaceKey | No | Optional: limit search to a specific space key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Search for existing pages.' It does not mention whether the search covers titles, bodies, or both, whether results are paginated, or what the return shape is. The read-only nature is implied but not stated.
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 six-word sentence with no redundancy or filler, and the core action is front-loaded. It could have included a brief usage note or scope clarification without becoming bloated, so it is concise but not maximally useful in structure.
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?
This is a simple 2-parameter tool with no nested objects and full schema coverage, so the basic invocation is clear. However, since there is no output schema, the description does not explain what the search returns, and there is no mention of search semantics or result limits. Adequate for a basic call, but incomplete for confident use.
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 both parameters are already documented in the schema. The tool description adds no extra meaning to query or spaceKey, but it does align with the search action. A baseline score of 3 is appropriate.
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 states a specific verb ('Search') and resource ('existing pages in Confluence'), so an agent understands this is a lookup-by-query tool. However, it does not explicitly distinguish it from siblings like get_page or list_spaces, so it stops short of full 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?
The description gives no guidance on when to prefer search_pages over get_page or list_spaces, and no exclusions or alternative suggestions. The schema mentions spaceKey as an optional filter, but the description does not explain when that filter matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_swagger_to_confluenceC
Sync a Swagger/OpenAPI spec to Confluence, optionally creating nested pages
| Name | Required | Description | Default |
|---|---|---|---|
| groupBy | No | How to organize pages: tag (separate pages per tag), path (separate pages per path), or single (all on one page) | |
| spaceKey | Yes | Target Confluence space key | |
| parentPageId | No | Optional: parent page ID for organizing documentation | |
| swaggerSource | Yes | URL or file path to the Swagger/OpenAPI specification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It states 'sync' and optional nested pages, but does not disclose whether existing pages are updated or overwritten, whether removed spec items are deleted, or what side effects a sync may have.
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 sentence, front-loaded with the core operation, and contains no filler. It could have included more behavioral detail, but as written it is compact and easy to parse.
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?
With 4 parameters, no annotations, no output schema, and several overlapping sibling tools, one sentence is not enough for an agent to safely invoke this tool. The description does not clarify sync semantics, behavior for existing pages, or page-organization outcomes sufficiently.
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 parameters are already well documented and the baseline is 3. The description adds only the notion of nested pages, loosely tied to parentPageId/groupBy, but provides no additional parameter-level meaning beyond the schema.
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 names a specific verb (sync), a source (Swagger/OpenAPI spec), and a target (Confluence), and adds optional nested-page creation. It is clear about the core operation, though it does not explicitly differentiate it from sibling tools like create_api_doc or update_api_doc.
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?
There is no guidance on when to use this tool instead of the similarly purposed create_api_doc, update_api_doc, or controller-based siblings. Usage context is only implied by the source type, with no alternatives, exclusions, or conditions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_api_docB
Update an existing API documentation page with new Swagger/OpenAPI spec
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | Existing Confluence page ID to update | |
| filterTags | No | Optional: only include endpoints with these tags | |
| filterPaths | No | Optional: only include endpoints matching these path patterns | |
| swaggerSource | Yes | URL or file path to the Swagger/OpenAPI specification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It indicates the page will be modified, but it does not state whether the page content is overwritten wholesale, whether existing non-generated content is preserved, whether a new Confluence version is created, or what permissions/errors are involved.
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 focused sentence with no filler or redundant wording. It puts the core action and target resource up front, making it easy for an agent to grasp quickly.
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?
For a mutating tool with no annotations and no output schema, the description is incomplete: it omits the optional filtering behavior, the effect on page content, and how a successful update is communicated. Sibling differentiation is also absent, so an agent cannot confidently choose this over similar update/sync tools.
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 already describes all four parameters, so the baseline is 3. The description adds a little meaning by tying 'existing page' to pageId and 'new spec' to swaggerSource, but it adds nothing about filterTags or filterPaths.
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 uses a specific verb ('Update'), a clear resource ('an existing API documentation page'), and the input type ('new Swagger/OpenAPI spec'). It clearly distinguishes update-from-create by saying 'existing', but it does not distinguish this tool from sibling 'update_api_doc_from_controller' or 'sync_swagger_to_confluence'.
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 phrasing implies this tool is for refreshing an already-created Confluence API doc page when a new spec is available. However, it gives no explicit when-not-to-use guidance, no prerequisites, and does not mention alternatives like create_api_doc or update_api_doc_from_controller.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_api_doc_from_controllerB
Update an existing API documentation page with NestJS controller files
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | Existing Confluence page ID to update | |
| baseUrl | No | Optional: API base URL for Postman collection | |
| filterTags | No | Optional: only include endpoints with these tags | |
| filterPaths | No | Optional: only include endpoints matching these path patterns | |
| controllerPath | Yes | Path to a .controller.ts file or directory containing controller files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects. It states the update action but does not explain whether the existing page content is replaced, merged, or preserved, nor does it mention authentication requirements or failure behavior. This is a significant gap for a mutating operation.
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, compact sentence that front-loads the core action and resource. Every word earns its place, with no padding or redundant restatement of the tool name.
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 that this is a mutation tool with no annotations and no output schema, the description is too thin. It fails to disclose the overwrite/merge behavior of the update or provide any operational context such as whether the page must exist or what happens to unspecified content. Parameter documentation is solid, but the behavioral context is incomplete.
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 every parameter already has a meaningful description in the schema. The tool description adds little beyond echoing the controller-file concept already present in controllerPath. Per baseline, a 3 is appropriate when the schema carries the parameter documentation load.
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 names a specific verb ('Update'), a specific resource ('existing API documentation page'), and a specific input source ('NestJS controller files'). This distinguishes it clearly from the sibling create_api_doc_from_controller and from Swagger-based tools like sync_swagger_to_confluence.
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 about when to choose this tool versus alternatives such as update_api_doc or create_api_doc_from_controller. The agent must infer from the tool name and description that this is for updating existing pages from controller files, with no explicit conditions or exclusions.
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. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
create_api_doc - First observed
create_api_doc_from_controller - First observed
delete_page - First observed
get_page - First observed
list_spaces - First observed
search_pages - First observed
sync_swagger_to_confluence - First observed
update_api_doc - First observed
update_api_doc_from_controller
TDQS
The tool set contains overlapping functions, particularly create_api_doc and sync_swagger_to_confluence, which both handle Swagger/OpenAPI imports with unclear distinctions. Similarly, create_api_doc and create_api_doc_from_controller differ only by source but share the 'create' prefix, causing potential misselection. The generic page operations are distinct, but the API documentation tools blur boundaries.
Most tools follow a verb_noun pattern (e.g., list_spaces, get_page, delete_page), but sync_swagger_to_confluence breaks this convention with an irregular long phrase. Additionally, create_api_doc and create_api_doc_from_controller inconsistently encode the source (one has a suffix, the other does not), reducing predictability.
With 9 tools, the server is reasonably scoped for managing Confluence pages and API documentation. The count is not excessive, though some redundancy among Swagger/OpenAPI tools makes it feel slightly heavier than necessary.
The core CRUD operations for pages are covered (create, read, update, delete), along with search and space listing. API documentation generation supports multiple sources (Swagger, NestJS) and nested pages via sync. Missing minor features like version history or publishing workflows, but no critical gaps for the stated domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate wiki docs from source code. Supports PowerShell, Python, Go, C#, Java, COBOL.
Detect breaking changes, generate changelogs, diff, and validate OpenAPI specs.
Generate, search, and manage codebase documentation on DocuWriter.ai. 72 tools incl. Autopilot.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Related MCP Servers
- AlicenseAqualityDmaintenanceConverts REST API code (like NestJS controllers or FastAPI endpoints) to Postman collections and environments, helping developers automatically sync their API endpoints with Postman.225MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI models to interact with Confluence knowledge bases by searching, reading, and creating pages through the Confluence REST API. It provides a suite of tools for space management, document retrieval, and content creation, including a mock mode for local testing.-
- FlicenseAqualityDmaintenanceEnables reading and analyzing Confluence documentation content through the Confluence REST API. Supports extracting and converting text, tables, code blocks, and images from Confluence pages for Q\&A and analysis.6-
- AlicenseBqualityDmaintenanceAutomatically generates Postman collections from code directories by analyzing API endpoints and parameters, enabling easy testing, documentation, and sharing.143MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/saleshandy/saleshandy-confluence-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server