release-announcer-mcp
This server prepares release announcements for public GitHub repositories by fetching repository details, checking publication readiness, and generating tailored announcement drafts for multiple platforms.
Fetch repository info: Retrieve metadata (description, topics, license, stars), latest release notes, README content (up to 12,000 characters), and root file list.
Check publish readiness: Run a pre-publication checklist covering LICENSE (MIT expected), README quality, GitHub Release, topics (≥3), description, and
.gitignore. Returns pass/warn/fail statuses with fix suggestions.Build announcement brief: Compile a writing brief from the fetched data and generate draft copy for:
X/Twitter (Japanese + English, ~160 chars)
Reddit post (English)
GitHub profile README table row
awesome-mcp list PR entry (entry text, PR title/body)
MCP directory listings (descriptions, tags)
All generated content is draft-only for human review — the server never posts automatically.
Provides tools for fetching public GitHub repository information (metadata, README, latest release, file list), checking pre-publication readiness (license, README, release, topics, description, .gitignore), and generating multi-target announcement briefs (X post, Reddit, GitHub profile README row, awesome-mcp PR, directory listings).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@release-announcer-mcpBuild the announcement kit for h-kazuki-pixel/jp-dates-mcp-server"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
release-announcer-mcp
An MCP server that turns a GitHub repository into ready-to-review release announcements — and checks that the repo is actually ready to ship.
Point it at any public repo and ask Claude for an "announcement kit". You get drafts for:
X/Twitter post (short, link included, in two languages)
Reddit post (understated "I built a thing" tone — draft only, never auto-posted)
GitHub profile README table row
awesome-list entry + pull request text
MCP directory listing (short/long description + tags)
Plus a publish-readiness checklist: LICENSE, README quality, Release, Topics, About description, .gitignore — each with a concrete fix suggestion when missing.
No API key required. Works with any public GitHub repository.
Why
If you ship open-source tools on a regular cadence, the release itself is the easy part. The repetitive part is everything after: writing the announcement, adapting it per platform, updating your profile, submitting to directories. This server gathers the facts (README, release notes, metadata) and hands your LLM a strict writing brief, so every announcement is accurate, consistent, and takes minutes instead of an hour.
By design, this tool generates drafts only. It never posts anywhere. You review, then you post.
Related MCP server: codeglance-mcp
Tools
Tool | What it does |
| Fetch repo metadata, latest release, README, and root files |
| Run the pre-publication checklist (pass/warn/fail with fixes) |
| Build a complete writing brief for any subset of announcement targets |
Setup
Requires Node.js 18+.
git clone https://github.com/h-kazuki-pixel/release-announcer-mcp.git
cd release-announcer-mcp
npm install
npm run buildAdd to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"release-announcer": {
"command": "node",
"args": ["/absolute/path/to/release-announcer-mcp/dist/index.js"]
}
}
}claude_desktop_config.json is at:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
GitHub API rate limit
Unauthenticated GitHub API requests are capped at 60 per hour per IP address, and building one announcement kit makes several of them. A token raises the cap to 5,000 per hour.
Put the token in the env block of the config file. Do not export it in your shell — Claude Desktop starts MCP servers without inheriting the shell environment, so an exported variable never reaches this server.
{
"mcpServers": {
"release-announcer": {
"command": "node",
"args": ["/absolute/path/to/release-announcer-mcp/dist/index.js"],
"env": { "GITHUB_TOKEN": "ghp_..." }
}
}
}The token needs no scopes. This server only reads public repositories.
Docker (optional)
The repository ships a Dockerfile (Node 20 slim, multi-stage build) for running the server in a container. The Claude Desktop setup above does not need it.
docker build -t release-announcer-mcp .Usage
Just ask Claude, for example:
"Build the announcement kit for h-kazuki-pixel/jp-dates-mcp-server"
"Is my-org/my-repo ready to publish? Run the checklist."
"Draft only the X post and the awesome-list entry for owner/repo."
Example output (checklist)
# Publish readiness: owner/repo
**6/8 checks passed**
- ✅ LICENSE file — MIT License detected.
- ✅ README — README found.
- ⚠️ README: setup instructions — No obvious setup section. Add installation steps.
- ✅ README: usage examples — Usage/example content detected.
- ❌ GitHub Release — No release found. Create one: Releases → 'Draft a new release' → tag v1.0.0.
- ✅ Topics (discovery tags) — 4 topics set.
- ✅ About description — Description set.
- ✅ .gitignore — .gitignore found.Development
npm run build # compile TypeScript
npm test # run integration tests (uses a local mock of the GitHub API)License
MIT
日本語
GitHubリポジトリを指定するだけで、リリース告知に必要な文章一式のドラフトと、公開前チェックリストを生成するMCPサーバーです。
できること
X(Twitter)告知文(2言語・リンク付き・短文)
Reddit投稿の下書き(宣伝色を抑えた文体。自動投稿は一切しません)
GitHubプロフィールREADMEの作品表の行
awesomeリスト登録用のエントリ+PR文
MCPディレクトリ(mcp.so等)登録用の説明文+タグ案
公開前チェックリスト: LICENSE / READMEの充実度 / Release作成 / Topics / About欄 / .gitignore を自動判定し、不足があれば直し方を提示
APIキー不要。公開リポジトリならどれでも使えます。
セットアップ
Node.js 18以上が必要です。
git clone https://github.com/h-kazuki-pixel/release-announcer-mcp.git
cd release-announcer-mcp
npm install
npm run buildClaude Desktopの設定ファイル(claude_desktop_config.json)に追加:
{
"mcpServers": {
"release-announcer": {
"command": "node",
"args": ["/absolute/path/to/release-announcer-mcp/dist/index.js"]
}
}
}claude_desktop_config.json の場所:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
GitHub APIのレート上限
未認証のGitHub APIはIPアドレスあたり1時間60リクエストに制限されており、告知セットを1回作るだけで複数回叩きます。トークンを設定すると1時間5,000リクエストに上がります。
トークンは設定ファイルの env ブロックに書いてください。シェルで export しても届きません。 Claude Desktop はMCPサーバーを、シェルの環境変数を引き継がない形で起動するためです。
{
"mcpServers": {
"release-announcer": {
"command": "node",
"args": ["/absolute/path/to/release-announcer-mcp/dist/index.js"],
"env": { "GITHUB_TOKEN": "ghp_..." }
}
}
}トークンに権限(スコープ)の付与は不要です。このサーバーは公開リポジトリの読み取りしか行いません。
Docker(任意)
このリポジトリには Dockerfile(Node 20 slim・マルチステージ構成)が同梱されています。コンテナで動かしたい場合に使います。上のClaude Desktopの手順では不要です。
docker build -t release-announcer-mcp .使い方
Claudeにこう頼むだけです:
「h-kazuki-pixel/jp-dates-mcp-server の告知セットを作って」
「owner/repo は公開準備できてる?チェックリストを実行して」
設計方針
このツールが生成するのは下書きのみです。SNSへの自動投稿機能は意図的に持たせていません。最終確認と投稿は必ず人間が行います。
ライセンス
MIT
Available Tools
3 toolsbuild_announcement_briefBuild announcement briefARead-onlyIdempotent
Gather a repository's facts (README, latest release notes, metadata) and return a complete writing brief: source material plus strict per-target writing instructions. The calling LLM then writes the final draft texts from this brief.
Targets available:
x_post: X/Twitter announcement (Japanese + English, ~160 chars)
reddit_draft: understated Reddit post draft (English, title + body)
profile_readme_row: GitHub profile README table row
awesome_mcp_pr: awesome-mcp list entry + PR title/body
directory_listing: MCP directory (mcp.so etc.) descriptions + tags
Args:
owner (string): GitHub user/org name
repo (string): repository name
targets (string[], optional): subset of targets; defaults to all five
Returns: a Markdown brief. After calling this tool, write the requested draft texts following the brief's rules exactly. All output is draft-only for human review — never post anywhere automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository name, e.g. 'jp-dates-mcp-server' | |
| owner | Yes | GitHub user or organization name, e.g. 'h-kazuki-pixel' | |
| targets | No | Which announcement targets to include (default: all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds that it returns a Markdown brief with source material and per-target instructions, emphasizes it never posts automatically, and describes the gathering process (README, releases, metadata). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose paragraph, target list with descriptions, argument list, and return/usage note. Every sentence is necessary and front-loaded. No repetition or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with five targets and multiple data sources. The description provides a good overview and step-by-step instructions, but lacks details on the exact structure of the returned Markdown brief. However, given the annotations and schema richness, it is mostly complete for an AI agent without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for owner, repo, and targets. The description restates these briefly but adds useful context: targets can be a subset with a default of all five. It also gives the enum values inline. This adds slight value beyond the schema, justifying a score above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gathers repository facts and returns a writing brief with per-target instructions. The verb 'build' and resource 'announcement_brief' are specific. It distinguishes from siblings fetch_repo_info (which just fetches info) and check_publish_readiness (which checks readiness), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the workflow: call this tool to get a brief, then write drafts following its instructions, and notes that output is draft-only for human review, never auto-posted. It lists available targets but does not explicitly contrast with sibling tools or state when not to use it. However, the context is clear enough for the AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_publish_readinessCheck publish readinessARead-onlyIdempotent
Run a pre-publication checklist against a public GitHub repository and report pass/warn/fail per item.
Checks: LICENSE present (MIT expected), README present with setup instructions and usage examples, GitHub Release created, 3+ Topics set, About description set, .gitignore present.
Args:
owner (string): GitHub user/org name
repo (string): repository name
Returns: a Markdown checklist report plus structured JSON ({ repo, passed, total, items: [{id, label, status, detail}] }). Each failing item includes a concrete fix suggestion.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository name, e.g. 'jp-dates-mcp-server' | |
| owner | Yes | GitHub user or organization name, e.g. 'h-kazuki-pixel' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying the tool operates on a public repo, returns a structured checklist report with fix suggestions, and confirms no mutation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points for checks, clear argument listing, and explicit return format. Every sentence is informative and necessary, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully details the return format (Markdown checklist plus structured JSON with item details). Combined with annotations and schema, the definition is complete for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter descriptions in the input schema are already detailed (maxLength, minLength, and descriptions). The description's 'Args' section repeats this information without adding deeper semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs a pre-publication checklist against a public GitHub repository, listing specific checks. It distinctly separates from sibling tools like fetch_repo_info and build_announcement_brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the use case (pre-publication readiness check) and lists what checks are performed. However, it does not specify when to avoid using this tool or provide direct alternatives beyond sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_repo_infoFetch repository infoARead-onlyIdempotent
Fetch public information about a GitHub repository: description, topics, license, stars, latest release (tag + notes), README content, and root file list.
Use this when you need raw facts about a repository before writing about it or checking it.
Args:
owner (string): GitHub user/org name
repo (string): repository name
Returns: structured JSON with repo metadata, latestRelease (or null), readme text (truncated at 12000 chars), and rootFiles.
Errors: returns a clear message for unknown repos (404) and API rate limits (retry later or set GITHUB_TOKEN env var).
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository name, e.g. 'jp-dates-mcp-server' | |
| owner | Yes | GitHub user or organization name, e.g. 'h-kazuki-pixel' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive nature. The description adds behavioral details beyond these: returns structured JSON, error handling for 404 and rate limits, and README truncation at 12000 chars. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections: what it fetches, when to use, Args, Returns, Errors. It is front-loaded with key information. Slightly verbose but every part adds value; could be more concise but still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return structure and error messages. Annotations cover safety, so the description completes the picture for a tool of moderate complexity. It lacks explicit details on exact fields of repo metadata, but overall is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description repeats parameter names and types but adds little beyond what the schema provides. It does not add nuances like format or validation rules. Baseline of 3 for high coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the specific resource 'public information about a GitHub repository'. It enumerates the fetched data (description, topics, license, stars, latest release, README content, root file list), distinguishing it from siblings like check_publish_readiness and build_announcement_brief, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this when you need raw facts about a repository before writing about it or checking it.' While it doesn't explicitly state when not to use or mention alternatives, the context is clear and sufficient for the agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v1.0.0- First observed
build_announcement_brief - First observed
check_publish_readiness - First observed
fetch_repo_info
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: fetch_repo_info retrieves raw repo data, check_publish_readiness runs a checklist, and build_announcement_brief creates a writing brief. There is no overlap in functionality.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., fetch_repo_info, check_publish_readiness, build_announcement_brief). The naming is predictable and uniform.
With only 3 tools, the server is at the lower bound of the typical 3-15 range. While the domain is specific, the tool set feels slightly thin for a release announcer, missing tools for actual posting or scheduling.
The tools cover fetching, readiness checking, and brief creation, but lack tools for final draft generation or posting. Important lifecycle steps like creating releases or publishing announcements are absent, leading to significant gaps.
Maintenance
Related MCP Connectors
- ShipstarOAuthai.shipstar
Generate changelogs, release emails, help-center articles, banners, and social posts from commits.
Create, update, and publish changelog entries on your Patchlog changelog from any MCP client.
Manage repositories, users, releases, and automate GitHub workflows
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Related MCP Servers
- FlicenseBqualityDmaintenanceGenerates comprehensive and formatted release notes from GitHub repositories, efficiently organizing commits by type and including detailed statistics using smart API usage.33-
- AlicenseAqualityDmaintenanceAnalyzes GitHub repositories using Gemini AI and generates comprehensive documentation including overviews, architecture guides, and file insights. Works with any MCP-compatible client.3MIT
- AlicenseBqualityDmaintenanceProvides tools for accessing, comparing, and analyzing GitHub repository releases with rich formatting and detailed information.510 npm3ISC
- FlicenseAqualityAmaintenanceCombines GitHub releases from multiple repositories into a single product release note, with context sources for LLM synthesis.7-