Labsco
MCP SERVER

MCP Server Polarion

by devemberx

Read and write Polarion ALM from the conversation — documents rendered as Markdown, work items, test runs, traceability links, comments and attachments — with a dry run on every write.

Project & Task ManagementVerified
Summary
Built for a Polarion instance people actually depend on: dry runs, pre-write validation, and a rate cap you set yourself.

The read side is unusually considerate — a whole document rendered as Markdown, its structural parts listed in order, and recipes for the SQL and HTML Polarion will accept instead of leaving a model to invent them. The write side is bulk-oriented, up to 50 items or links per request, and every write tool takes dry_run so the exact payload can be reviewed before it lands. Enum options are resolvable before use, which is where writes into an ALM tool usually fail.

What it is

A Python server for Polarion ALM with 46 tools spanning read and write: documents, work items, test runs and records, traceability links, comments and attachments. Every write supports dry_run, guards validate fields, enum values and link targets before anything is committed, and requests are paced to a rate cap you set for your instance.

What you get
  • read_document renders a document end to end as flowing Markdown, and read_document_parts lists its structural parts in order with the work items embedded in them
  • Work items searched with Lucene or SQL through list_work_items, then read as raw HTML with get_work_item or as Markdown with read_work_item; get_sql_query_recipes and get_html_recipes supply the query forms and HTML templates Polarion actually accepts
  • Bulk writes throughout — create_work_items and update_work_items take up to 50 items in one request, as do create_test_runs, update_test_runs, create_test_records and update_test_records
  • Traceability: list_work_item_links reads one direction per call, create_work_item_links makes up to 50 outgoing links atomically, and update_work_item_link sets suspect or revision on an existing one
  • Document structure changed rather than merely described — create_document, copy_document duplicating structure, body and contained work items, move_work_item_to_document at a chosen position, and move_work_item_from_document as the only detach path
  • Test execution: list_test_runs and get_test_run, list_test_records giving one row per test-case iteration, get_test_record for the execution detail, and update_test_records to set result, comment and defect link
  • Comments listed flat with thread relationships reconstructable from the parent, created in bulk, and resolved or reopened at the root
  • Attachments listed for documents, work items and test records, image content fetched for viewing, and one to ten local files uploaded in a single request
  • list_work_item_enum_options and list_document_enum_options resolve the valid enum ids for a field before a write tries to use one
Requirements

Python 3.13 or newer, published on PyPI as mcp-server-polarion and launched over stdio with uvx, against Polarion 2506 or newer. POLARION_URL and POLARION_TOKEN — a personal access token — are both required. POLARION_MAX_REQUESTS_PER_SECOND caps the client-side rate to match your deployment's throttle and defaults to 1, with 0 disabling pacing; requests are serialised, and 429 and 5xx responses are retried automatically.

Setup effort

One command plus a key — uvx mcp-server-polarion, then supply credentials