MCP Atlassian
by samwang0723
# MCP Atlassian
A Model Context Protocol (MCP) server that provides 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 tools for:
- **Confluence**: Search content, get spaces, retrieve content, and list pages
- **Jira**: Search issues, get issue details, list projects, and more
## 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 for requests on stdin and respond on stdout.
### Available Tools
#### Confluence Tools
- **search-confluence**: Search for content in Confluence using CQL
- Parameters: `query` (string)
- **get-confluence-space**: Get information about a specific Confluence space
- Parameters: `spaceKey` (string)
- **get-confluence-content**: Get specific content by ID
- Parameters: `contentId` (string)
- **get-confluence-pages**: Get all pages in a space
- Parameters: `spaceKey` (string), `limit` (number, optional)
#### Jira Tools
- **search-jira-issues**: Search for issues using JQL
- Parameters: `jql` (string), `maxResults` (number, optional)
- **get-jira-issue**: Get a specific issue by key
- Parameters: `issueKey` (string)
- **get-jira-projects**: Get all projects
- Parameters: none
- **get-jira-project**: Get a specific project by key
- Parameters: `projectKey` (string)
- **get-jira-issue-types**: Get all issue types
- Parameters: none
## Development
### Project Structure
```
src/
├── config/ # Configuration files
├── examples/ # Example usage
├── services/ # Service classes for Atlassian APIs
│ ├── confluence.ts
│ └── jira.ts
├── tools/ # MCP tools
│ ├── search-confluence.ts
│ ├── get-confluence-space.ts
│ ├── get-confluence-content.ts
│ ├── get-confluence-pages.ts
│ ├── search-jira-issues.ts
│ ├── get-jira-issue.ts
│ ├── get-jira-projects.ts
│ ├── get-jira-project.ts
│ ├── get-jira-issue-types.ts
│ ├── utils.ts
│ └── index.ts
└── index.ts # Main entry point
```
### 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