Phabricator
About
Interact with Phabricator for task management and code review workflows.
Details
- Author
- yushengauggie
- Categories
- Productivity, Project Management, Communication, Developer Tools
Jump to
Setup
Install Phabricator in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/yushengauggie/phabricator-mcp-server
Follow the installation instructions in the repository README, then restart your MCP client.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact intelligently with Phabricator for advanced task management and code review workflows.
- Per-User Authentication: Configure your personal Phabricator API token in your MCP client
- User Attribution: Comments and reviews appear under YOUR name instead of a shared service account
- Flexible Configuration: Supports both personal tokens and shared environment variables
- Standard MCP Integration: Follows MCP ecosystem best practices for authentication
- Differential Management: View revisions, read comments, approve/reject code changes
- Intelligent Review Feedback: Analyze comments with surrounding code context for actionable insights
- Inline Comments: Add targeted feedback to specific lines in code reviews
- Code Context Analysis: Correlate review comments with actual code changes and locations
- HTTP/SSE Transport: FastMCP-based server for reliable production use (default on port 8932)
- stdio Transport: Legacy support for direct MCP client integration
- Comprehensive API: 11 specialized tools for complete Phabricator workflow automation
- Comment-Code Correlation: Intelligently link review feedback to specific code locations
- Contextual Code Display: Show surrounding code lines for better understanding
- Action Item Generation: Categorize feedback into actionable to-do items
- Priority Classification: Organize comments by Issues → Suggestions → Nits → Other
- Python 3.8+
- Phabricator instancewith API access
- API tokenfrom Phabricator (Settings → Conduit API Tokens)
# Clone and navigate git clone https://github.com/YushengAuggie/phabricator-mcp-server.git cd phabricator-mcp-server # Configure credentials echo "PHABRICATOR_TOKEN=your-32-character-api-token" > .env echo "PHABRICATOR_URL=https://your-phabricator-instance.com/api/" >> .env # Start server (handles all setup automatically) python3 start.py --mode http
The server starts onhttp://localhost:8932with automatic dependency management.
# Create virtual environment python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Install with dependencies pip install -e . # Start HTTP server python src/servers/http_server.py # Or start stdio server python src/servers/stdio_server.py
The server supportshybrid authenticationwith two modes that work seamlessly together:
- Personal API Token (Recommended): Pass your personal token through MCP client configuration for user attribution
- Environment Variable Fallback: Use a shared service account token via environment variables
- Go to your Phabricator instance → Settings → API Tokens
- Create a new token with appropriate permissions
- Copy the 32-character token for use in configuration
🌐 Finding Your Phabricator URL:Your Phabricator API URL should end with/api/and typically looks like:
- https://phabricator.example.com/api/
- https://phab.yourcompany.com/api/
- https://your-domain.phabricator.com/api/
If unsure, check your Phabricator instance's main page - the URL is usually[your-base-url]/api/
The server automatically detects your environment configuration:
claude mcp add --transport sse phabricator http://localhost:8932/sse \ --env "PHABRICATOR_TOKEN=api-xxxxxxx" \ --env "PHABRICATOR_URL=https://example.com/api/"
Replaceapi-xxxxxxxwith your actual API token andhttps://example.com/api/with your Phabricator instance URL
{ "mcpServers": { "phabricator": { "url": "http://localhost:8932/sse", "env": { "PHABRICATOR_TOKEN": "api-xxxxxxx", "PHABRICATOR_URL": "https://example.com/api/" } } } }
For Claude Desktop and direct MCP integration:
{ "mcpServers": { "phabricator": { "command": "python", "args": ["path/to/phabricator-mcp-server/start.py"], "cwd": "path/to/phabricator-mcp-server", "env": { "PHABRICATOR_TOKEN": "api-xxxxxxx", "PHABRICATOR_URL": "https://example.com/api/" } } } }
The server supports multiple ways to authenticate:
- Personal Token in Tools: Some tools accept anapi_tokenparameter
- Environment Variables: SetPHABRICATOR_TOKENin MCP client config
- Fallback Token: Create.envfile in server directory
Priority Order: Personal token → MCP environment → Server.envfile
Create.envfile in project root for fallback authentication:
# Fallback: Shared service account token PHABRICATOR_TOKEN=your-shared-token-here # Optional: Custom Phabricator URL (auto-detected from token by default) # PHABRICATOR_URL=https://your-phabricator-instance.com/api/ # Optional: Custom server port (default: 8932) # MCP_SERVER_PORT=8932
- Personal tokens: Comments appear under YOUR name
- Shared tokens: Comments appear under the service account name
- Mixed usage: Different tools can use different tokens
- Tokens are passed securely through MCP protocol
- No tokens stored on disk (except optional.envfallback)
- Each client can use their own personal token
- Check token validity: Test your token directly with Phabricator API
- Verify configuration: EnsurePHABRICATOR_TOKENis set correctly
- Check environment: Run server with debugging to see environment variables
- Use personal token: Passapi_tokenparameter directly to tools
# Check if server can start with your token PHABRICATOR_TOKEN=your-token python start.py --mode http # Test token manually curl -d "api.token=your-token" https://your-phabricator-instance.com/api/user.whoami
Add to Claude Desktop configuration (claude_desktop_config.json):
{ "mcpServers": { "phabricator": { "command": "python", "args": ["path/to/phabricator-mcp-server/start.py", "--mode", "stdio"], "cwd": "path/to/phabricator-mcp-server" } } }
{ "mcpServers": { "phabricator": { "url": "http://localhost:8932/sse" } } }
from src.core.client import PhabricatorClient # Initialize client client = PhabricatorClient( token="your-32-char-api-token", host="https://your-instance.com/api/" ) # Get enhanced review feedback with code context feedback = await client.get_review_feedback_with_code_context("12345", context_lines=7) # Add inline comment to specific line await client.add_inline_comment("12345", "src/file.py", 42, "Consider using a more descriptive variable name") # Get task with full context task = await client.get_task("6789") comments = await client.get_task_comments("6789")
# Get intelligent review feedback feedback_data = await client.get_review_feedback_with_code_context("D123", context_lines=5) # The feedback includes: # - Comments correlated with specific code locations # - Surrounding code context for each comment # - Action items categorized by priority # - File-by-file breakdown of changes
# Install with dev dependencies pip install -e ".[dev]" # Or with uv (faster) uv pip install -e ".[dev]"
# Run all tests with our test runner python run_tests.py # Run specific test suites python -m pytest src/tests/test_tool_completeness.py -v python -m pytest src/tests/test_tool_integration.py -v # Run with coverage python -m pytest --cov=src --cov-report=html
# Format code black src/ ruff check src/ --fix # Type checking mypy src/ # Run all quality checks black src/ && ruff check src/ && mypy src/ && python run_tests.py
- Tool Completeness: Validates all 11 tools are properly configured
- Integration Testing: Tests all tools with realistic mock data
- Error Handling: Validates graceful failure modes
- Argument Validation: Ensures correct required/optional parameters
- Mock Phabricator: No API calls needed for testing
Theget-review-feedbacktool provides advanced analysis:
# Returns structured feedback with: { "revision": {...}, # Revision metadata "review_feedback": [ # Enhanced comment analysis { "comment": "Fix this issue", "author": "reviewer-phid", "type": "inline", "code_context": { "file": "src/example.py", "target_line": 42, "hunk_info": "@@ -40,7 +40,7 @@", "lines": [ # Surrounding code context {"line_number": 40, "content": "def example():", "is_target": False}, {"line_number": 41, "content": " # TODO: fix this", "is_target": False}, {"line_number": 42, "content": " return broken_code", "is_target": True}, {"line_number": 43, "content": " # end function", "is_target": False}, ] }, "primary_file": "src/example.py", "primary_line": 42 } ], "summary": "Analysis summary with actionable insights", "total_comments": 5, "comments_with_context": 3 }
- Keyword Extraction: Identifies variable names, function names in comments
- Code Location Mapping: Links comments to specific files and line numbers
- Context Enrichment: Shows surrounding code for better understanding
- Priority Classification: Organizes feedback by importance
We welcome contributions! Here's how to get started:
# Fork and clone the repository git clone https://github.com/your-username/phabricator-mcp-server.git cd phabricator-mcp-server # Create feature branch git checkout -b feature/amazing-feature # Make changes and test python run_tests.py # Commit and push git commit -m 'feat: add amazing feature' git push origin feature/amazing-feature # Open a Pull Request
- Follow existing code style (black + ruff)
- Add tests for new features
- Update documentation as needed
- Ensure all quality checks pass
MIT License - seeLICENSEfile for details.
- Repository:https://github.com/YushengAuggie/phabricator-mcp-server
- Model Context Protocol:https://modelcontextprotocol.io/
- FastMCP:https://github.com/jlowin/fastmcp
- Phabricator API:https://secure.phabricator.com/book/phabricator/article/conduit/
Official MCP server for Buildable AI-powered development platform. Enables AI assistants to manage tasks, track progress, get project context, and collaborate with humans on software projects.
Access DevRev's APIs to manage work items, parts, search, and user information.
Secure remote MCP server for giving AI agents access to ZERNO project briefs, tasks, and execution context.
Keep teams & agents coordinated automatically
Integrates AI with Atlassian Jira to manage projects, search for issues, and view development information like commits and pull requests.
An MCP server for integrating ClickUp tasks with AI applications, featuring task dependency management and bug fixes.
Interact with Monday.com boards, items, updates, and documents.
An intelligent problem-solving server that automatically forms multi-role teams and uses the Eisenhower matrix for efficient task management and collaboration.
A team task management application for collaboration between humans and AI.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




