citewire

citewire

An attribution-first MCP server that provides tools to search and cite news and research metadata from free APIs and news platforms, without storing or republishing content.

Category
Visit Server

README

citewire

An attribution-first MCP server for free news sources and free article APIs.

Why it exists

Agents need to read news and research metadata, but the publishers who create that work keep the rights and the traffic. citewire reads the metadata and links straight back to the original article, so an agent can list, search, and cite a story without the content ever being copied, stored, or republished. The name is the whole idea: cite plus wire.

What it does

citewire has two jobs.

  1. Serve a news platform. Any site that exposes a compatible read API (list, detail, topics) becomes a set of typed MCP tools (news.list, news.get, news.topics, news.about) by declaring one small JSON block. The tools are a mechanical projection of the HTTP surface, so they cannot drift from the API they wrap. See docs/platform-contract.md.
  2. Query free article APIs. Ten open news and research APIs are available as pass-through tools. Nothing is stored and nothing is republished; each tool returns metadata and links to the original. Every provider is disabled by default. Enabling one is your deliberate act, and reviewing that provider's terms for your use is your responsibility. See docs/providers.md.

Quick start

Run over stdio (the default transport, and how MCP clients launch the server):

npx citewire --config citewire.config.json

Wire it into Claude Desktop (claude_desktop_config.json) or Claude Code (.mcp.json):

{
  "mcpServers": {
    "citewire": {
      "command": "npx",
      "args": ["citewire", "--config", "citewire.config.json"]
    }
  }
}

Use an absolute path for --config if the client does not launch from your project directory.

Serve over Streamable HTTP instead of stdio (default port 8722, JSON-RPC over POST /):

npx citewire --config citewire.config.json --http 8722

Configuration

A deployment is described entirely by a small JSON file: an optional platform to wrap, and the providers you choose to enable. This example wraps the Karaya Group Industry News platform and enables one provider, OpenAlex:

{
  "platform": {
    "name": "Karaya Group Industry News",
    "siteUrl": "https://karaya.group",
    "apiBase": "https://karaya.group/api/v1/news"
  },
  "providers": {
    "openalex": { "enabled": true }
  }
}

Omit the platform block to run providers only. Omit providers, or leave a provider out of it, and that provider stays disabled. A bad config fails loudly at startup with an error that names the offending field.

Platform tools

These four tools exist only when a platform block is configured.

Tool Purpose
news.list List items newest first. Filters: topic, industry, q, days, cursor, page_size.
news.get One item by slug, with attribution and related coverage.
news.topics The active taxonomy topics (slug, label, description).
news.about Static facts about the server and platform, including the attribution policy.

Providers

Ten free APIs. None requires an API key. Every one ships disabled. Provider tools are namespaced under a short prefix; the authoritative list for a given deployment is whatever the running server advertises through tools/list. Full detail, endpoints, and free-access terms are in docs/providers.md.

Provider Tool Queries Key required Default
GDELT DOC 2.0 gdelt.search Worldwide news article metadata none disabled
GDELT Context 2.0 gdelt.context Snippet-level context around a search term none disabled
arXiv arxiv.search Preprint metadata across physics, CS, math, and more none disabled
OpenAlex openalex.search Scholarly works, authors, and venues none disabled
Crossref crossref.search DOI registration metadata none disabled
Semantic Scholar semanticscholar.search Papers and author graph none disabled
Europe PMC europepmc.search Life-sciences and biomedical literature none disabled
dblp dblp.search Computer-science bibliography none disabled
Hacker News hackernews.top, hackernews.item HN stories and items (Firebase API) none disabled
DEV devto.search Published DEV articles none disabled

Design

  • Zero runtime dependencies. ESM, Node >= 18. Nothing to audit but the source in this repo.
  • Hand-written JSON-RPC. The MCP core is a small dispatcher, not a wrapped SDK.
  • Stateless. No sessions and no stored state. Each request is handled on its own.
  • Transport-agnostic core. createCitewire(config) builds one server; stdio and Streamable HTTP both pump messages through it. The HTTP handler is plain Node and also mounts inside a serverless function.
  • Storage is out of scope. citewire never stores or republishes content. It reads metadata and links to the original. That boundary is the point of the project, not a limitation of it.

Deployments

Karaya Group's Industry News platform (karaya.group/industry-news) is the first production deployment. It serves citewire at https://karaya.group/mcp.

Contributing

See CONTRIBUTING.md. Tests run with npm test (node --test, no install required).

License

MIT. See LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured