Skip to main content

media-cloud-mcp

An MCP server for Media Cloud, the open archive of online news used for media research. It lets an AI assistant measure how much attention news media pay to a topic, compare sources and countries, examine the language of coverage, and find story URLs.

This is an independent project, not an official Media Cloud product. It is built on the official mediacloud Python client.

Setup

You need uv and a Media Cloud API key. You don't need to install Python or this package yourself: uvx downloads whatever is missing the first time the server starts.

1. Install uv

On macOS or Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

On Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Then open a new terminal, so that it can find the uvx command.

2. Get a Media Cloud API key

Sign in to Media Cloud, click the person icon at the top right, choose Profile, and copy your API key.

3. Add the server to your MCP client

For Claude Code, run:

claude mcp add media-cloud --env MC_API_KEY=your-api-key -- uvx media-cloud-mcp

For Claude Desktop and other clients that use a JSON configuration, add this to the configuration file. In Claude Desktop, that's claude_desktop_config.json, which you can open from Settings > Developer > Edit Config.

{
  "mcpServers": {
    "media-cloud": {
      "command": "uvx",
      "args": ["media-cloud-mcp"],
      "env": { "MC_API_KEY": "your-api-key" }
    }
  }
}

Restart the client after changing its configuration. You don't need to start the server yourself, because the client does that. If you run uvx media-cloud-mcp in a terminal, it waits silently for a client to connect, so it can look frozen. Press Ctrl+C to stop it.

4. Check that it works

Ask your assistant to run the check_connection tool.

Troubleshooting

  • The client can't find uvx: desktop apps may not use the same PATH as your terminal. Run which uvx (on Windows, where uvx) and use the full path it prints as the command.
  • The server times out the first time it starts: the first start downloads Python and the dependencies, which can take a while on a slow connection. Restart the client to retry. Downloads are cached, so later starts are faster.
  • MC_API_KEY is not set or HTTP 401: check that the key is in your client's configuration and was copied correctly, then restart the client.

Using pip instead

With Python 3.11 or newer, you can run pip install media-cloud-mcp and use media-cloud-mcp as the command, with no arguments.

Tools

All tools are read-only.

Tool What it does
check_connection Verifies the API key and shows API parameters such as rate limits
count_stories Matching stories, total stories in scope, and their ratio
count_stories_over_time Daily counts and ratios
count_stories_by_source_over_time Counts and ratios per source, per day or week
list_stories Story metadata and URLs, with pagination
sample_stories A random sample of matching stories
get_story Metadata for one story
top_words Most used terms in a sample of matching stories
top_sources Sources publishing the most matching stories
top_languages Most common languages among matching stories
search_collections Find collections, often by country or state
get_collection Details of one collection
search_sources Find sources by name or domain, or list a collection's sources
get_source Details of one source
list_feeds RSS feeds Media Cloud collects from

The mediacloud://query-guide resource documents the query syntax. The server also sends it to the assistant as part of its instructions.

Example prompts

  • "How much did US national media cover climate change in November 2023 compared with Indian national media?"
  • "Which Nigerian news sources wrote the most about fuel subsidies last year?"
  • "Chart the weekly share of stories about 'artificial intelligence' in the Washington Post in 2024."
  • "What words most often appear in coverage of the housing crisis in Boston Globe stories?"

Limits

  • Story text: Media Cloud returns metadata and URLs. Copyright restrictions keep full text limited to accounts with elevated access.
  • Rate limit and quota: requests are rate limited per account, and the client library waits when it reaches the limit, so a burst of calls can be slow. Your account also has a weekly quota. Contact Media Cloud if you need more.

Development

uv sync
uv run pytest
uv run ruff check .

Tests replace only the HTTP layer and don't need an API key. To try the server interactively:

MC_API_KEY=your-api-key uv run media-cloud-mcp

License

MIT

Metadata

Release files for media-cloud-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for media-cloud-mcp 0.1.1
File Size Uploaded Provenance Actions
media_cloud_mcp-0.1.1.tar.gz 12.9 kB Without provenance Details for media_cloud_mcp-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for media-cloud-mcp 0.1.1
File Interpreter ABI Platform Actions
media_cloud_mcp-0.1.1-py3-none-any.whl Python 3 none any Details for media_cloud_mcp-0.1.1-py3-none-any.whl

Total release size: 24.9 kB

Release files / media_cloud_mcp-0.1.1.tar.gz

Download URL media_cloud_mcp-0.1.1.tar.gz
Size 12.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1600968728d614c74a9c0023763c2ef9f5332c93b116ed4d734f9444e9c0134b
BLAKE2b-256 checksum
How to use checksums
20503137ceabc3dd0fa5b0aa0fcb50a33e0a27f3415da21f9106acf88081ddad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.1

Release files / media_cloud_mcp-0.1.1-py3-none-any.whl

Download URL media_cloud_mcp-0.1.1-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c39c4c3c322534e2e8334583db0fa8aab09cdcb646ec37cff03f1fed9bd9731
BLAKE2b-256 checksum
How to use checksums
570dea42df08930cfc8cbdb70944bde4079a58c5b02e3bb34cf75337687d452d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.15.1

Security for media-cloud-mcp 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page