PR-Description Skill
MCP server that generates structured pull request descriptions from Jira tickets and git diffs, with secret scanning, clarification questions, and optional publishing via GitHub CLI.
README
PR-Description MCP Skill
An MCP server that generates structured PR descriptions from Jira tickets and git diffs.
Prerequisites
- Node.js ≥ 18 — nodejs.org
- Git
- GitHub CLI (
gh) — cli.github.com (required forpublish_pr) - AI Tool — at least one of: Augment, Cursor, Claude Desktop, VS Code (Copilot), or Windsurf
Quick Install
curl -fsSL https://raw.githubusercontent.com/edmoura/pr-description-skill/main/scripts/install.sh | bash
This will clone the repo, install dependencies, build, run the setup wizard, and auto-register the MCP server with every detected AI tool — all idempotently.
Supported AI tools (auto-detected)
| Tool | Config location | Merge behavior |
|---|---|---|
| Augment | ~/.augment/mcp/pr-description.json + ~/.augment/skills/ |
Standalone file (overwritten) |
| Cursor | ~/.cursor/mcp.json |
Merged into mcpServers |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
Merged into mcpServers |
| VS Code | ~/Library/Application Support/Code/User/mcp.json |
Merged into servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
Merged into mcpServers |
The installer checks whether each tool is installed (config dir exists or
command is on PATH). Detected tools get the config entry; others are skipped.
Existing servers in the same config file are preserved — only the
pr-description entry is added or updated.
Manual Install
git clone https://github.com/edmoura/pr-description-skill.git ~/.pr-description-skill
cd ~/.pr-description-skill
npm install # installs deps + builds (via postinstall)
npm run setup # interactive credential wizard
Then run the installer to register MCP with all detected tools:
bash scripts/install.sh
Or register manually with Augment by creating ~/.augment/mcp/pr-description.json:
{
"name": "pr-description",
"command": "node",
"args": ["<path-to-repo>/dist/src/index.js"],
"env": {}
}
And copy the skill prompt:
mkdir -p ~/.augment/skills/pr-description
cp .augment/skills/pr-description/SKILL.md ~/.augment/skills/pr-description/SKILL.md
Configuration
All configuration is stored in a global ~/.pr-description-skill/.env (owner-read-only), so credentials configured once apply in every project you open. Run npm run setup from anywhere to reconfigure at any time. A project-local ./.env (if present) is layered on top and can override the global values for that repo.
| Variable | Required | Description |
|---|---|---|
JIRA_BASE_URL |
Yes | Jira instance URL (e.g. https://yourcompany.atlassian.net) |
JIRA_EMAIL |
Yes | Your Atlassian login email |
JIRA_API_TOKEN |
Yes | API token from Atlassian |
JIRA_AC_FIELD_ID |
No | Custom field ID for Acceptance Criteria (default: customfield_10222) |
JIRA_INTEGRATION_DISABLED |
No | Set to true to skip Jira (paste ACs manually) |
See .env.example for a documented template.
Usage
In your IDE or Auggie CLI, type /pr-description on any feature branch. The skill will:
- Security scan — check the diff for accidentally committed secrets
- Ask for Jira ticket — fetch title, description, and acceptance criteria
- Ask clarifying questions — breaking changes, dates, feature flags, etc.
- Generate the PR description — structured Markdown following the team template
- Publish — create or update the PR via
gh(with your approval)
Updating / Self-Update
Re-run the installer — it detects the existing clone and does a git pull + rebuild:
bash ~/.pr-description-skill/scripts/install.sh
Or with the explicit --update flag:
bash ~/.pr-description-skill/scripts/install.sh --update
Troubleshooting
General
| Issue | Fix |
|---|---|
fetch_jira_ticket returns 401 |
Verify JIRA_EMAIL and JIRA_API_TOKEN in ~/.pr-description-skill/.env, or re-run npm run setup |
| Acceptance Criteria always empty | Your Jira instance may use a different custom field. Find the ID (see below) and set JIRA_AC_FIELD_ID via npm run setup |
publish_pr fails |
Ensure gh is installed and authenticated (gh auth login) |
| MCP server not found | Check ~/.augment/mcp/pr-description.json points to the correct dist/src/index.js path |
postinstall loop |
Run npm install --ignore-scripts then npm run build separately |
Permission denied writing .env |
Run chmod u+w ~/.pr-description-skill/.env and retry |
MCP Host-Specific Issues
| Host | Symptom | Fix |
|---|---|---|
| Augment | "Tool not found" after install | Restart Augment or reload the window. Verify ~/.augment/mcp/pr-description.json exists. |
| Cursor | Server fails to connect | Check ~/.cursor/mcp.json has a valid mcpServers.pr-description entry. Restart Cursor. |
| VS Code | Tools not appearing | VS Code uses servers (not mcpServers). Check ~/Library/Application Support/Code/User/mcp.json. Reload window (Cmd+Shift+P → "Reload Window"). |
| Claude Desktop | Server not listed | Fully quit and relaunch Claude Desktop. Check ~/Library/Application Support/Claude/claude_desktop_config.json. |
| Windsurf | Connection timeout | Verify ~/.codeium/windsurf/mcp_config.json has the correct node path. Restart Windsurf. |
| All hosts | Server crashes on startup | Check the debug log: cat ~/.pr-description-skill/debug.log. Ensure Node.js ≥ 18 is on PATH. |
| All hosts | "ENOENT" or "spawn node" errors | The node binary might not be on the host's PATH. Use the full path in the config: replace "command": "node" with "command": "/usr/local/bin/node" (or wherever which node points). |
Debug Log
All tool invocations are logged to ~/.pr-description-skill/debug.log. Share this file with the support team when reporting issues. The log auto-rotates at 5 MB.
Finding your Acceptance Criteria field ID
Acceptance Criteria is a Jira custom field, and its ID varies per instance. To find yours, open a ticket that has AC filled in and query the API:
curl -s -u "you@example.com:$JIRA_API_TOKEN" \
"$JIRA_BASE_URL/rest/api/3/issue/PROJ-123?expand=names" \
| node -e 'const d=JSON.parse(require("fs").readFileSync(0));for(const[k,v]of Object.entries(d.names)){if(/accept|criteria|expected result/i.test(v))console.log(k,"=>",v)}'
Set the resulting customfield_XXXXX via npm run setup. If none is
configured, the tool tries a fallback chain (Acceptance Criteria → Expected
Results → Definition of Done); see src/config.ts.
Notes on formatting
- Jira descriptions and AC are stored in ADF (Atlassian Document Format) and converted to plain text/Markdown. Rich elements (tables, links, inline emphasis) may be simplified or dropped.
get_sanitized_diffperforms best-effort secret redaction (AWS/GitHub/ Slack/Stripe tokens, private keys,password=/token=assignments) before returning the diff. This is defense-in-depth — always review diffs manually before publishing.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.