Phabricator MCP server for managing tasks and code reviews
Server has 13 tools with complete input schemas and descriptions. Naming follows verb_noun convention (fetch_, get_, update_, add_, create_, search_, review_, generate_, publish_). Descriptions are present and contextual (avg ~120 chars), exceeding the 10-char minimum. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is absent; no guidance on retryability, user-fixable vs. fatal errors, or recovery paths. The confirm-before-execute pattern (update_task_status, add_comment, create_task, add_revision_comment, add_inline_comment, publish_review_comments) is well-designed for destructive ops, but lacks error classification. Parameter descriptions are adequate but lack format constraints (e.g., taskId accepts 'T123' or '123' but no regex/pattern validation shown). No evidence of permission gates, audit logging, or secret injection patterns.
Add a comment to a task. First call shows preview (confirm=false), second call with confirm=true posts the comment.
Add a draft inline comment to a specific line in a revision. First call shows preview (confirm=false), second call with confirm=true saves a private draft only. It must not publish the review.
Add a draft review comment to a revision. First call shows preview (confirm=false), second call with confirm=true saves a private draft only. It must not publish the review.
Create a new task in Phabricator. First call shows preview (confirm=false), second call with confirm=true creates the task.
Fetch open tasks from Phabricator
Guided, read-only revision summary workflow. Returns the revision-summary instructions together with revision details, optional task details, and latest diff. It must never update the revision description or post anything to Phabricator.
Output schemas not documented. LLMs cannot predict response structure, field names, or types. Downstream tool chaining requires guessing which fields are returned (e.g., does get_task_details return task_id, taskId, or id?).
No error handling guidance. Tools lack recovery hints, error classification (retryable vs. fatal), or actionable error messages. E.g., if taskId is invalid, what should the LLM do next?
Parameter format constraints missing. taskId accepts 'T123' or '123' but no regex pattern or validation rules documented. LLMs may pass invalid formats (e.g., 'task-123', 'T-123').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Get detailed information about a specific code revision
Get the diff for a specific code revision
Get detailed information about a specific task
Publish all draft comments on a revision. First call shows preview (confirm=false), second call with confirm=true publishes them.
Guided, read-only review of a code revision. Returns the revision-review instructions together with revision details and latest diff, and must never create or publish Phabricator comments.
Search for tasks with specific tags or keywords
Update the status of a task. First call shows preview (confirm=false), second call with confirm=true executes the change.
No permission gates or audit logging visible. Tools that modify state (update_task_status, add_comment, create_task, add_revision_comment, publish_review_comments) lack permission checks or audit trails for compliance.
Pagination not visible for list-returning tools. fetch_tasks and search_by_tag accept limit but no offset/cursor or total_count documented. Large result sets may exhaust context window.