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
Using with Claude App, Cline, Roo Code
When using with the Claude App, you need to set up your API key and URLs directly.
{
"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",
"CONFLUENCE_IS_CLOUD": "true" // Set to "false" for Server/Data Center
}
}
}
}
Using with Cursor
Installing via Smithery
To install Confluence communication server for Claude Desktop automatically via Smithery:
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:
env [email protected] 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_IS_CLOUD
: Determines Confluence version (Cloud or Server)- Default: true (Cloud version)
- Set to 'false' explicitly for Server/Data Center version
- Affects API endpoint paths:
- Cloud:
/wiki/rest/api
- Server:
/rest/api
- Cloud:
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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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:
{ "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"] }
[
{
"description": "Execute a CQL query on Confluence to search pages",
"inputSchema": {
"properties": {
"cql": {
"description": "CQL query string",
"type": "string"
},
"limit": {
"default": 10,
"description": "Number of results to return",
"type": "integer"
}
},
"required": [
"cql"
],
"type": "object"
},
"name": "execute_cql_search"
},
{
"description": "Get the content of a Confluence page",
"inputSchema": {
"properties": {
"pageId": {
"description": "Confluence Page ID",
"type": "string"
}
},
"required": [
"pageId"
],
"type": "object"
},
"name": "get_page_content"
},
{
"description": "Create a new Confluence page",
"inputSchema": {
"properties": {
"content": {
"description": "Page content in storage format",
"type": "string"
},
"parentId": {
"description": "Parent page ID (optional)",
"type": "string"
},
"spaceKey": {
"description": "Space key where the page will be created",
"type": "string"
},
"title": {
"description": "Page title",
"type": "string"
}
},
"required": [
"spaceKey",
"title",
"content"
],
"type": "object"
},
"name": "create_page"
},
{
"description": "Update an existing Confluence page",
"inputSchema": {
"properties": {
"content": {
"description": "New page content in storage format",
"type": "string"
},
"pageId": {
"description": "ID of the page to update",
"type": "string"
},
"title": {
"description": "New page title (optional)",
"type": "string"
}
},
"required": [
"pageId",
"content"
],
"type": "object"
},
"name": "update_page"
},
{
"description": "Execute a JQL query on Jira to search issues",
"inputSchema": {
"properties": {
"jql": {
"description": "JQL query string",
"type": "string"
},
"limit": {
"default": 10,
"description": "Number of results to return",
"type": "integer"
}
},
"required": [
"jql"
],
"type": "object"
},
"name": "execute_jql_search"
},
{
"description": "Create a new Jira issue",
"inputSchema": {
"properties": {
"assignee": {
"description": "Assignee account ID",
"type": "string"
},
"description": {
"description": "Issue description",
"type": "string"
},
"issuetype": {
"description": "Issue type name",
"type": "string"
},
"priority": {
"description": "Priority ID",
"type": "string"
},
"project": {
"description": "Project key",
"type": "string"
},
"summary": {
"description": "Issue summary",
"type": "string"
}
},
"required": [
"project",
"summary",
"issuetype"
],
"type": "object"
},
"name": "create_jira_issue"
},
{
"description": "Update an existing Jira issue",
"inputSchema": {
"properties": {
"assignee": {
"description": "New assignee account ID",
"type": "string"
},
"description": {
"description": "New issue description",
"type": "string"
},
"issueKey": {
"description": "Issue key (e.g. PROJ-123)",
"type": "string"
},
"priority": {
"description": "New priority ID",
"type": "string"
},
"summary": {
"description": "New issue summary",
"type": "string"
}
},
"required": [
"issueKey"
],
"type": "object"
},
"name": "update_jira_issue"
},
{
"description": "Change the status of a Jira issue",
"inputSchema": {
"properties": {
"issueKey": {
"description": "Issue key (e.g. PROJ-123)",
"type": "string"
},
"transitionId": {
"description": "Transition ID to change the issue status",
"type": "string"
}
},
"required": [
"issueKey",
"transitionId"
],
"type": "object"
},
"name": "transition_jira_issue"
},
{
"description": "Get all sprints from a Jira board",
"inputSchema": {
"properties": {
"boardId": {
"description": "Jira board ID",
"type": "string"
},
"state": {
"description": "Filter sprints by state (active, future, closed)",
"enum": [
"active",
"future",
"closed"
],
"type": "string"
}
},
"required": [
"boardId"
],
"type": "object"
},
"name": "get_board_sprints"
},
{
"description": "Get all issues from a sprint",
"inputSchema": {
"properties": {
"fields": {
"description": "List of fields to return for each issue",
"items": {
"type": "string"
},
"type": "array"
},
"sprintId": {
"description": "Sprint ID",
"type": "string"
}
},
"required": [
"sprintId"
],
"type": "object"
},
"name": "get_sprint_issues"
},
{
"description": "Get current active sprint from a board with its issues",
"inputSchema": {
"properties": {
"boardId": {
"description": "Jira board ID",
"type": "string"
},
"includeIssues": {
"default": true,
"description": "Whether to include sprint issues in the response",
"type": "boolean"
}
},
"required": [
"boardId"
],
"type": "object"
},
"name": "get_current_sprint"
},
{
"description": "Get all issues belonging to an epic",
"inputSchema": {
"properties": {
"epicKey": {
"description": "Epic issue key (e.g. CONNECT-1234)",
"type": "string"
},
"fields": {
"description": "List of fields to return for each issue",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"epicKey"
],
"type": "object"
},
"name": "get_epic_issues"
},
{
"description": "Get all issues assigned to or reported by a specific user in a board",
"inputSchema": {
"properties": {
"boardId": {
"description": "Jira board ID",
"type": "string"
},
"status": {
"default": "all",
"description": "Filter by issue status",
"enum": [
"open",
"in_progress",
"done",
"all"
],
"type": "string"
},
"type": {
"default": "assignee",
"description": "Type of user association with issues",
"enum": [
"assignee",
"reporter"
],
"type": "string"
},
"username": {
"description": "Username to search issues for",
"type": "string"
}
},
"required": [
"boardId",
"username"
],
"type": "object"
},
"name": "get_user_issues"
}
]