Skip to main content
Glama
nickbaumann98

Release Notes MCP Server

generate_release_notes

Generate formatted release notes from GitHub commits within specified timeframes or commit ranges, organizing changes by type and including statistics.

Instructions

Generate release notes from commits in a given timeframe or commit range

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ownerYes
repoYes
timeRangeNo
commitRangeNo
formatNo

Implementation Reference

  • Core handler function that generates formatted release notes (markdown, json, or text) from enriched commit data, handling grouping, stats, and breaking changes.
    export function generateReleaseNotes( commits: ParsedCommit[], options: { version?: string; groupBy?: 'type' | 'scope' | 'author'; format?: 'markdown' | 'json' | 'text'; includeStats?: boolean; template?: string; } = {} ): string { const { version, groupBy = 'type', format = 'markdown', includeStats = false } = options; // Separate breaking changes const breakingChanges = commits.filter(c => c.breaking); const regularCommits = commits.filter(c => !c.breaking); const releaseNotes: ReleaseNotes = { version, date: new Date().toISOString(), breakingChanges, commits: regularCommits, stats: includeStats ? calculateStats(commits) : undefined }; switch (format) { case 'markdown': return generateMarkdown(releaseNotes, groupBy); case 'json': return JSON.stringify(releaseNotes, null, 2); case 'text': return generatePlainText(releaseNotes, groupBy); default: throw new Error(`Unsupported format: ${format}`); } }
  • Server-side execution handler for the tool: parses args, fetches/enriches GitHub commits, and calls the core generateReleaseNotes function.
    case 'generate_release_notes': { const args = GenerateNotesSchema.parse(request.params.arguments); // Fetch commits based on time range or commit range // Try to get version from package.json const version = await getVersionFromPackageJson(args.owner, args.repo); const commits = await fetchCommits( args.owner, args.repo, args.timeRange?.from, args.timeRange?.to, args.commitRange?.fromCommit, args.commitRange?.toCommit ); // Enrich commits with PR data const enrichedCommits = await enrichCommitsWithPRData(args.owner, args.repo, commits); // Generate release notes const notes = generateReleaseNotes(enrichedCommits, { format: args.format?.type, groupBy: args.format?.groupBy, includeStats: args.format?.includeStats, template: args.format?.template ? templates[args.format.template] : undefined, version, }); return { content: [{ type: 'text', text: notes }], }; }
  • Tool registration entry in the MCP server's listTools response.
    { name: 'generate_release_notes', description: 'Generate release notes from commits in a given timeframe or commit range', inputSchema: zodToJsonSchema(GenerateNotesSchema), },
  • Zod schema defining the input parameters for the generate_release_notes tool, including repo details, ranges, and formatting options.
    export const GenerateNotesSchema = z.object({ owner: z.string(), repo: z.string(), timeRange: TimeRangeSchema.optional(), commitRange: CommitRangeSchema.optional(), format: FormatOptionsSchema.default({}) });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nickbaumann98/release-notes-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server