@cyanheads/guardian-mcp-server
Provides tools for searching, browsing, and retrieving full article text from The Guardian's journalism archive (1999–present), including full-text search with filters, single article retrieval, and content browsing by section or tag.
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., "@@cyanheads/guardian-mcp-serversearch for articles about climate change from 2023"
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.
Overview
The Guardian's journalism archive (1999–present), via the Guardian Open Platform API. Search full text, browse by section or tag, and fetch individual articles from any MCP client. Runs as a stdio process or a local Streamable HTTP server.
Tools
Tool | Description |
| Full-text search across The Guardian's archive with optional section, tag, contributor, and date filters |
| Fetch a single Guardian article by ID with body text and metadata |
| Browse by section or tag, or discover available sections and tags, across four modes |
Related MCP server: Guardian News MCP Server
Capability reference
guardian_search tool
Boolean
querysyntax (AND/OR/NOT, quoted phrases), optionalsection/tag/contributorandfrom_date/to_date(YYYY-MM-DD) filters;order_by:relevance(default),newest, oroldest;page+page_size(1–50, default 10)Articles carry metadata, HTML-stripped body text and a
truncatedflag; results includetotal,page,pages,page_size, andorder_byTyped error reasons:
unauthorized,no_results,invalid_date,api_error(retryable)
guardian_get_article tool
Required
article_id: the path-slugidreturned byguardian_searchorguardian_browseReturns HTML-stripped body text, metadata, contributors, pillar/section classification, and
truncatedTyped error reasons:
unauthorized,not_found,api_error(retryable)
guardian_browse tool
Four
modevalues:section_latest(requiressection_id),tag_latest(requirestag_id),list_sections,list_tags;page+page_size(1–50, default 10) for articles and tagslist_tagsfilters by optionalqueryandtag_type(keyword,contributor,blog,series,tone,type,publication,newspaper-book,newspaper-book-section); output carriesmode,total, and the matchingresults/sections/tagsarrayTyped error reasons:
unauthorized,missing_section_id,missing_tag_id,section_not_found,tag_not_found,api_error(retryable)
Features
Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
Guardian-specific:
Wraps the Guardian Open Platform API with a free non-commercial developer key
Full body text extraction — HTML stripped, not just headlines or abstracts
Contributor ID discovery via
guardian_browsemodelist_tagswithtag_type=contributorSection and tag taxonomy browsing (
list_sections,list_tags) for filter discovery before searchingFree tier: 5,000 requests/day, 12 calls/second — the server applies no additional throttling
Agent-friendly output:
Article bodies are capped at 2,000 words across all three tools;
truncated: truesignals a cut. Read the article'sweb_urlfor the full text.Typed error reasons across all three tools, each paired with a recovery hint
total/page/pageson every paginated response so callers can track result scopeDeclared recovery hints on error responses, with a request ID for matching server logs
Getting started
Add the following to your MCP client configuration file. Register for a free Guardian Open Platform API key at open-platform.theguardian.com/access.
{
"mcpServers": {
"guardian-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/guardian-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"GUARDIAN_API_KEY": "your-api-key"
}
}
}
}Or with npx (no Bun required):
{
"mcpServers": {
"guardian-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/guardian-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"GUARDIAN_API_KEY": "your-api-key"
}
}
}
}Or with Docker:
{
"mcpServers": {
"guardian-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MCP_TRANSPORT_TYPE=stdio",
"-e", "GUARDIAN_API_KEY=your-api-key",
"ghcr.io/cyanheads/guardian-mcp-server:latest"
]
}
}
}For Streamable HTTP, set the transport and start the server:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 GUARDIAN_API_KEY=your-api-key bun run start:http
# Server listens at http://localhost:3010/mcpPrerequisites
Bun v1.4.0 or higher (or Node.js v24+).
A free Guardian Open Platform API key — register at open-platform.theguardian.com/access. The non-commercial developer tier is free and instant.
Installation
Clone the repository:
git clone https://github.com/cyanheads/guardian-mcp-server.gitNavigate into the directory:
cd guardian-mcp-serverInstall dependencies:
bun installConfigure environment:
cp .env.example .env
# Edit .env and set GUARDIAN_API_KEYConfiguration
Variable | Description | Default |
| Required. Free developer key from open-platform.theguardian.com/access. | — |
| Transport: |
|
| Port for HTTP server. |
|
| HTTP session mode: |
|
| Auth mode: |
|
| Log level (RFC 5424). |
|
| Directory for log files (Node.js only). |
|
| Log failed tool arguments and results, redacted by key name and capped by |
|
| Storage backend. |
|
| Enable OpenTelemetry instrumentation (spans, metrics, completion logs). |
|
| Base OTLP URL; traces use | — |
| Opt-in OTLP log endpoint, used as-is. | — |
See .env.example for the full list of optional overrides.
Running the server
Local development
Build and run:
# One-time build bun run rebuild # Run the built server bun run start:stdio # or bun run start:httpRun checks and tests:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t guardian-mcp-server .
docker run --rm -e GUARDIAN_API_KEY=your-api-key -p 3010:3010 guardian-mcp-serverThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/guardian-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.
Project structure
Directory | Purpose |
|
|
| Server-specific environment variable parsing ( |
| Tool definitions ( |
| Guardian Open Platform API client, normalization, and type definitions. |
| Unit and integration tests. |
| Design document and directory tree. |
Development guide
See CLAUDE.md / AGENTS.md for development guidelines and architectural rules. The short version:
Handlers throw, framework catches — no
try/catchin tool logicUse
ctx.logfor request-scoped logging,ctx.statefor tenant-scoped storageRegister new tools in the
createApp()toolsarray insrc/index.tsWrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields
Contributing
Issues are welcome. Run checks and tests before submitting:
bun run devcheck
bun run testLicense
Apache-2.0 — see LICENSE for details.
Powered by The Guardian.
This server cannot be deployed
Maintenance
Related MCP Connectors
Web search, scraping, RAG answers with citations, and translation as MCP tools.
Public web tools for agents: product extraction, claim checks, webpage QA and ranked audits.
Google search, news, maps, scholar and public webpages for AI agents, with Markdown results.
Search the agentic web. 4,100+ sites, 11 tools incl. check_url + verify_mcp for probe-before-use.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides access to the complete archives of The Guardian newspaper since 1999, including the full text of 1.9 million articles.1657 npm20MIT
- FlicenseNot gradedqualityDmaintenanceEnables users to search for the latest news articles from The Guardian using keywords and check service status. Provides access to Guardian's news content through their API with configurable result limits.1-
- AlicenseNot gradedqualityBmaintenanceEnables searching and retrieving articles, sections, and tags from The Guardian via the Guardian Open Platform API.13 npmMIT
- AlicenseNot gradedqualityBmaintenanceFull-coverage MCP server for Internet Archive, enabling search, metadata lookup, collection browsing, and Wayback Machine snapshot retrieval via 13 tools.1BSD Zero Clause