Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
POLARION_URLYesBase URL of your Polarion instance
POLARION_TOKENYesPersonal Access Token for authentication
POLARION_VERIFY_SSLNoVerify TLS certificates (default true). Set false for self-signed certs on trusted networks.true

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_document_commentsA

List a document's comments as a flat page.

Threads reconstruct via parent_comment_id (None = root) + child_comment_ids. text is verbatim, unsanitized — treat as untrusted when rendering.

list_work_item_commentsA

List a work item's comments as a flat page.

Threads reconstruct via parent_comment_id (None = root) + child_comment_ids. text is verbatim, unsanitized — treat as untrusted when rendering.

create_document_commentsA

Create one or more comments on a document in a single request.

Reply: set parent_comment_id to a short ID from list_document_comments (None = top-level). 'text/html' text is sent unsanitized; omit author_id for the token's user. NOT idempotent — a retry duplicates.

create_work_item_commentsA

Create one or more comments on a work item in a single request.

Reply: set parent_comment_id to a short ID from list_work_item_comments (None = top-level). Optional title sets the comment heading. 'text/html' text is sent unsanitized; omit author_id for the token's user. NOT idempotent — a retry duplicates.

update_document_commentA

Resolve or re-open one document comment thread.

Root comments only (a reply 400s) — pick a root id (parent_comment_id=None) from list_document_comments; resolving the root resolves the whole thread. Idempotent.

update_work_item_commentA

Resolve or re-open one work item comment.

Root comments only (a reply 400s) — pick a root id (parent_comment_id=None) from list_work_item_comments; resolving a root flips only that comment. Idempotent.

list_documentsA

List a project's documents.

Returns space_id + document_name (inputs to the other document tools) plus type, status, updated timestamp, and display names of creator (author) and last editor (last_updated_by). Discovery scan cached 60s.

get_documentA

Get a document's metadata: title/type/status/editors/custom fields.

Also returns outline numbering + autoSuspect (round-trip via update_document). author / last_updated_by are display names (creator, last editor); updated is the last-modified timestamp.

include_homepage_content_html=True fills content_html with raw homePageContent HTML — the required source for update_document(home_page_content_html=...). That body is inline prose only (headings / embedded work items live elsewhere; read_document renders all). Never feed back a blanked (flag=False) body.

read_document_partsA

List a document's structural parts in order.

Use for structure: part IDs (positions for move_work_item_to_document), heading levels, per-part Markdown. Plain reading → read_document; a document's work items → list_work_items.

read_documentA

Render a document end-to-end as flowing Markdown — THE way to read a body.

Interleaves headings, work-item descriptions, and prose. Synthesis output: NEVER feed to update_document (anchors collapse, headings orphan) — round-trip via get_document(include_homepage_content_html=True). For metadata-only extraction prefer list_work_items SQL.

update_documentA

Update a Polarion document's metadata or body.

PATCHes only supplied attributes (omitted preserved); no follow-up GET. Fetch via get_document BEFORE updating. home_page_content_html is never sanitized or converted — source from get_document(include_homepage_content_html=True); blocks lacking an id= get one auto-stamped, a fully anchored body is sent byte-for-byte. Empty string rejected (orphans headings) — pass '' for near-empty.

Body rules:

  • Inline .. auto-create heading work items — THE way to add a heading. For body text or work items use create_work_items + move_work_item_to_document, NOT this tool.

  • A polarion_wiki macro name=module-workitem leaves the work item's module unset — attach via move_work_item_to_document.

  • Polarion-specific constructs (tables, captions, links, TOC/TOF widgets, page breaks) must be adapted from get_html_recipes templates, never hand-written.

workflow_action must pair with ≥1 attribute (else 400). Unknown status/type raise ValueError; custom_fields keys outside the document type's schema are rejected, values NOT validated — resolve via list_document_enum_options first.

create_documentA

Create a new Polarion document in a space.

module_name must be unique in the space (duplicate → HTTP 409) — check list_documents first. type/status validated — unknown ids raise ValueError with options; custom_fields keys validated against the document type schema.

home_page_content is Markdown → sanitized HTML, blocks auto-stamped with unique ids. Markdown tables get native Polarion styling; a paragraph starting 'Table:' directly after a table becomes a numbered caption widget. Post-create edits round-trip raw HTML via get_document(include_homepage_content_html=True) ↔ update_document; add work items via move_work_item_to_document.

list_work_item_enum_optionsA

List valid enum option ids for a work item field of a given type.

Resolve enum ids here before create_work_items / update_work_items — enums are validated on write, invalid ids raise with this set. An unknown work_item_type silently falls back to ~, so verify the type id first.

list_document_enum_optionsA

List valid enum option ids for a document field of a given type.

Resolve enum ids here before create_document / update_document — enums are validated on write, invalid ids raise with this set. An unknown document_type silently falls back to ~, so verify the type id first.

list_work_item_linksA

List a work item's links, one direction per call.

Forward carries role (parent, verifies, …) and suspect; back is a Lucene fallback that drops role (always None) — recover it via forward on the source.

create_work_item_linksA

Create 1-50 outgoing links from one source work item, atomically.

Role and target existence validated before POST — invalid ones raise ValueError. Per spec: target_project_id defaults to source, revision pins (else HEAD), suspect flags re-review. A 4xx (e.g. duplicate role+target → 409) rolls back the whole batch — re-query list_work_item_links before retrying. link_ids are the delete-path ids, input order.

Phantom success: when the source sits in a document, move_work_item_to_document already auto-created one heading link; a NEW same-role link 201s but is NOT persisted — verify with list_work_item_links.

delete_work_item_linksA

Delete 1-50 outgoing links from one source work item.

Outgoing only — delete a back link from its source item. Refs from list_work_item_links(direction="forward") or a prior create. Stale refs never raise: a pre-read splits results into deleted_link_ids / not_found_link_ids.

update_work_item_linkA

Set suspect and/or revision on one existing outgoing link.

Identify the link via list_work_item_links(direction="forward") (role + target address one link). None = unchanged; at least one of suspect / revision required. One link per call. A role typo 404s.

move_work_item_to_documentA

Move an existing work item into a document at a given position.

THE attach path: atomically sets module and inserts a part. Headings rejected (HTTP 400) — add headings via update_document . An item already in a document is moved, not copied.

At most one of previous_part_id (AFTER) / next_part_id (BEFORE); omit both to append. Part IDs from read_document_parts.

Auto-creates one link to the enclosing heading; a later same-role create_work_item_links returns 201 but is NOT persisted.

move_work_item_from_documentA

Detach a work item from its document — the ONLY detach path.

NOT idempotent: an already free-floating item returns HTTP 400 — first confirm it is in a document (get_work_item: non-empty space_id) and skip the call when already detached. Item preserved, re-attachable via move_work_item_to_document. Headings detachable too.

list_projectsA

List accessible Polarion projects — the source of project IDs.

Lucene query allows trailing wildcards (name:ILCU*); leading ones 400.

get_sql_query_recipesA

Fetch copy-paste SQL recipes for the list_work_items SQL:(...) prefix.

Call before writing any SQL query (document scope, custom-field, traceability); adapt a recipe instead of hand-writing joins. Includes the table schema.

get_html_recipesA

Fetch the required HTML templates for tables, captions, links, and widgets written via update_work_items / update_document.

Any new , numbered caption, work-item / cross-reference / wiki-page link, or TOC / Table-of-Figures widget must be adapted from these templates — plain hand-written markup renders unstyled and breaks numbering. Also covers macro-id and metadata-scope caveats.

create_test_runsA

Create 1-50 test runs in one project in a single bulk request.

id is required per item (Polarion REST does not auto-generate one). type/status are validated against the project's testing enumerations and template_id against existing templates (list_test_runs(templates=True)) — unknown ids raise ValueError. custom_fields keys are validated against a sample of existing runs; enum-typed custom values are not (test runs have no options API). Atomic: one bad item rejects the whole batch; an id-count mismatch raises — re-query list_test_runs before retrying.

list_test_runsA

List / search test runs in a project.

Returns actual run instances by default; set templates=True for the reusable template blueprints instead. Filter with a Lucene query (status:open, type:manual, author.id:, HAS_VALUE:) or omit for all.

create_work_itemsA

Create 1-50 work items in one project in a single bulk request.

Standard enums (type/status/severity/priority) are validated — unknown ids raise ValueError with valid options. custom_fields keys are validated against the type's schema. Atomic: one bad item rejects the whole batch; an id-count mismatch raises — re-query list_work_items before retrying.

Items are created free-floating; place into a document with move_work_item_to_document (this tool cannot). description is Markdown → sanitized HTML; later edits are raw-HTML round-trip via get_work_item(include_description_html=True) ↔ update_work_items. Markdown tables get native Polarion styling; a paragraph starting 'Table:' directly after a table becomes a numbered caption widget.

update_work_itemsA

Update fields on 1-50 existing work items in one bulk PATCH; unset fields stay unchanged. Per-item hyperlinks/assignee_ids REPLACE the stored lists: even to add ONE entry, call get_work_item on the target BEFORE updating and resubmit every existing entry plus the new one — anything omitted is silently deleted.

description_html is raw Polarion HTML, sent verbatim — source from get_work_item(include_description_html=True); greenfield bodies use create_work_items Markdown, formats never mix. New table, caption, link, or widget HTML must be adapted from get_html_recipes templates, never hand-written. custom_fields is partial, keys outside the type schema rejected, values NOT validated — resolve via list_work_item_enum_options first.

module not settable here — use move_work_item_to_document / move_work_item_from_document. workflow_action/change_type_to apply to EVERY item; each item needs ≥1 body field (else 400); change_type_to scopes status/severity/resolution to the target type and resets status. Unknown enum ids and missing/duplicate work_item_ids raise ValueError. Atomic: one bad item rejects the whole batch. Returns ids only — re-read via get_work_item if needed.

list_work_itemsA

List / search work items in a project.

Lucene query (type:requirement, title:SRS*; leading wildcards 400) or omit for all. module and body text are NOT Lucene-indexed — scope by document via SQL:(...) or read_document_parts, never a Lucene module term.

SQL:(...) runs native SQL: call get_sql_query_recipes first and adapt a recipe (document scope, custom-field, traceability), do not hand-write. Escape ' as ''; keep LIKE top-level via INNER JOIN (rejected inside EXISTS; C_DESCRIPTION LIKE never matches).

get_work_itemA

Get full details of one work item by ID.

include_description_html=True fills description_html with raw HTML — the required source for update_work_items description_html. Never feed back a blanked (flag=False) body.

read_work_itemA

Read one work item with its body rendered as Markdown.

get_work_item plus description as Markdown. Synthesis output (collapses Polarion anchors) — NEVER feed to update_work_items; round-trip via the HTML pair instead.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/devemberx/mcp-server-polarion'

If you have feedback or need assistance with the MCP directory API, please join our Discord server