phabricator-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PHABRICATOR_URL | No | Phabricator instance URL | |
| PHABRICATOR_API_TOKEN | No | Conduit API token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Results omit null and empty fields; a missing field has no value. Paged results: pass cursor.after as "after" until it is null.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| phabricator_versionA | Get the version of the running phabricator-mcp server |
| phabricator_task_searchC | Search Maniphest tasks with optional filters |
| phabricator_task_createC | Create a new Maniphest task |
| phabricator_task_editC | Edit an existing Maniphest task |
| phabricator_task_add_commentB | Add a comment to a Maniphest task |
| phabricator_task_status_searchA | List all available task statuses configured on this Phabricator instance |
| phabricator_task_priority_searchA | List all available task priorities configured on this Phabricator instance |
| phabricator_revision_searchB | Search Differential revisions (code reviews) |
| phabricator_revision_editB | Edit a Differential revision. Supports actions like accept, reject, abandon, request-review, plan-changes, and commandeer. Can also add/remove reviewers, subscribers, and comments. |
| phabricator_diff_rawA | Get the raw diff/patch content for a Differential diff by diff ID. Use phabricator_diff_search to find the diff ID from a revision PHID first. |
| phabricator_diff_searchB | Search Differential diffs (code change snapshots within a revision). A revision may have multiple diffs as it gets updated. |
| phabricator_revision_pathsB | Get the list of changed file paths for a Differential revision. Returns an array of file path strings. |
| phabricator_revision_inline_commentA | Create a draft inline comment on a Differential diff, optionally highlighting a character range and attaching a suggested edit, or a draft reply to a published inline comment (replyToInlineID). Drafts are visible only to you until you call phabricator_revision_inline_publish; a plain comment via phabricator_revision_edit does NOT publish them. Ranges, suggestions and replies need the differential.inline.* Conduit extension; without it, plain line comments fall back to differential.createinline. |
| phabricator_revision_inline_searchA | List inline comments on a Differential revision with their side (isNewFile), line range, character range, suggested edit and Done state. Returns every published comment plus your own drafts, newest first. Needs the differential.inline.* Conduit extension. |
| phabricator_revision_inline_publishA | Publish your draft inline comments on a Differential revision, with an optional top-level comment, as one review: the same as pressing "Submit" in the web UI. Also publishes pending "Done" changes you made as the revision author. Without inlineIDs, EVERY draft you have on the revision is published, including ones started in a browser. Needs "Can Edit" on the revision and the differential.inline.* Conduit extension. If a call times out, search before retrying: naming an already-published inline fails. |
| phabricator_revision_inline_doneA | Check or uncheck "Done" on a Differential inline comment. Allowed for the revision author, or for the comment author while it is still a draft. A check by the revision author stays pending (isDonePending) until they next publish, e.g. with phabricator_revision_inline_publish. Needs the differential.inline.* Conduit extension. |
| phabricator_revision_inline_editA | Replace the text and suggested edit of your own draft inline comment, keeping its place in the diff. Published comments cannot be edited. Needs the differential.inline.* Conduit extension. |
| phabricator_revision_inline_deleteA | Delete your own draft inline comment. Published comments cannot be deleted. Needs the differential.inline.* Conduit extension. |
| phabricator_repository_searchC | Search Diffusion repositories |
| phabricator_commit_searchC | Search Diffusion commits |
| phabricator_repository_browseB | Browse a repository directory tree at a given path and commit/branch. Pass a branch name via the commit parameter. |
| phabricator_repository_file_contentA | Read a file's text at a path and commit/branch. Long files are paged: follow the closing note or set startLine/lineCount. A branch or other ref is resolved to a commit, which the note names so later pages read the same version. Binary files return metadata; files over byteLimit return tooHuge. |
| phabricator_branch_searchC | List branches in a Diffusion repository |
| phabricator_tag_searchC | List tags in a Diffusion repository |
| phabricator_repository_file_historyB | Get commit history for a file or directory path in a Diffusion repository |
| phabricator_repository_code_searchB | Search (grep) file contents within a Diffusion repository |
| phabricator_repository_editA | Create or edit a Diffusion repository. To create, omit objectIdentifier and provide vcs + name. |
| phabricator_user_whoamiA | Get information about the current authenticated user |
| phabricator_user_searchC | Search Phabricator users |
| phabricator_project_searchC | Search Phabricator projects |
| phabricator_project_editA | Create or edit a Phabricator project. Omit objectIdentifier to create a new project (name is required for creation). |
| phabricator_column_searchC | Search project workboard columns |
| phabricator_paste_searchC | Search Phabricator pastes |
| phabricator_paste_createC | Create a new Phabricator paste |
| phabricator_paste_editC | Edit an existing Phabricator paste |
| phabricator_document_searchC | Search Phriction wiki documents |
| phabricator_document_createB | Create a new Phriction wiki document. Uses phriction.create (the only method that can create documents). |
| phabricator_document_editB | Edit an existing Phriction wiki document title or content. Uses phriction.edit (the only method that can update document content). |
| phabricator_document_add_commentB | Add a comment to a Phriction wiki document |
| phabricator_phid_lookupB | Look up PHIDs by human-readable names (e.g., "T123", "D456", "@username") |
| phabricator_phid_queryA | Get handle information (name, URI, type, status) for PHIDs. For full object data, use application-specific search tools (e.g., phabricator_task_search, phabricator_revision_search). |
| phabricator_blog_searchC | Search Phame blogs |
| phabricator_blog_editA | Create or edit a Phame blog. Omit objectIdentifier to create a new blog (name is required for creation). |
| phabricator_blog_post_searchC | Search Phame blog posts |
| phabricator_blog_post_createC | Create a new Phame blog post |
| phabricator_blog_post_editC | Edit an existing Phame blog post |
| phabricator_blog_post_add_commentC | Add a comment to a Phame blog post |
| phabricator_transaction_searchA | Search transactions (comments, status changes, etc.) on a Phabricator object (e.g., "D123", "T456") |
| phabricator_transaction_comment_editA | Edit your own published comment (saves a new version). Not for inline comments. |
| phabricator_file_uploadA | Upload a file to Phabricator. Returns a file PHID that can be used with phabricator_file_info to get the file ID for embedding in Remarkup via {F}. |
| phabricator_file_searchC | Search for files in Phabricator |
| phabricator_file_infoA | Get metadata about a file (name, size, MIME type, URI). Use the returned URI to download. Provide at least one of id or phid. Uses file.info (the only Conduit method that returns download URIs). |
| phabricator_buildable_searchB | Search Harbormaster buildables (objects that can be built, like revisions or commits) |
| phabricator_build_searchC | Search Harbormaster builds (CI/build results) |
| phabricator_build_target_searchC | Search Harbormaster build targets (individual build steps within a build) |
| phabricator_build_log_searchA | Search Harbormaster build logs (output from build steps). Use phabricator_build_target_search to find target PHIDs first. |
| phabricator_build_commandA | Send a command to a Harbormaster build target. Report build status (pass/fail/work) with optional unit test and lint results. |
| phabricator_build_plan_searchB | Search Harbormaster build plans (CI pipeline configurations) |
| phabricator_owners_searchB | Search Owners packages (code ownership). Find who owns a code path or list ownership packages. |
| phabricator_feed_queryB | Query the Phabricator activity feed. Returns recent activity (task updates, revision changes, commits, etc.) as an object keyed by story PHID. Uses feed.query (the only Conduit method for feed data). |
| phabricator_conpherence_readA | Read messages from a Conpherence chat room/thread (returned in reverse chronological order). Uses conpherence.querytransaction (the only Conduit method that returns message content). |
| phabricator_conpherence_createB | Create a Conpherence room; you are always a participant. |
| phabricator_conpherence_editB | Edit a Conpherence chat room/thread. Rename it or manage participants. |
| phabricator_conpherence_sendB | Send a message to a Conpherence chat room/thread |
| phabricator_audit_queryA | Search commit audit requests using the legacy audit.query endpoint. For most use cases, prefer phabricator_commit_search with the auditors attachment. This frozen endpoint provides audit-specific status filtering not available in the modern API. |
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 65 tools
Tools are strongly namespaced by application (task_, revision_, diff_, repository_, document_, blog_, build_, conpherence_) so most are trivially distinguishable. Minor overlaps remain: revision_inline_comment vs revision_edit (which also adds comments), transaction_search vs the inline/search tools for comments, and phid_lookup vs phid_query are near-neighbors that require reading descriptions to separate.
The set overwhelmingly follows a phabricator_<domain>_<verb>_<noun> snake_case convention (task_create, revision_search, build_target_search), which is predictable. Deviations exist: version, user_whoami, diff_raw, revision_paths, phid_lookup/phid_query, and inconsistent use of search vs query (feed_query, audit_query, but task_search).
65 tools is far beyond a manageable surface for an agent, even accounting for Phabricator's breadth across ~11 applications. Individual applications are reasonably scoped, but the aggregate is too large and includes deep clusters (five differential.inline.* tools alone) that push selection cost high.
Coverage spans tasks, revisions, diffs, repositories, users, projects, pastes, wiki docs, blogs, files, builds, owners, feed, chat, and audit — genuinely broad with create/edit/search per domain. Notable gaps: no way to create a Differential revision or upload a diff (create-side of code review is missing), and project columns are search-only (no column create/edit), plus no user or flag editing.