MCP Server for Propel
Submit git diffs for AI-powered code review directly from your IDE or terminal using the Propel code review platform.
Features
- Submit git diffs for async code review
- Automatically polls for results (reviews take 5-10 minutes)
- Retrieve detailed review comments with file paths, line numbers, and severity
- Quick status checks for in-progress reviews
- Works with Claude Desktop, Cursor, Claude Code, Codex, and Windsurf
Requirements
- Python 3.10 or higher (required by the MCP Python SDK)
Installation
Recommended: Using uvx (no install needed)
uvx runs the server in an isolated environment automatically — no virtual environment setup, no dependency conflicts.
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh
No further installation steps needed. Configure your client to use uvx directly (see Setup below).
Alternative: Using pipx
pipx installs the server in its own isolated environment:
pipx install mcp-server-propel
Alternative: Using pip
Use a virtual environment to avoid conflicts with system packages:
python3 -m venv ~/.venvs/mcp-propel
source ~/.venvs/mcp-propel/bin/activate
pip install mcp-server-propel
Avoid installing with
pipinto your system Python. System-managed packages (likecffi) can cause install failures. A virtual environment,uvx, orpipxavoids this entirely.
Setup
Step 1: Get your API token
Get your Propel API token from Propel Settings. Your token needs reviews:write and reviews:read scopes.
Step 2: Configure your client
Choose the setup instructions for your tool:
Claude Desktop
Config file location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Using uvx (recommended):
{
"mcpServers": {
"propel": {
"command": "uvx",
"args": ["mcp-server-propel"],
"env": {
"PROPEL_API_TOKEN": "your-api-token-here"
}
}
}
}
Using a direct install (pipx or pip):
{
"mcpServers": {
"propel": {
"command": "mcp-server-propel",
"env": {
"PROPEL_API_TOKEN": "your-api-token-here"
}
}
}
}
Restart Claude Desktop after saving.
Cursor
Config file location:
- Project-level:
.cursor/mcp.json(in the project root) - Global:
~/.cursor/mcp.json
You can also add it via Cursor Settings > Developer > MCP Tools > Add Custom MCP.
{
"mcpServers": {
"propel": {
"command": "uvx",
"args": ["mcp-server-propel"],
"env": {
"PROPEL_API_TOKEN": "your-api-token-here"
}
}
}
}
Claude Code
Option A: CLI command (quickest)
claude mcp add --transport stdio \
--env PROPEL_API_TOKEN=your-api-token-here \
propel -- uvx mcp-server-propel
Add --scope project to share with your team, or --scope user to enable across all projects.
Option B: Project config file (.mcp.json in project root)
{
"mcpServers": {
"propel": {
"command": "uvx",
"args": ["mcp-server-propel"],
"env": {
"PROPEL_API_TOKEN": "${PROPEL_API_TOKEN}"
}
}
}
}
With
.mcp.json, you can use${PROPEL_API_TOKEN}to reference your shell environment variable instead of hardcoding the token.
Codex CLI
Option A: CLI command
codex mcp add propel \
--env PROPEL_API_TOKEN=your-api-token-here \
-- uvx mcp-server-propel
Option B: Config file (~/.codex/config.toml or .codex/config.toml)
[mcp_servers.propel]
command = "uvx"
args = ["mcp-server-propel"]
[mcp_servers.propel.env]
PROPEL_API_TOKEN = "your-api-token-here"
Windsurf
Config file location:
- macOS/Linux:
~/.codeium/windsurf/mcp_config.json - Windows:
%USERPROFILE%\.codeium\windsurf\mcp_config.json
{
"mcpServers": {
"propel": {
"command": "uvx",
"args": ["mcp-server-propel"],
"env": {
"PROPEL_API_TOKEN": "your-api-token-here"
}
}
}
}
Tools
submit_review
Submit a git diff for code review. Returns immediately with a review ID, then instructs the AI to call get_review to poll for results.
Parameters:
diff(required): Unified git diff outputrepository(required): Repository identifier (name, full name, or URL)base_commit(optional): Base commit SHA for additional context
get_review
Get review results. Polls the API automatically every 12 seconds until the review completes or fails (~12 min max).
Parameters:
review_id(required): The review job identifier
check_review_status
Quick, non-polling status check. Returns only status and timing info without waiting.
Parameters:
review_id(required): The review job identifier
Troubleshooting
"PROPEL_API_TOKEN environment variable is required"
- Ensure the token is set in your client's MCP config
envsection - Restart your client after updating the config
"Invalid authorization token" / "Authorization token has expired"
- Generate a new token at Propel Settings
- Ensure it has
reviews:writeandreviews:readscopes
"Diff too large"
- Your diff exceeds the 1 MB size limit
- Try reviewing a smaller changeset (fewer files or commits)
"Repository not found"
- The repository must be connected to your Propel workspace
- Check the repository name matches what's configured in Propel
Cannot uninstall cffi or similar dependency conflicts
- This happens when installing with
pipinto system Python - Fix: use
uvx,pipx, or install inside a virtual environment (see Installation above)
Cursor not detecting tools
- Ensure you are on Cursor v2.4.21 or later
- Check that your
PROPEL_API_TOKENis set correctly in the config
Support
- Documentation: https://docs.propelcode.ai
- Issues: https://github.com/propel/mcp-server-propel/issues
- For development and contributing, see CONTRIBUTING.md
Metadata
Release files for mcp-server-propel 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_server_propel-0.2.0.tar.gz | 71.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_server_propel-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.8 kB
Release files / mcp_server_propel-0.2.0.tar.gz
| Download URL | mcp_server_propel-0.2.0.tar.gz |
|---|---|
| Size | 71.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44daaf44aec398f7e2475dbdb2d4812f3020b479d13f1060b8dcc8475e9e1ffb
|
|
BLAKE2b-256 checksum How to use checksums |
4ac625f89b6b24b1fbbedd439acae43724cebdb5e5c69afde3854d92dc55fb9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mcp_server_propel-0.2.0-py3-none-any.whl
| Download URL | mcp_server_propel-0.2.0-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
449210b49a0bbf5d8adb2767f178b113cdc82c398ea24aea08eec6dcfc1ffd3f
|
|
BLAKE2b-256 checksum How to use checksums |
f9374aafc52eec047500c22b17b99857d2527d024a6c7548976af52028b13b10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for mcp-server-propel 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.