qod-ppm-odoo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ODOO_DB | No | The name of the Odoo database | |
| ODOO_URL | No | The URL of the Odoo server, e.g., https://your-odoo.example.com | |
| ODOO_API_KEY | No | The API key for the Odoo user (preferred over password) | |
| ODOO_PASSWORD | No | The password for the Odoo user (alternative to API key) | |
| ODOO_USERNAME | No | The username for the Odoo service user, e.g., ppm-service@example.com | |
| QOD_PPM_MCP_HOST | No | The host for HTTP transport, e.g., 0.0.0.0 | 0.0.0.0 |
| QOD_PPM_MCP_PORT | No | The port for HTTP transport, e.g., 8765 | 8765 |
| QOD_PPM_MCP_TRANSPORT | No | The transport mode for the MCP server, e.g., 'http' for remote access | stdio |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ppm_milestone_startB | Transition a milestone from 'planned' to 'in_progress'. |
| ppm_milestone_achieveC | Mark a milestone as achieved; records today as the actual date. |
| ppm_milestone_missC | Mark a milestone as missed. |
| ppm_milestone_cancelC | Cancel a milestone. |
| ppm_milestone_reopenB | Reopen a milestone back to 'planned'. |
| ppm_status_report_generateA | Run the Status Report wizard for a project. The wizard auto-populates RAG, budget, risks, milestones from project data
and creates a Args:
project_id: Returns: dict with the created status report id and summary fields. |
| ppm_status_report_publishC | Publish a draft status report. |
| ppm_status_report_reset_draftB | Revert a published status report back to draft. |
| ppm_status_report_print_urlA | Return the Odoo URL for the PDF render of a status report. Odoo returns a report action; the caller fetches the PDF via that URL using the same credentials. |
| ppm_change_request_submitB | Submit a draft Change Request for review; assigns a sequence number. |
| ppm_change_request_start_reviewB | Start review of a submitted Change Request. |
| ppm_change_request_approveB | Approve a Change Request under review; creates a baseline snapshot. |
| ppm_change_request_rejectB | Reject a Change Request with a required reason (runs the reject wizard). |
| ppm_change_request_reset_draftB | Return a submitted or rejected Change Request to draft. |
| ppm_risk_start_analysisB | Transition a risk from 'identified' to 'analyzing'. |
| ppm_risk_start_mitigationC | Transition a risk to 'mitigating'. |
| ppm_risk_start_monitoringC | Transition a risk to 'monitoring'. |
| ppm_risk_mark_occurredC | Mark a risk as occurred. |
| ppm_risk_closeC | Close a risk; sets date_closed. |
| ppm_risk_reopenC | Reopen a closed risk back to 'identified'. |
| ppm_risk_move_in_matrixA | Move a risk in the P×I matrix. Both probability and impact are integers 1–5 (matching the selection keys).
The server recomputes |
| ppm_issue_assignC | Move an issue from 'new' to 'assigned'. |
| ppm_issue_startB | Move an issue to 'in_progress'. |
| ppm_issue_resolveC | Resolve an issue; sets date_resolved. |
| ppm_issue_escalateC | Escalate an issue to management. |
| ppm_role_activateB | Activate a draft role assignment (syncs the security group). |
| ppm_role_approve_and_activateC | Approve and activate in one step. |
| ppm_role_revokeB | Revoke a role assignment; removes the user from the security group. |
| ppm_role_reset_draftC | Return a role assignment to draft. |
| ppm_export_budgetA | Export budget lines to XLSX. Returns the download URL action. At least one of |
| ppm_export_risksB | Export the risk register to XLSX.
|
| ppm_export_resourcesB | Export resource allocations to XLSX. |
| ppm_create_project_from_templateB | Clone a project template and attach it to a customer (res.partner). Returns the new project id, name, portfolio_id, and program_id. |
| ppm_pingA | Verify the MCP server can authenticate to Odoo and hit the PPM models. Returns {ok, uid, portfolios, programs, projects, risks} with counts. |
| ppm_list_action_toolsA | List every PPM action/wizard tool this server exposes, with a one-line description. Useful when Claude is deciding whether to call a custom tool or fall back
to the generic Odoo MCP's |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 35 tools
All tools are grouped by domain (change requests, issues, milestones, risks, roles, status reports, etc.) with distinct purposes. Each tool targets a specific action on a unique entity, making it easy for an agent to distinguish between them.
Every tool follows the consistent pattern 'ppm_verb_noun' (e.g., ppm_change_request_approve, ppm_risk_close). The naming convention is uniform with snake_case and clear verb prefixes, ensuring predictability.
35 tools is above the typical range, but the server covers a broad PPM domain with multiple entity lifecycles. Each tool addresses a specific action, and the count is justified by the scope, though slightly heavy.
The tool set covers key lifecycles (change requests, issues, milestones, risks, roles, status reports) and includes exports and a meta-tool. Missing create operations for some entities are mitigated by fallback to a generic Odoo MCP, but gaps exist.