Atlassian Cloud MCP
Use this integration to connect securely with an Atlassian Cloud Model Context Protocol (MCP) server and access its tools in real time.
Case Management · Atlassian Cloud MCP MCP
Details
| ID | Atlassian Cloud MCP |
|---|---|
| Provider | Atlassian |
| Category | Case Management |
| From Version | 8.13.0 |
| Docker Image | demisto/mcp:1.0.0.10120494 |
| Supported Modules | Agentix Cortex Cloud Cloud Runtime Security Cloud Posture Security XSIAM EDR |
Connection settings
| Parameter | Name | Type | Required | Default |
|---|---|---|---|---|
| Authorization code | auth_code |
Credentials | No | — |
Commands (4)
An MCP server publishes no fixed command set: list-tools and
call-tool are the protocol plumbing, and the tools they reach are
discovered from the remote server when the instance connects. The pack cannot name them ahead of time, so
neither can this page.
-
atlassian-cloud-mcp-auth-testTest the authentication configuration with the MCP server.
-
atlassian-cloud-mcp-generate-login-urlGenerate an authentication login URL.
-
call-toolCalls a specific tool on the MCP server with optional input parameters.
-
list-toolsRetrieves a list of available tools in the Atlassian Cloud MCP server.
import demistomock as demisto from CommonServerPython import * from MCPApiModule import * import asyncio from urllib.parse import unquote ATLASSIAN_BASE_URL = "https://mcp.atlassian.com/v1/mcp" ATLASSIAN_REDIRECT_URI = "http://127.0.0.1:8000/callback" ATLASSIAN_AUTH_TYPE = AuthMethods.DYNAMIC_CLIENT_REGISTRATION.value COMMAND_PREFIX = "atlassian-cloud-mcp" SERVER_NAME = "Atlassian Cloud MCP" async def main() -> None: # pragma: no cover params = demisto.params() args = demisto.args() command = demisto.command() client = None try: auth_code = unquote(params.get("auth_code", {}).get("password") or "") client = Client( base_url=ATLASSIAN_BASE_URL, command_prefix=COMMAND_PREFIX, auth_type=ATLASSIAN_AUTH_TYPE, auth_code=auth_code, redirect_uri=ATLASSIAN_REDIRECT_URI, ) demisto.debug(f"Command being called is {command}") if command == "test-module": raise DemistoException( "\nTest module is unavailable for this integration. " f"Please use the **!{COMMAND_PREFIX}-auth-test** command to test " "connectivity after setting the Authorization Code.", ) elif command == "list-tools": result = await client.list_tools(SERVER_NAME) return_results(result) elif command == "call-tool": result = await client.call_tool(args["name"], args.get("arguments", "")) return_results(result) elif command == f"{COMMAND_PREFIX}-auth-test": result = await client.test_connection(auth_test=True) return_results(result) elif command == f"{COMMAND_PREFIX}-generate-login-url": result = await generate_login_url( client._oauth_handler, auth_type=ATLASSIAN_AUTH_TYPE, redirect_uri=ATLASSIAN_REDIRECT_URI ) return_results(result) else: raise NotImplementedError(f"Command {command} is not implemented") except BaseException as eg: root_msg = extract_root_error_message(eg) return_error(f"Failed to execute {command} command.\nError:\n{root_msg}") finally: if client: demisto.debug(f"Closing client connection for {command}") await client.close() """ ENTRY POINT """ if __name__ in ("__main__", "__builtin__", "builtins"): asyncio.run(main())