Skip to main content
Glama
nickbaumann98

Release Notes MCP Server

README.md
# Release Notes Server

An MCP server that generates beautiful release notes from GitHub repositories. It efficiently fetches commits, organizes them by type, and presents them in a clean, readable format.

## Features

- ๐ŸŽฏ Smart commit filtering by date or SHA
- ๐Ÿ“Š Groups commits by type (features, fixes, etc.)
- ๐Ÿ” Enriches commits with PR data
- ๐Ÿ“ˆ Includes detailed statistics
- ๐ŸŽจ Clean markdown formatting with emojis
- โšก Efficient API usage with GitHub's `since` parameter

## Installation

```bash
npm install
npm run build
```

## Usage

Add this server to your MCP configuration:

```json
{
  "mcpServers": {
    "release-notes": {
      "command": "node",
      "args": ["/path/to/release-notes-server/build/index.js"],
      "env": {
        "GITHUB_TOKEN": "your-github-token"
      }
    }
  }
}
```

### Available Tools

#### generate_release_notes

Generates release notes for a GitHub repository.

Parameters:
```typescript
{
  "owner": string,           // Repository owner
  "repo": string,           // Repository name
  "commitRange": {
    "fromCommit"?: string,  // Starting commit SHA
    "toCommit"?: string    // Ending commit SHA
  },
  "format": {
    "type": "markdown",     // Output format
    "groupBy": "type",      // How to group commits
    "includeStats": boolean // Include commit statistics
  }
}
```

Example:
```typescript
const result = await use_mcp_tool({
  server_name: "release-notes",
  tool_name: "generate_release_notes",
  arguments: {
    owner: "owner",
    repo: "repo",
    commitRange: {
      fromCommit: "abc123" // Get commits from this SHA
    },
    format: {
      type: "markdown",
      groupBy: "type",
      includeStats: true
    }
  }
});
```

## Output Format

The generated release notes include:

1. Header with generation date and statistics
2. Sections grouped by commit type:
   - ๐Ÿš€ Features
   - ๐Ÿ› Fixes
   - ๐Ÿ“š Documentation
   - โšก Performance
   - โ™ป๏ธ Refactoring
   - ๐Ÿงช Tests
   - ๐Ÿ—๏ธ Build
   - ๐Ÿ”ง Other

3. Detailed statistics including:
   - Total commits
   - Breaking changes
   - Commits by type
   - Commits by author

## Environment Variables

- `GITHUB_TOKEN`: GitHub personal access token with repo access

## Implementation Details

The server implements efficient commit fetching by:

1. Using GitHub's `since` parameter when possible to reduce API calls
2. Falling back to SHA-based filtering when needed
3. Properly handling pagination
4. Maintaining newest-first ordering for release notes
5. Enriching commits with PR data when available

## License

MIT

TDQS

B3.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyze_commits focuses on statistics and insights, configure_template handles template customization, and generate_release_notes produces the final output. There is no overlap in functionality, making it easy for an agent to select the right tool without confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (analyze_commits, configure_template, generate_release_notes). The naming is predictable and readable, with no deviations or mixed conventions.

Tool Count4/5

Three tools are reasonable for a release notes server, covering analysis, configuration, and generation. It is slightly lean but well-scoped; adding a tool for managing templates or historical notes could enhance completeness, but the current count is appropriate for core functionality.

Completeness4/5

The tool set covers the essential workflow: analyzing commits, configuring templates, and generating release notes. A minor gap exists in operations like updating or deleting templates, but agents can work around this, and the core domain is adequately addressed without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues