richardwooding/feed-mcp
3.3
If you are the rightful owner of feed-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
MCP Server for RSS, Atom, and JSON Feeds
feed-mcp
MCP Server for RSS, Atom, and JSON Feeds
Features
- Serves RSS, Atom, and JSON feeds via the MCP protocol
- Supports Docker and Podman for easy deployment
- CLI installable via
go install
- Compatible with Claude Desktop as an MCP server
- Caching for efficient feed retrieval
- Supports multiple feeds simultaneously
- Extensible and configurable
Switching to official MCP Go SDK
- I am planning to switch tho the official MCP Go SDK when it is ready for production use.
Architecture
The core of feed-mcp
is a Go server that fetches, parses, and serves RSS/Atom/JSON feeds over the MCP protocol. The main architectural components are:
- Command-line Interface (CLI): Uses kong for parsing commands and flags. The
run
command is the entry point for starting the server. - Feed Fetching & Parsing: Feeds are fetched and parsed using gofeed. The server supports multiple feeds, which are periodically refreshed and cached.
- Caching Layer: Feed data is cached using gocache and ristretto for efficient retrieval and reduced network usage.
- MCP Protocol Server: Implements the MCP protocol using mcp-go, allowing integration with clients like Claude Desktop.
- Transport Options: Supports different transports (e.g., stdio, HTTP with SSE) for communication with MCP clients.
- Docker/Podman Support: The server can be run in containers for easy deployment and integration.
How it Works
- Startup: The CLI parses arguments and starts the server with the specified feeds and transport.
- Feed Management: The server fetches and parses the configured feeds, storing results in the cache.
- Serving Requests: When an MCP client connects, the server responds to requests for feed data using the cached content, updating as needed.
- Extensibility: The architecture allows for adding new transports, feed sources, or output formats with minimal changes.
For contributors:
- The main entry point is
main.go
, which wires up the CLI and server. - Feed logic is in the
model
andstore
packages. - MCP protocol handling is in the
mcpserver
package. - Tests are provided for core logic; see
*_test.go
files for examples.
Running via docker
docker run -i --rm ghcr.io/richardwooding/feed-mcp:latest run \
https://www.reddit.com/r/golang/.rss \
https://www.reddit.com/r/mcp/.rss
Running via podman
podman run -i --rm ghcr.io/richardwooding/feed-mcp:latest run \
https://www.reddit.com/r/golang/.rss \
https://www.reddit.com/r/mcp/.rss
Installing using Go install
You can install the CLI using:
go install github.com/richardwooding/feed-mcp@latest
Add to Claude Desktop
In your Claude Desktop configuration file, add the following configuration to the mcpServers
section:
Docker
{
"mcpServers": {
"feed": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/richardwooding/feed-mcp:latest",
"run",
"https://www.reddit.com/r/golang/.rss",
"https://www.reddit.com/r/mcp/.rss"
]
}
}
}
Podman
{
"mcpServers": {
"feed": {
"command": "podman",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/richardwooding/feed-mcp:latest",
"run",
"https://www.reddit.com/r/golang/.rss",
"https://www.reddit.com/r/mcp/.rss"
]
}
}
}
Dependencies
This project makes use of the following open source libraries:
- gofeed — RSS/Atom feed parser
- kong — Command-line parser
- gocache — Caching library
- ristretto — High performance cache
- mcp-go — MCP protocol implementation
License
This project is licensed under the .