MCP Setup (Quick Start)

This guide covers setting up the Maven-related MCP servers.

Prerequisites

  • Claude Code (or another MCP-compatible client) installed

  • Docker Desktop (or Podman) installed and running

  • Node.js 18+ with npm/npx (for GitHub MCP)

See Prerequisites for detailed installation instructions.

Overview

Each MCP server is optional - install only those you need:

Mail MCP

Access to Apache Maven mailing list archives (dev@ and users@). No account required (public archives).

GitHub MCP

Access to Maven repositories, issues, and pull requests. Requires GitHub account with Personal Access Token.

Atlassian MCP

Access to Apache Confluence and Jira. Requires Apache Confluence and/or Jira accounts with PATs.

Maven Tools MCP

Maven Central dependency intelligence (versions, health analysis). No account required (public repository).

Having multiple MCPs enables cross-MCP orchestration: following references across data sources (e.g., finding mail discussions about a GitHub issue). See Advanced Usage for details.

Mail MCP

The Mail MCP provides access to Apache Maven mailing list archives (dev@ and users@). It runs as a persistent Docker service and is accessed via Streamable HTTP transport.

Setup

# Create directory and download docker-compose.yml
mkdir -p mail-mcp && cd mail-mcp
curl -O https://raw.githubusercontent.com/support-and-care-labs/mail-mcp/main/docker-compose.yml

# Start all services (Elasticsearch + MCP server + scheduler)
docker compose up -d

For local development or contributing, see Mail MCP Detailed Setup which covers cloning the full repository.

Initial Data Retrieval

Before using the MCP, retrieve the mailing list archives. This can be done entirely via Docker (no local Python installation required):

# Retrieve dev@ mailing list archives (2002-present, ~700MB)
for year in $(seq 2002 $(date +%Y)); do
  for month in $(seq -w 1 12); do
    docker compose exec scheduler retrieve-mbox --date ${year}-${month} || true
  done
done

# Index all downloaded mbox files
docker compose exec scheduler index-mbox --directory /app/data/dev/

This example retrieves dev@maven.apache.org. For users@maven.apache.org, add --list users@maven.apache.org --output-dir /app/data/users to the retrieve command. See Mail MCP Detailed Setup for complete instructions.

The scheduler container automatically updates the current month’s archive hourly.

Verify

# Check services are running
docker compose ps
# Should show elasticsearch, mail-mcp, and scheduler services

# Check Elasticsearch has data
curl http://localhost:59200/maven-dev/_count

Add to Claude Code

The Mail MCP server runs permanently and is accessed via Streamable HTTP:

claude mcp add maven-mail -s user --transport http http://localhost:58080/mcp
Ensure the mail-mcp Docker services are running before starting Claude Code.

For detailed configuration, see Mail MCP Detailed Setup.

GitHub MCP

The GitHub MCP provides access to Maven repositories, issues, and pull requests.

Create GitHub PAT

  1. Go to GitHub Settings > Tokens

  2. Click "Generate new token (classic)"

  3. Select scope: public_repo (sufficient for Apache Maven public repositories)

  4. Copy the generated token

Add to Claude Code

claude mcp add github -s user \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -- npx -y @modelcontextprotocol/server-github
GitHub MCP uses npx as there is no official Docker image yet. The name github (without maven- prefix) reflects that this MCP is not Maven-specific.

For detailed configuration, see GitHub MCP Detailed Setup.

Atlassian MCP

The Atlassian MCP provides access to Apache Confluence and Jira.

Create Personal Access Tokens

Apache uses Atlassian Server/Data Center (not Cloud). PATs are generated separately in each application:

Confluence PAT
  1. Log in to Apache Confluence

  2. Go to Profile (top right) → Settings → Personal Access Tokens

  3. Click "Create token", set a name and expiry

  4. Copy the generated token

Jira PAT
  1. Log in to Apache Jira

  2. Go to Profile (top right) → Personal Access Tokens

  3. Click "Create token", set a name and expiry

  4. Copy the generated token

Add to Claude Code

  1. Set your tokens as shell variables:

    CONFLUENCE_PERSONAL_TOKEN=<your-confluence-pat>
    JIRA_PERSONAL_TOKEN=<your-jira-pat>
  2. Run the claude mcp add command (copy-paste as-is):

    claude mcp add maven-atlassian -s user \
      -e CONFLUENCE_URL=https://cwiki.apache.org/confluence \
      -e CONFLUENCE_PERSONAL_TOKEN=$CONFLUENCE_PERSONAL_TOKEN \
      -e JIRA_URL=https://issues.apache.org/jira \
      -e JIRA_PERSONAL_TOKEN=$JIRA_PERSONAL_TOKEN \
      -e 'JIRA_PROJECTS_FILTER=ARCHETYPE,DOXIA,DOXIASITETOOLS,DOXIATOOLS,JXR,MJARSIGNER,MACR,MANTRUN,MARCHETYPES,MARTIFACT,MASFRES,MASSEMBLY,MBUILDCACHE,MCHANGELOG,MCHANGES,MCHECKSTYLE,MCLEAN,MCOMPILER,MDEP,MDEPLOY,MDOAP,MEAR,MEJB,MENFORCER,MGPG,MINDEXER,MINSTALL,MINVOKER,MJAR,MJAVADOC,MJDEPRSCAN,MJDEPS,MJLINK,MJMOD,MLINKCHECK,MNG,MNGSITE,MPH,MPIR,MPLUGIN,MPLUGINTESTING,MPMD,MPOM,MRAR,MRELEASE,MRESOLVER,MRESOURCES,MRRESOURCES,MSCMPUB,MSCRIPTING,MSHADE,MSHARED,MSITE,MSKINS,MSOURCES,MSTAGE,MTOOLCHAINS,MVERIFIER,MWAR,MWRAPPER,SCM,SUREFIRE,WAGON' \
      -- docker run -i --rm \
         -e CONFLUENCE_URL -e CONFLUENCE_PERSONAL_TOKEN \
         -e JIRA_URL -e JIRA_PERSONAL_TOKEN -e JIRA_PROJECTS_FILTER \
         ghcr.io/sooperset/mcp-atlassian:latest

For detailed configuration, see Atlassian MCP Detailed Setup.

Maven Tools MCP

The Maven Tools MCP provides Maven Central dependency intelligence - version lookups, health analysis, and upgrade recommendations.

Add to Claude Code

claude mcp add maven-tools -s user \
  -- docker run -i --rm arvindand/maven-tools-mcp:latest

No authentication is required as Maven Central is a public repository.

For detailed configuration and available tools, see Maven Tools MCP Detailed Setup.

Verify Installation

After adding MCPs, verify they are configured:

claude mcp list

You should see all configured MCP servers listed.

Next Steps