Fetches README files from GitHub repositories via the GitHub API and converts them into blog post content, enabling automated documentation of GitHub projects
Click on "Install 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., "@MCP4Allfetch the README from octocat/Hello-World and save it for my blog"
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.
MCP4All
Comprehensive example implementations of a Model Context Protocol (MCP) server that transform GitHub repository READMEs into local blog content. The repository ships two lightweight HTTP servers:
Node.js (Express) implementation in
server.jsPython (Flask) implementation in
server.py
Both variants expose a /mcp endpoint that can be driven by an MCP client (or any HTTP client) to pull a GitHub README, decode it, and write it to a local blog_content folder as Markdown.
Table of contents
Features
Fetches the README of any public or private GitHub repository via the GitHub REST API.
Saves the decoded README as a Markdown file into a configurable
blog_contentdirectory.Small, dependency-light servers that can be run with Node.js or Python.
Simple HTTP contract that can be wired into MCP-aware clients or scripts.
Repository layout
server.js— Express server that fetches GitHub READMEs and writes them locally.server.py— Flask server with similar functionality plus a simple echo response for generic MCP testing.blog_content/— Output directory for generated Markdown files (created automatically).package.json/package-lock.json— Node.js dependencies and scripts.ChatGPT.md— Background conversation that inspired the project (not required for runtime).LICENSE— Project license.
Prerequisites
GitHub Personal Access Token (PAT) with at least
reposcope to read private repository READMEs.Node.js 18+ (for
server.js) and npm.Python 3.9+ with
pip(forserver.py).Outbound HTTPS access to
api.github.com.
Setup
Node.js dependencies
Python dependencies
You can run either server independently; installing both stacks is optional.
Running the servers
Node.js server
Environment:
PORT(optional): HTTP port (default5000).
Python server
Environment:
PORT(optional): HTTP port (default5000).Bind address defaults to
0.0.0.0.
API
POST /mcp (Node.js)
Fetches a README and stores it as Markdown.
Request body
Behavior
Calls
https://api.github.com/repos/<repo>/readmewith the provided token.Decodes the base64 README content.
Writes
<owner>_<repo>.mdinsideblog_path(folder created if missing).Responds with
{ "success": true, "file": "<path>" }on success or an error payload on failure.
POST /mcp (Python)
Supports two modes:
action: "import_github_readme"— mirrors the Node.js behavior.Without
action— simple echo helper to test connectivity.
Request body (import)
Request body (echo)
Responses
Import:
{ "success": true, "file": "<path>" }or{ "error": "<message>" }.Echo:
{ "response": "Du hast gefragt: <input>. MCP antwortet: Hallo Welt!" }.
Examples
Create a blog-ready README (Node.js server)
Response:
Import via Python server
Echo test (Python server)
Response:
Development notes
The output path defaults to
./blog_content; override withblog_pathin the payload.Filenames replace
/in the repo name with_(e.g.,owner_repo.md).Node.js implementation sets the GitHub
User-Agentheader toMCP-Server-Node; Python usesMCP-Server.Extend either server to render richer blog posts by transforming the README content before saving.
Troubleshooting
401/403 errors from GitHub: confirm the PAT is valid and includes
reposcope for private repos.File permission issues: ensure the process can create and write to
blog_path.Port conflicts: set
PORTto a free port or stop other services using the default port.
License
See LICENSE.