MCP server for developer workflow automation — smart commits, secret scanning, PR descriptions, and more.
Project description
DevNarrate
MCP server for developer workflow automation — smart commits, secret scanning, PR descriptions, and more.
Features
- Change Review — understand AI-generated code changes before committing with narrative summaries, goal alignment, and attention guides
- Smart Commit Messages with user approval
- Secret Scanning — detect API keys, tokens, passwords, and private keys before they reach your repo (25+ detectors via detect-secrets)
- PR Descriptions driven by customizable templates
- GitHub & GitLab support for PR flows
- Token-aware diff handling with automatic pagination
- Safety-first workflow by requiring staged changes
Installation (PyPI)
pip install devnarrate
# Install pre-release builds
pip install --pre devnarrate
Register the MCP server
Use the Python interpreter from the environment where you ran pip install (e.g. /path/to/venv/bin/python). Capture it once and reuse:
PYTHON_BIN=$(python -c 'import sys; print(sys.executable)')
# Claude Code (global scope)
claude mcp add --scope user DevNarrate -- "$PYTHON_BIN" -m devnarrate.server
# Claude Code (project scope)
claude mcp add DevNarrate -- "$PYTHON_BIN" -m devnarrate.server
- Cursor (
~/.cursor/mcp.json):
{
"mcpServers": {
"DevNarrate": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "devnarrate.server"]
}
}
}
Restart Cursor after editing the config.
Usage
Commit Messages
DevNarrate works entirely off staged changes:
git add <file1> <file2>
# stage everything tracked:
git add -u
Then ask Claude (or Cursor):
Generate a commit message for my changes
DevNarrate summarizes the diff, proposes a conventional commit, and waits for approval before committing.
Change Review
After an AI assistant makes changes, ask it to review them before committing. DevNarrate presents a layered summary: narrative overview, goal grouping (known, inferred, unrecognized), and an attention guide highlighting what needs human review.
Secret Scanning
Secret scanning runs automatically when you ask for a commit message. DevNarrate scans staged diffs for API keys, tokens, passwords, and private keys. If secrets are found, you're warned before committing. Suppress false positives with an inline # pragma: allowlist secret comment.
PR Descriptions
- Ask Claude: "Create a PR to main from my current branch"
- Choose a template if you have custom ones in
.devnarrate/pr-templates/ - Review the generated PR description and approve to let DevNarrate call
ghorglab
Example template (.devnarrate/pr-templates/feature.md):
## Summary
[What does this PR do?]
## Changes
-
-
## Testing
[How to test]
## Related Issues
[Links]
If no custom template exists, DevNarrate uses a sensible default.
Platform Requirements
- Commits: only needs git
- GitHub PRs: install gh and run
gh auth login - GitLab PRs: install glab and run
glab auth login
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devnarrate-0.1.0a6.tar.gz.
File metadata
- Download URL: devnarrate-0.1.0a6.tar.gz
- Upload date:
- Size: 87.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b0c3223bb04af75c17475e7a651196fe2dab7dccf31190ac03b6f3994d317df
|
|
| MD5 |
c29b6ed8f0dd8139ceec31c8335cf6e1
|
|
| BLAKE2b-256 |
e3bf14601a13287b66292a1368ddaaaf23c20b21938953b756d9bc6a23e65a32
|
Provenance
The following attestation bundles were made for devnarrate-0.1.0a6.tar.gz:
Publisher:
publish.yml on kmandana/DevNarrate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devnarrate-0.1.0a6.tar.gz -
Subject digest:
6b0c3223bb04af75c17475e7a651196fe2dab7dccf31190ac03b6f3994d317df - Sigstore transparency entry: 1002815455
- Sigstore integration time:
-
Permalink:
kmandana/DevNarrate@5d432602b62d1432e7b458f0a7d5c1aa801a2f17 -
Branch / Tag:
refs/tags/v0.1.0a6 - Owner: https://github.com/kmandana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d432602b62d1432e7b458f0a7d5c1aa801a2f17 -
Trigger Event:
push
-
Statement type:
File details
Details for the file devnarrate-0.1.0a6-py3-none-any.whl.
File metadata
- Download URL: devnarrate-0.1.0a6-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09498da6aa6e365ce7187fa7e2961f1d3cc3dfb8f24c2382e4d88270ffd08a70
|
|
| MD5 |
15b1a17c13b98e46797a3a57c07f5cf4
|
|
| BLAKE2b-256 |
d1fe1d2ee8840469c4b5a7a0ab892815f183f02543cb5643431b1d00d850d8fb
|
Provenance
The following attestation bundles were made for devnarrate-0.1.0a6-py3-none-any.whl:
Publisher:
publish.yml on kmandana/DevNarrate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devnarrate-0.1.0a6-py3-none-any.whl -
Subject digest:
09498da6aa6e365ce7187fa7e2961f1d3cc3dfb8f24c2382e4d88270ffd08a70 - Sigstore transparency entry: 1002815459
- Sigstore integration time:
-
Permalink:
kmandana/DevNarrate@5d432602b62d1432e7b458f0a7d5c1aa801a2f17 -
Branch / Tag:
refs/tags/v0.1.0a6 - Owner: https://github.com/kmandana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5d432602b62d1432e7b458f0a7d5c1aa801a2f17 -
Trigger Event:
push
-
Statement type: