MCP server that narrates your code changes, from commits to deployments.
Project description
DevNarrate
MCP server that narrates your code changes, from commits to deployments.
Features
- Smart Commit Messages with user approval
- 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.
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.0a3.tar.gz.
File metadata
- Download URL: devnarrate-0.1.0a3.tar.gz
- Upload date:
- Size: 61.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ad23ece0cf44f162a29d3577c31ac618e1575172da57b959f19bd456cf0a892
|
|
| MD5 |
663675c6d07f48204bb0c61faba1b0ed
|
|
| BLAKE2b-256 |
5c138785b1a3a1551cce934dfbbfcec50520f8a370691e906f012625c47a424c
|
Provenance
The following attestation bundles were made for devnarrate-0.1.0a3.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.0a3.tar.gz -
Subject digest:
3ad23ece0cf44f162a29d3577c31ac618e1575172da57b959f19bd456cf0a892 - Sigstore transparency entry: 707417658
- Sigstore integration time:
-
Permalink:
kmandana/DevNarrate@9b2b8cd0d52fc6f3ec6ab242a6eeced796f89593 -
Branch / Tag:
refs/tags/v0.1.0a3 - Owner: https://github.com/kmandana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9b2b8cd0d52fc6f3ec6ab242a6eeced796f89593 -
Trigger Event:
push
-
Statement type:
File details
Details for the file devnarrate-0.1.0a3-py3-none-any.whl.
File metadata
- Download URL: devnarrate-0.1.0a3-py3-none-any.whl
- Upload date:
- Size: 10.0 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 |
393a176c1759efb7b66a659ff3bb2c42aa5a50b618b59e08c7f79fa0bacf6dd2
|
|
| MD5 |
8e9c129e8afdbdd3102d4d2003c149ed
|
|
| BLAKE2b-256 |
64dd603e4057b45c2dfba77beaf075d137730288cfb5bb587d85ea347cdf16be
|
Provenance
The following attestation bundles were made for devnarrate-0.1.0a3-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.0a3-py3-none-any.whl -
Subject digest:
393a176c1759efb7b66a659ff3bb2c42aa5a50b618b59e08c7f79fa0bacf6dd2 - Sigstore transparency entry: 707417660
- Sigstore integration time:
-
Permalink:
kmandana/DevNarrate@9b2b8cd0d52fc6f3ec6ab242a6eeced796f89593 -
Branch / Tag:
refs/tags/v0.1.0a3 - Owner: https://github.com/kmandana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@9b2b8cd0d52fc6f3ec6ab242a6eeced796f89593 -
Trigger Event:
push
-
Statement type: