QCoda MCP — Developer Setup Guide
Connect your AI coding tool (Claude Code, Cursor, JetBrains, aider) to QCoda so you can manage work items, run analysis pipelines, review concerns, approve builds, and read PM config — without leaving your editor. No QCoda source checkout required.
1. Install
Requires Python 3.11+.
pipx install qcoda-mcp # recommended — isolated, puts `qcoda-mcp` on PATH
# or
pip install qcoda-mcp
# or run without installing:
uvx qcoda-mcp
Upgrade later: pipx upgrade qcoda-mcp (or pip install -U qcoda-mcp).
2. Get an API key
QCoda dashboard → Profile → copy your qk_… API key.
The key is your QCoda identity and carries your write permissions. Treat it like a password: keep it in an env var / secrets manager, never commit it.
3. Configure your AI tool
All tools use the same two env vars: QCODA_URL and QCODA_API_KEY.
Claude Code
Project-level .mcp.json (this repo only) or user-level ~/.claude/mcp.json (all
projects):
{
"mcpServers": {
"qcoda": {
"command": "qcoda-mcp",
"env": {
"QCODA_URL": "https://app.qcoda.com",
"QCODA_API_KEY": "qk_your_key_here"
}
}
}
}
If qcoda-mcp isn't on PATH (e.g. you used plain pip in a venv), use:
"command": "python", "args": ["-m", "qcoda_mcp"].
Cursor
~/.cursor/mcp.json (or project .cursor/mcp.json) — same mcpServers block shape.
JetBrains (AI Assistant / MCP) & aider
Point the tool's MCP config at command qcoda-mcp with the same two env vars. For
aider, the bundled CLI wrapper also works: qcoda-mcp exposes the tools over stdio.
Restart the tool after editing config. You should see the QCoda tools appear.
4. Project & context scoping
Most tools auto-detect which QCoda project + context you mean from your git repo: matching your current branch against a context's base branch.
- On a branch that matches a QCoda context's base branch → auto-selected.
- No match → pass
project="<id>"(andcontext="<id>") explicitly to the tool.
Find ids with list_scopes (lists your org's projects + contexts).
5. Verify
In your AI tool, ask it to run list_work_items. If you get items back (or "No
work items found" for an empty project), you're wired. get_pm_config shows a
project's PM integration settings (secrets redacted).
6. What you can do (tool groups)
- Work items:
list_work_items,create_work_item,clarify_work_item,get_spec,link_work_items,list_work_item_relations - Pipeline:
get_pipeline_status,get_run_history,get_agent_report,restart_analysis,resume_from_agent,retry_intake,clear_error - Quality:
get_concerns,resolve_concern,approve_for_build,trigger_qc - PM config:
get_pm_config,set_pm_config(non-secret keys only) - Ledger Q&A:
ask_qcoda,ledger_status,list_scopes
Write actions require your account to have write permission (PRODUCT/TECHNICAL role). OBSERVER accounts get read-only and a clear refusal on writes.
7. Troubleshooting
| Symptom | Fix |
|---|---|
QCODA_URL and QCODA_API_KEY … required |
env vars missing from the MCP config block |
| No QCoda tools appear | tool didn't restart, or command not found — try python -m qcoda_mcp |
| Tools hit the wrong project | branch doesn't match a context; pass project=/context= |
OBSERVER role cannot … |
your account is read-only; ask for PRODUCT/TECHNICAL |
ModuleNotFoundError: mcp.server.fastmcp |
wrong mcp version — pipx upgrade qcoda-mcp (needs mcp 1.x) |
Maintainers: publishing + versioning lives in docs/qcoda_mcp_publishing.md.
Metadata
Release files for qcoda-mcp 0.1.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 | Actions |
|---|---|---|---|---|
| qcoda_mcp-0.1.0.tar.gz | 343.2 kB | Without provenance | Details for qcoda_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qcoda_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for qcoda_mcp-0.1.0-py3-none-any.whl |
Total release size: 363.0 kB
Release files / qcoda_mcp-0.1.0.tar.gz
| Download URL | qcoda_mcp-0.1.0.tar.gz |
|---|---|
| Size | 343.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1d929841058167d28e74a9f766422486d64e3e4e9cbd4327f693841e9d0cf5bb
|
|
BLAKE2b-256 checksum How to use checksums |
8ea1b4423f8d27e2b80f86bec35155a8628628a7d8543235efd64fc726fa3b71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.10
|
Release files / qcoda_mcp-0.1.0-py3-none-any.whl
| Download URL | qcoda_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d863d088a9a25717fbff14d45c79e47feb39a67b0fcae57bf6c8e82987e610eb
|
|
BLAKE2b-256 checksum How to use checksums |
02ff3a428aa8338c30da1f5c273c3f4bd5adbdbac72d8ed7b2fd6b6e7f1289f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.10
|
Security for qcoda-mcp 0.1.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.