confluence-mcp

# Better Confluence Communication Server ## Overview This server implements the Model Context Protocol (MCP) for Confluence integration. **This version addresses and fixes bugs found in the existing Confluence server, providing a more stable and reliable experience.** It provides functionalities to execute CQL queries and retrieve page content from Confluence. This server follows the MCP client-server architecture: - Acts as an MCP server providing Confluence functionalities - Connects to Confluence as a data source - Communicates with MCP clients through a standardized protocol # How to use [![smithery badge](https://smithery.ai/badge/@zereight/confluence-mcp)](https://smithery.ai/server/@zereight/confluence-mcp) <a href="https://glama.ai/mcp/servers/p7fnmpaukj"><img width="380" height="200" src="https://glama.ai/mcp/servers/p7fnmpaukj/badge" alt="confluence-mcp MCP server" /></a> ## Using with Claude App, Cline, Roo Code When using with the Claude App, you need to set up your API key and URLs directly. ```json { "mcpServers": { "Confluence communication server": { "command": "npx", "args": ["-y", "@zereight/mcp-confluence"], "env": { "CONFLUENCE_URL": "https://XXXXXXXX.atlassian.net", "JIRA_URL": "https://XXXXXXXX.atlassian.net", "CONFLUENCE_API_MAIL": "Your email", "CONFLUENCE_API_KEY": "KEY_FROM: https://id.atlassian.com/manage-profile/security/api-tokens" } } } } ``` ## Using with Cursor ### Installing via Smithery To install Confluence communication server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@zereight/confluence-mcp): ```bash npx -y @smithery/cli install @zereight/confluence-mcp --client claude ``` When using with Cursor, you can set up environment variables and run the server as follows: ```bash env CONFLUENCE_API_MAIL=your@email.com CONFLUENCE_API_KEY=your-key CONFLUENCE_URL=your-confluence-url JIRA_URL=your-jira-url npx -y @zereight/mcp-confluence ``` - `CONFLUENCE_API_MAIL`: Your email address for the Confluence API. - `CONFLUENCE_API_KEY`: Your Confluence API key. - `CONFLUENCE_URL`: Your Confluence URL. - `JIRA_URL`: Your JIRA URL. ### Confluence Tools - **execute_cql_search**: Executes a CQL query on Confluence to search pages. - Description: Executes a CQL query on the Confluence instance to search for pages. - Input Schema: ```json { "type": "object", "properties": { "cql": { "type": "string", "description": "CQL query string" }, "limit": { "type": "integer", "description": "Number of results to return", "default": 10 } }, "required": ["cql"] } ``` - **get_page_content**: Retrieves the content of a specific Confluence page. - Description: Gets the content of a Confluence page using the page ID. - Input Schema: ```json { "type": "object", "properties": { "pageId": { "type": "string", "description": "Confluence Page ID" } }, "required": ["pageId"] } ``` - **create_page**: Creates a new Confluence page. - Description: Creates a new page in the specified Confluence space. - Input Schema: ```json { "type": "object", "properties": { "spaceKey": { "type": "string", "description": "Space key where the page will be created" }, "title": { "type": "string", "description": "Page title" }, "content": { "type": "string", "description": "Page content in storage format" }, "parentId": { "type": "string", "description": "Parent page ID (optional)" } }, "required": ["spaceKey", "title", "content"] } ``` - **update_page**: Updates an existing Confluence page. - Description: Updates the content of an existing Confluence page. - Input Schema: ```json { "type": "object", "properties": { "pageId": { "type": "string", "description": "ID of the page to update" }, "content": { "type": "string", "description": "New page content in storage format" }, "title": { "type": "string", "description": "New page title (optional)" } }, "required": ["pageId", "content"] } ``` ### Jira Tools - **execute_jql_search**: Executes a JQL query on Jira to search issues. - Description: Executes a JQL query on the Jira instance to search for issues. - Input Schema: ```json { "type": "object", "properties": { "jql": { "type": "string", "description": "JQL query string" }, "limit": { "type": "integer", "description": "Number of results to return", "default": 10 } }, "required": ["jql"] } ``` - **create_jira_issue**: Creates a new Jira issue. - Description: Creates a new issue in the specified Jira project. - Input Schema: ```json { "type": "object", "properties": { "project": { "type": "string", "description": "Project key" }, "summary": { "type": "string", "description": "Issue summary" }, "description": { "type": "string", "description": "Issue description" }, "issuetype": { "type": "string", "description": "Issue type name" }, "assignee": { "type": "string", "description": "Assignee account ID" }, "priority": { "type": "string", "description": "Priority ID" } }, "required": ["project", "summary", "issuetype"] } ``` - **update_jira_issue**: Updates an existing Jira issue. - Description: Updates fields of an existing Jira issue. - Input Schema: ```json { "type": "object", "properties": { "issueKey": { "type": "string", "description": "Issue key (e.g., PROJ-123)" }, "summary": { "type": "string", "description": "New issue summary" }, "description": { "type": "string", "description": "New issue description" }, "assignee": { "type": "string", "description": "New assignee account ID" }, "priority": { "type": "string", "description": "New priority ID" } }, "required": ["issueKey"] } ``` - **transition_jira_issue**: Changes the status of a Jira issue. - Description: Changes the status of a Jira issue using transition ID. - Input Schema: ```json { "type": "object", "properties": { "issueKey": { "type": "string", "description": "Issue key (e.g. PROJ-123)" }, "transitionId": { "type": "string", "description": "Transition ID to change the issue status" } }, "required": ["issueKey", "transitionId"] } ``` - **get_board_sprints**: Get all sprints from a Jira board. - Description: Retrieves all sprints from a specified Jira board. - Input Schema: ```json { "type": "object", "properties": { "boardId": { "type": "string", "description": "Jira board ID" }, "state": { "type": "string", "description": "Filter sprints by state (active, future, closed)", "enum": ["active", "future", "closed"] } }, "required": ["boardId"] } ``` - **get_sprint_issues**: Get all issues from a sprint. - Description: Retrieves all issues from a specified sprint. - Input Schema: ```json { "type": "object", "properties": { "sprintId": { "type": "string", "description": "Sprint ID" }, "fields": { "type": "array", "items": { "type": "string" }, "description": "List of fields to return for each issue" } }, "required": ["sprintId"] } ``` - **get_current_sprint**: Get current active sprint from a board with its issues. - Description: Retrieves the current active sprint and its issues from a specified board. - Input Schema: ```json { "type": "object", "properties": { "boardId": { "type": "string", "description": "Jira board ID" }, "includeIssues": { "type": "boolean", "description": "Whether to include sprint issues in the response", "default": true } }, "required": ["boardId"] } ``` - **get_epic_issues**: Get all issues belonging to an epic. - Description: Retrieves all issues that belong to a specified epic. - Input Schema: ```json { "type": "object", "properties": { "epicKey": { "type": "string", "description": "Epic issue key (e.g. CONNECT-1234)" }, "fields": { "type": "array", "items": { "type": "string" }, "description": "List of fields to return for each issue" } }, "required": ["epicKey"] } ``` - **get_user_issues**: Get all issues assigned to or reported by a specific user in a board. - Description: Retrieves all issues associated with a specific user in a board. - Input Schema: ```json { "type": "object", "properties": { "boardId": { "type": "string", "description": "Jira board ID" }, "username": { "type": "string", "description": "Username to search issues for" }, "type": { "type": "string", "description": "Type of user association with issues", "enum": ["assignee", "reporter"], "default": "assignee" }, "status": { "type": "string", "description": "Filter by issue status", "enum": ["open", "in_progress", "done", "all"], "default": "all" } }, "required": ["boardId", "username"] } ```