Connect your AI to Polarion in minutes.
284 REST operations. One server. Every client.
See it in action
Ask questions in plain language. Get real data from your Polarion instance in seconds — no API knowledge required.
What it does
One MCP server that turns the entire Polarion REST API into tool calls your AI assistant can use directly.
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-generatedClaude Code, Claude Desktop, VS Code GitHub Copilot, ChatGPT Custom GPT, Claude.ai web — one server, five clients, three transports. Pick your stack.
stdio · http · streamableMulti-transport container image with configurable entrypoints. Run locally or deploy on your own infrastructure. No cloud dependency.
self-hostedOptional Polarion SDK docs loaded as tool context. Your AI understands not just the REST API, but the Polarion programming model.
in-context docsYour 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 · tlsProject-level configuration is cached on first use. Your AI stays fast even when exploring a complex Polarion instance with dozens of projects.
performanceCompatibility
One server, every client. Pick the AI assistant you already use.
Setup
Clone the repo, install dependencies, and build. Takes less than two minutes.
npm install && npm run buildAdd your Polarion URL and Personal Access Token. Point your AI client to the server.
API_BASE_URL + your PATOpen your AI assistant and start querying Polarion in plain language. No API knowledge required.
"List open defects in PROJECT"Quick Start
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.
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.
Open-source, self-hosted, and ready in minutes. No vendor lock-in.