Skip to main content
Glama

MCP Atlassian

README.md11.1 kB
# MCP Atlassian A Model Context Protocol (MCP) server that provides comprehensive tools for interacting with Atlassian products (Confluence and Jira). ## Overview This MCP server allows AI agents to interact with Atlassian products through a standardized interface. It provides extensive tools for: - **Confluence**: Full CRUD operations, content search, space management, page management, comments, labels, and more using v2 REST API - **Jira**: Issue management, project operations, transitions, comments, and comprehensive workflow support ## Key Features - **Modern API Support**: Uses Confluence v2 REST API with fallback to v1 for search functionality - **Comprehensive Toolset**: 18+ Confluence tools and 8+ Jira tools covering all major operations - **Security & Privacy**: Built-in PII filtering and SSL verification controls - **Flexible Configuration**: Support for separate service URLs, authentication methods, and tool filtering - **Pagination Support**: Cursor-based pagination for v2 APIs and offset/limit for v1 APIs - **Error Handling**: Comprehensive error handling with detailed error messages - **Type Safety**: Full TypeScript implementation with proper type definitions ## Prerequisites - Node.js (v16 or higher) - npm or yarn - Atlassian account with API token - Docker (optional, for containerized deployment) ## Installation ### Standard Installation 1. Clone the repository: ```bash git clone https://github.com/yourusername/mcp-atlassian.git cd mcp-atlassian ``` 2. Install dependencies: ```bash npm install # or using make make install ``` 3. Create a `.env` file in the root directory with your Atlassian credentials: ``` ATLASSIAN_HOST=https://your-domain.atlassian.net ATLASSIAN_EMAIL=your-email@example.com ATLASSIAN_API_TOKEN=your-api-token ``` ### Docker Installation 1. Clone the repository: ```bash git clone https://github.com/yourusername/mcp-atlassian.git cd mcp-atlassian ``` 2. Create a `.env` file as described above. 3. Build and run the Docker container: ```bash # Build the Docker image make docker-build # Run the Docker container make docker-run # Or use Docker Compose make docker-compose ``` ## Usage ### Starting the Server ```bash # Using npm npm start # Using make make start # Using Docker make docker-run ``` This will start the MCP server, which will listen and respond on streamable HTTP. ### MCP configuration ```json "mcp-searchapi": { "name": "mcp-searchapi", "type": "streamable-http", "streamable": true, "url": "http://localhost:3007/mcp" } ``` ### Available Tools #### Confluence Tools **Search & Discovery:** - **search_confluence**: Search for content in Confluence using v1 API with CQL - Parameters: `searchText` (string), `spaceKey` (string, optional), `limit` (number), `start` (number) - **search_confluence_pages_by_title**: Search pages by title using v2 API - Parameters: `title` (string, optional), `spaceId` (string, optional), `limit` (number), `cursor` (string, optional) **Space Management:** - **get_confluence_space_by_id_or_key**: Get information about a specific Confluence space - Parameters: `spaceIdOrKey` (string) - **get_confluence_spaces**: Get all available spaces - Parameters: `limit` (number, optional), `cursor` (string, optional) **Page Management:** - **get_confluence_content**: Get specific page content by ID - Parameters: `pageId` (string), `bodyFormat` (enum: storage/atlas_doc_format/wiki, optional) - **get_confluence_pages**: Get all pages in a space - Parameters: `spaceId` (string), `limit` (number, optional), `cursor` (string, optional) - **get_confluence_child_pages**: Get child pages of a specific page - Parameters: `pageId` (string), `limit` (number, optional), `cursor` (string, optional) - **confluence_create_page**: Create a new Confluence page - Parameters: `spaceId` (string), `title` (string), `content` (string), `status` (enum, optional), `representation` (enum, optional), `parentId` (string, optional) - **confluence_update_page**: Update an existing page - Parameters: `pageId` (string), `title` (string), `content` (string), `version` (number), `status` (enum, optional), `representation` (enum, optional), `versionMessage` (string, optional) - **update_confluence_page_title**: Update only the title of a page - Parameters: `pageId` (string), `title` (string), `status` (enum, optional) - **confluence_delete_page**: Delete a Confluence page - Parameters: `pageId` (string) **Label Management:** - **get_confluence_pages_by_label**: Find pages with specific labels - Parameters: `label` (string), `spaceId` (string, optional), `limit` (number, optional), `cursor` (string, optional) - **get_confluence_page_labels**: Get labels for a specific page - Parameters: `pageId` (string), `limit` (number, optional), `cursor` (string, optional) - **add_confluence_page_labels**: Add labels to a page - Parameters: `pageId` (string), `labels` (array of strings) **Comments:** - **get_confluence_page_comments**: Get regular comments on a page - Parameters: `pageId` (string), `limit` (number, optional), `cursor` (string, optional) - **add_confluence_page_comment**: Add a comment to a page - Parameters: `pageId` (string), `content` (string), `representation` (enum, optional) - **get_confluence_page_inline_comments**: Get inline comments on a page - Parameters: `pageId` (string), `limit` (number, optional), `cursor` (string, optional) - **create_confluence_footer_comment**: Create a footer comment - Parameters: `pageId` (string, optional), `blogPostId` (string, optional), `parentCommentId` (string, optional), `attachmentId` (string, optional), `customContentId` (string, optional), `content` (string), `representation` (enum, optional) #### Jira Tools - **search_jira_issues**: Search for issues using JQL (Jira Query Language) - Parameters: `jql` (string), `maxResults` (number, optional) - **get_jira_issue**: Get detailed information about a specific issue - Parameters: `issueKey` (string) - **jira_get_all_projects**: Get all accessible projects - Parameters: none - **jira_create_issue**: Create a new Jira issue - Parameters: `projectKey` (string), `issueType` (string), `summary` (string), `description` (string, optional), additional fields - **jira_update_issue**: Update an existing issue - Parameters: `issueKey` (string), `fields` (object with update data) - **jira_add_comment**: Add a comment to an issue - Parameters: `issueKey` (string), `comment` (string) - **jira_get_transitions**: Get available transitions for an issue - Parameters: `issueKey` (string) - **jira_transition_issue**: Transition an issue to a different status - Parameters: `issueKey` (string), `transitionId` (string), `comment` (string, optional) ## Architecture Notes ### Confluence API Migration This server primarily uses the **Confluence v2 REST API** for most operations, with strategic fallback to v1 API where necessary: - **v2 API**: Used for spaces, pages, comments, labels - provides better performance and modern cursor-based pagination - **v1 API**: Used for content search via CQL - provides more powerful search capabilities - **SSL Support**: Configurable SSL verification bypass for self-hosted instances - **Authentication**: Supports basic auth, OAuth 2.0 (planned), and PAT tokens ### Tool Filtering & Security - **Read-Only Mode**: Disable all write operations for safe exploration - **Tool Whitelist**: Enable only specific tools via `ENABLED_TOOLS` environment variable - **PII Filtering**: Automatic detection and masking of sensitive information in responses - **Error Context**: Detailed error messages without exposing sensitive configuration ## Development ### Project Structure ``` src/ ├── config/ # Configuration files │ └── env.ts # Environment configuration with validation ├── services/ # Service classes for Atlassian APIs │ ├── confluencev2.ts # Confluence v2 REST API service (primary) │ ├── confluence.ts # Legacy Confluence service (deprecated) │ └── jira.ts # Jira REST API service ├── tools/ # MCP tool implementations │ ├── search-confluence.ts # Content search (v1 API) │ ├── search-confluence-pages-by-title.ts # Title search (v2 API) │ ├── get-confluence-space.ts # Single space info │ ├── get-confluence-spaces.ts # All spaces list │ ├── get-confluence-content.ts # Page content by ID │ ├── get-confluence-pages.ts # Pages in space │ ├── get-confluence-child-pages.ts # Child pages │ ├── get-confluence-pages-by-label.ts # Pages by label │ ├── get-confluence-page-labels.ts # Page labels │ ├── add-confluence-page-labels.ts # Add labels │ ├── get-confluence-page-comments.ts # Page comments │ ├── add-confluence-page-comment.ts # Add comment │ ├── get-confluence-page-inline-comments.ts # Inline comments │ ├── confluence-create-page.ts # Create page │ ├── confluence-update-page.ts # Update page │ ├── update-confluence-page-title.ts # Update title only │ ├── confluence-delete-page.ts # Delete page │ ├── create-confluence-footer-comment.ts # Footer comments │ ├── search-jira-issues.ts # Jira search │ ├── get-jira-issue.ts # Single issue │ ├── jira-create-issue.ts # Create issue │ ├── jira-update-issue.ts # Update issue │ ├── jira-add-comment.ts # Add comment │ ├── jira-get-transitions.ts # Get transitions │ ├── jira-transition-issue.ts # Transition issue │ ├── jira-get-all-projects.ts # All projects │ ├── utils.ts # Utility functions & PII filtering │ └── index.ts # Tool exports ├── utils/ # Utility modules │ └── tool-filter.ts # Tool filtering and access control └── index.ts # Main entry point and server setup ``` ### Building ```bash # Using npm npm run build # Using make make build ``` ### Testing ```bash # Using npm npm test # Using make make test ``` ### Makefile Commands The project includes a Makefile to simplify common operations: ```bash # Display available commands make help ``` ## License MIT ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request

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/samwang0723/mcp-atlassian'

If you have feedback or need assistance with the MCP directory API, please join our Discord server