Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OPENPROJECT_TIMEOUTNoRequest timeout in seconds12
OPENPROJECT_BASE_URLYesBase URL of your OpenProject instance, e.g. https://op.example.com
OPENPROJECT_API_TOKENYesPersonal API token
OPENPROJECT_LOG_LEVELNoCRITICAL, ERROR, WARNING, or INFOWARNING
OPENPROJECT_TEXT_LIMITNoCharacter cap for description previews in list results (max 50000)500
OPENPROJECT_VERIFY_SSLNoVerify TLS certificatestrue
OPENPROJECT_MAX_RESULTSNoHard cap on total results returned by a tool100
OPENPROJECT_MAX_PAGE_SIZENoHard cap on results per request50
OPENPROJECT_READ_PROJECTSNoReadable projects; comma-separated identifiers, names, or glob patterns; * allows all visible projects; empty denies all project-scoped reads
OPENPROJECT_WRITE_PROJECTSNoWritable projects; same syntax; empty disables all project-scoped writes; always intersected with OPENPROJECT_READ_PROJECTS
OPENPROJECT_ATTACHMENT_ROOTNoAbsolute directory local attachment uploads are confined to; empty disables uploads
OPENPROJECT_DEFAULT_PAGE_SIZENoDefault results per page10
OPENPROJECT_ENABLE_ADMIN_READNoInstance-wide users, groups, principals and storage connections (admin)false
OPENPROJECT_ENABLE_BOARD_READNoBoardstrue
OPENPROJECT_ENABLE_ADMIN_WRITENoUser, group and storage connection management (admin); explicit opt-in onlyfalse
OPENPROJECT_ENABLE_BOARD_WRITENoBoard create/update/delete. Has no effect without a non-empty OPENPROJECT_WRITE_PROJECTS.true
OPENPROJECT_HIDE_CUSTOM_FIELDSNoCustom field names or keys to omit; * wildcards supported
OPENPROJECT_ENABLE_MEETING_READNoMeetings, agenda items, sections, outcomes, recurring meetingstrue
OPENPROJECT_ENABLE_PROJECT_READNoProjects, documents, phases, project storagestrue
OPENPROJECT_ENABLE_VERSION_READNoVersionstrue
OPENPROJECT_ENABLE_EXTENDED_READNoRarely used metadata tools (query schemas, render_text, help texts, working days)false
OPENPROJECT_ENABLE_MEETING_WRITENoMeeting, agenda item, section, outcome and recurring meeting create/update/delete. Has no effect without a non-empty OPENPROJECT_WRITE_PROJECTS.true
OPENPROJECT_ENABLE_PERSONAL_READNoYour own preferences and notificationsfalse
OPENPROJECT_ENABLE_PROJECT_WRITENoProject create/update/delete, news, documents, grids. Has no effect without a non-empty OPENPROJECT_WRITE_PROJECTS.true
OPENPROJECT_ENABLE_VERSION_WRITENoVersion create/update/delete. Has no effect without a non-empty OPENPROJECT_WRITE_PROJECTS.true
OPENPROJECT_ENABLE_PERSONAL_WRITENoUpdate your own preferences, mark notifications read; requires OPENPROJECT_ENABLE_PERSONAL_READfalse
OPENPROJECT_ENABLE_MEMBERSHIP_READNoMemberships, roles, current user, actions, capabilitiestrue
OPENPROJECT_ENABLE_MEMBERSHIP_WRITENoProject membership create/update/delete. Has no effect without a non-empty OPENPROJECT_WRITE_PROJECTS.true
OPENPROJECT_ENABLE_WORK_PACKAGE_READNoWork packages, search, relations, attachments, watchers, sprintstrue
OPENPROJECT_ENABLE_USER_SCHEDULE_READNoPer-user non-working times and working hours (OpenProject 17.3+)false
OPENPROJECT_ENABLE_WORK_PACKAGE_WRITENoWork package create/update/delete, comments, relations, attachments, time entries. Has no effect without a non-empty OPENPROJECT_WRITE_PROJECTS.true
OPENPROJECT_ENABLE_USER_SCHEDULE_WRITENoCreate/update/delete user non-working times and working hours; requires OPENPROJECT_ENABLE_USER_SCHEDULE_READfalse

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_project_phase_definitionsA

List available project lifecycle phase definitions exposed by OpenProject.

get_project_phase_definitionA

Get a single project lifecycle phase definition by id.

get_instance_configurationA

Return instance-level OpenProject configuration and active feature flags.

list_statusesA

List all available work package statuses.

Read-only: statuses cannot be created or modified via the OpenProject API (Community Edition); configure them in the web admin UI.

get_statusB

Get a single work package status by id.

list_prioritiesA

List all available work package priorities.

get_priorityA

Get a single work package priority by id.

list_typesA

List all available work package types, optionally filtered by project.

Read-only: types cannot be created or modified via the OpenProject API (Community Edition); configure them in the web admin UI.

get_typeB

Get a single work package type by id.

get_cost_typeA

Get a cost type by id.

Cost types are entirely read-only in OpenProject's API (Community Edition) -- there is no create/update/delete endpoint, and no collection GET either (no list_cost_types tool exists because the endpoint does not exist upstream).

get_github_pull_requestA

Get a single GitHub pull request by its own id.

GitHub pull requests are read-only mirror rows synced by OpenProject's own GitHub App integration -- never creatable via this API. An empty or 404 result can mean either the pull request doesn't exist, or the GitHub App integration isn't configured on this instance; OpenProject's API does not distinguish these cases.

Unlike work-package-scoped lookups in this domain, this global lookup relies on OpenProject's own visibility check (whether the linked work package is visible to the API token), not on this MCP's OPENPROJECT_READ_PROJECTS allowlist -- the pull request payload carries no project link for this MCP to check against.

list_rolesA

List OpenProject roles visible to the current user.

select fields: id, name (see server instructions for select's general semantics). limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

get_current_userA

Return the currently authenticated user's profile.

list_actionsA

List API actions exposed by OpenProject.

select fields: id, url (see server instructions for select's general semantics).

limit is capped at OPENPROJECT_MAX_PAGE_SIZE (default 50); pass the returned next_offset as the next call's offset to page past the cap.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 14 tools

Disambiguation4/5

Each tool targets a distinct resource (types, statuses, priorities, roles, phases, actions) with clear list/get separation, so an agent can tell them apart. A couple of outliers (get_cost_type with no list counterpart, get_github_pull_request which is unrelated to OpenProject's core domain) slightly muddy the surface but remain understandable.

Naming Consistency5/5

All 14 tools follow a strict verb_noun pattern using list_* and get_* prefixes (list_types/get_type, list_statuses/get_status, list_priorities/get_priority, etc.). The convention is applied uniformly with no camelCase or stylistic drift.

Tool Count5/5

14 tools is well within the ideal 3-15 range and each tool maps to a distinct reference-data endpoint. The count is proportionate to the narrow read-only scope the server declares.

Completeness2/5

The surface is entirely read-only reference data (types, statuses, priorities, roles, phases, actions) with no work package, project, or time-entry operations, which are the core of OpenProject's domain. Even within its own scope there are gaps: get_cost_type has no list counterpart, list_roles has no get_role, and no create/update/delete exists anywhere, creating dead ends for real project workflows.

Maintenance

ActivityActive
ResponsivenessResponsive