Open Source · MIT License

polarion-mcp

Connect your AI to Polarion in minutes.
284 REST operations. One server. Every client.

TypeScript
Node.js 20+
Polarion REST API
Star on GitHub Read the Blog Post ↗
$ install claude mcp add polarion-mcp -e API_BASE_URL=... -e BEARER_TOKEN=...
Explore
284 REST Operations
5 AI Clients
3 Transports
MIT License

Your AI, inside Polarion

Ask questions in plain language. Get real data from your Polarion instance in seconds — no API knowledge required.

GitHub Copilot queries Polarion work items via polarion-mcp in VS Code
Cloud AI assistant queries Polarion in the browser — no developer skills needed
polarion-mcp · tool response
You › List all open defects in the DEMO project assigned to me
// polarion-mcp calls getWorkItems
project: "DEMO", type: "defect", status: "open", assignedTo: "me"
✓ Found 3 open defects assigned to you:
DEMO-421 · High · Login page crashes on Safari mobile
DEMO-435 · Medium · Export dialog does not close after save
DEMO-447 · Critical · NullPointerException in report generator
// Copilot: Want me to open DEMO-447 in Polarion and suggest a fix?

Everything Polarion, AI-native

One MCP server that turns the entire Polarion REST API into tool calls your AI assistant can use directly.

🔌
284 REST Operations

Every Polarion REST endpoint exposed as a typed tool — work items, test runs, documents, plans, users, and more. Full coverage, auto-generated from the OpenAPI spec.

auto-generated
🤖
Every Major AI Client

Claude Code, Claude Desktop, VS Code GitHub Copilot, ChatGPT Custom GPT, Claude.ai web — one server, five clients, three transports. Pick your stack.

stdio · http · streamable
🐳
Docker-Ready

Multi-transport container image with configurable entrypoints. Run locally or deploy on your own infrastructure. No cloud dependency.

self-hosted
📚
SDK Documentation Access

Optional Polarion SDK docs loaded as tool context. Your AI understands not just the REST API, but the Polarion programming model.

in-context docs
🔒
Secure by Design

Your Polarion Personal Access Token stays yours — in a gitignored .env for stdio, sent per-request for HTTP, or entered once through an OAuth login: the server stores nothing and the client only ever holds it encrypted, unreadable to anyone but the server.

pat · oauth · tls
⚡
Cached Project Config

Project-level configuration is cached on first use. Your AI stays fast even when exploring a complex Polarion instance with dozens of projects.

performance

Works with your tools

One server, every client. Pick the AI assistant you already use.

Claude Code
CLI / Agent
stdio
Claude Desktop
macOS / Windows
stdio
GitHub Copilot
VS Code Agent Mode
stdio
ChatGPT
Connector & Custom GPT
streamable http oauth
Claude.ai
Web App
streamable http oauth or pat

Up and running in 3 steps

01
Clone & Build

Clone the repo, install dependencies, and build. Takes less than two minutes.

npm install && npm run build
02
Configure

Add your Polarion URL and Personal Access Token. Point your AI client to the server.

API_BASE_URL + your PAT
03
Ask

Open your AI assistant and start querying Polarion in plain language. No API knowledge required.

"List open defects in PROJECT"

Get connected

Choose your AI client. Copy the config. You're done.

claude mcp add polarion-mcp \
  -e API_BASE_URL=https://your-polarion/polarion/rest/v1 \
  -e BEARER_TOKEN=your-personal-access-token \
  -- node /path/to/polarion-mcp/build/index.js

Local stdio: Claude Code starts the server itself, nothing listens on the network. API_BASE_URL always ends in /polarion/rest/v1. Create the token in Polarion under My Account › Personal Access Tokens.

// .vscode/mcp.json (VS Code asks for the token and stores it securely)
{
  "inputs": [
    { "type": "promptString", "id": "polarion-pat", "description": "Polarion PAT", "password": true }
  ],
  "servers": {
    "polarion-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/polarion-mcp/build/index.js"],
      "env": {
        "API_BASE_URL": "https://your-polarion/polarion/rest/v1",
        "BEARER_TOKEN": "${input:polarion-pat}"
      }
    }
  }
}
// claude_desktop_config.json, then restart Claude Desktop
{
  "mcpServers": {
    "polarion-mcp": {
      "command": "node",
      "args": ["/path/to/polarion-mcp/build/index.js"],
      "env": {
        "API_BASE_URL": "https://your-polarion/polarion/rest/v1",
        "BEARER_TOKEN": "your-personal-access-token"
      }
    }
  }
}

No local Node? Use "command": "docker" with "args": ["run", "--rm", "-i", "-e", "API_BASE_URL", "-e", "BEARER_TOKEN", "ghcr.io/phillipboesger/polarion-mcp:latest", "node", "build/index.js"].

docker run -d --name polarion-mcp \
  -e API_BASE_URL=https://your-polarion/polarion/rest/v1 \
  -e MCP_PUBLIC_URL=https://mcp.yourdomain.com \
  -e MCP_TOKEN_SECRET=$(openssl rand -base64 48) \
  -e MCP_ALLOWED_HOSTS=mcp.yourdomain.com \
  -p 127.0.0.1:3000:3000 \
  ghcr.io/phillipboesger/polarion-mcp:latest

# connector URL for Claude.ai and ChatGPT
URL:  https://mcp.yourdomain.com/mcp

For clients that cannot send a custom header. Put the server behind TLS on a host reachable from the internet (Claude.ai and ChatGPT connect from their cloud, not from your network). Claude.ai: Settings › Connectors › Add custom connector, paste the URL, leave client ID and secret empty. ChatGPT: turn on Developer mode under Settings › Security and login, add a connector with the URL and OAuth. On first use each user pastes their own Polarion PAT on a login page.

The server stores no token: the client receives it encrypted under MCP_TOKEN_SECRET, which only the server can read. Access renews silently every hour and each renewal re-checks the PAT with Polarion, so a login lasts until the PAT is revoked or expires, and survives server restarts. Keep MCP_TOKEN_SECRET fixed; changing it logs everyone out. Reverse-proxy paths: docs/deployment.md.

# the OAuth server from the previous tab, plus a client for the GPT
-e GPT_CLIENT_ID=polarion-gpt \
-e GPT_CLIENT_SECRET=$(openssl rand -hex 32)

# GPT editor: Actions › Import from URL
https://mcp.yourdomain.com/openapi-gpt.json

# Authentication › OAuth
Client ID:          polarion-gpt
Client Secret:      the GPT_CLIENT_SECRET value
Authorization URL:  https://mcp.yourdomain.com/gpt/authorize
Token URL:          https://mcp.yourdomain.com/gpt/token
Scope:              polarion

Each GPT user signs in once with their own Polarion PAT and then works under their own Polarion account; the login lasts as long as that PAT is valid. Either token exchange method (POST or Basic) works. Only ChatGPT's own /aip/<gpt-id>/oauth/callback addresses are accepted, so nothing needs allowlisting.

docker run -d --name polarion-mcp \
  -e API_BASE_URL=https://your-polarion/polarion/rest/v1 \
  -p 127.0.0.1:3000:3000 \
  ghcr.io/phillipboesger/polarion-mcp:latest

# Claude Code, behind your TLS proxy
claude mcp add --transport http polarion https://mcp.yourdomain.com/mcp \
  --header "Authorization: Bearer <your-polarion-pat>"

One shared server that holds no credentials; each client sends its own Polarion PAT as a header, and Polarion authorizes every call under that user. For Claude Code, VS Code Copilot ("type": "http" with "headers"), curl and scripts. Claude.ai and ChatGPT connectors cannot set a header: use the OAuth tab instead.

docker run -d \
  -e API_BASE_URL=https://your-polarion/polarion/rest/v1 \
  -e BEARER_TOKEN=service-account-pat \
  -e HTTP_API_KEY=$(openssl rand -hex 32) \
  -p 127.0.0.1:3000:3000 \
  ghcr.io/phillipboesger/polarion-mcp:latest \
  node build/http-server.js

A plain REST wrapper for Custom GPT Actions with one shared key: every GPT user acts as the same Polarion account. In the GPT editor import https://your-host/openapi-gpt.json (a 30-tool subset that fits ChatGPT's limit) and set authentication to API key, type Bearer, with the HTTP_API_KEY value. For per-user logins use the Custom GPT (OAuth) tab.

Phillip Bösger

Built by Phillip Bösger

Polarion & AI Freelancer · Bösger Digital

Nearly a decade of Polarion experience. I built polarion-mcp because I wanted my AI assistants to actually know what's happening in Polarion — not just talk about it.

Ready to connect your AI to Polarion?

Open-source, self-hosted, and ready in minutes. No vendor lock-in.