mcpField
C
China News Feed

China News Feed

Remote
github.comSocial Media0Updated 1w ago

About China News Feed

China News Feed is a TypeScript MCP server built around an Apify actor for users tracking China news, platform hot lists, and deletion-watch flags. It supports English and Chinese headline projection and local filtering; calls use the user's Apify account token.

Key features

  1. 01Retrieve English and Chinese news
  2. 02Query hot lists across platforms
  3. 03View deletion-watch flags
  4. 04Filter by headline and source
  5. 05Return compact JSON results

Use cases

  1. 01Collect news items in English or Chinese
  2. 02Compare hot lists across Weibo, Baidu, and other platforms
  3. 03Inspect items carrying censorship flags

MCP support

The MCP server exposes news, hot-list, and deletion tools over stdio. It calls the China News Feed Apify actor and requires the user's APIFY_TOKEN.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://china-news-feed-mcp.joyd-ai-2026.workers.dev/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

All endpoints
Streamable HTTPhttps://china-news-feed-mcp.joyd-ai-2026.workers.dev/mcpAuth required

Tools

Details

From the project README

Moved → https://github.com/Ownly-Network/china-news-feed-mcp (MCP Registry: io.github.Ownly-Network/china-news-feed)

china-news-feed-mcp

A TypeScript MCP server for China news, platform hot lists, and deletion-watch flags, wrapping the China News Feed Apify actor (CeTIPfpcWcDrEhrPV). Uses Node.js 20 native fetch and MCP over stdio.

Actor usage costs $8 per 1,000 dataset rows, billed to your own Apify account. Supply your API token through APIFY_TOKEN. Each call starts an actor run with emitOnlyNew: false, snapshotCount: 1, and maxItems as the billed-row cap. A default 50-row call costs up to $0.40 at this row price.

ToolInputsResult
get_china_newslanguage: zh, en, or both (default); maxItems: 1–500 (default 50); optional query, sources, sourceTypesNews rows only; sources maps to actor newsSources, e.g. xinhua, bbc, mfa.
get_hot_listsplatforms (default all); maxRank: 5–50 (default 50); maxItems: 1–500 (default 50); language (default both)Hot-list rows only; maxRank maps to actor maxHotRank.
get_deletionsplatforms (default all); maxItems: 1–500 (default 50); optional highRank: 3–50Rows with non-null censorship flags, including status, label, rank, peak rank, and first/last seen when present. Both headlines are included.

Supported platforms: Weibo 微博 (weibo), Baidu 百度 (baidu), Zhihu 知乎 (zhihu), Toutiao 今日头条 (toutiao), Douyin 抖音 (douyin), Bilibili 哔哩哔哩 (bilibili), Kuaishou 快手 (kuaishou).

News sourceTypes accepts the actor's exact values: State media, Party-gov, Commercial platform, Overseas independent, Dissident, Censorship tracker. Omitting sources or source types uses actor defaults; an empty source-type array selects no news types. An empty platform array selects no hot lists.

language controls output projection: en includes headline_en, zh includes headline_original, and both includes both. Missing translations are omitted. The actor has no language or query input. query filters both headlines locally, case-insensitively, after fetching. Deletion filtering also happens locally, so the returned count can be smaller than the fetched/billed row count. No automatic retries are made.

Claude Desktop and Cursor

Install Node.js 20 or newer and obtain a token from your Apify account. For Claude Desktop, add the following to claude_desktop_config.json (open it through Settings → Developer → Edit Config). For Cursor, add it to .cursor/mcp.json in your project or ~/.cursor/mcp.json for global use. Merge it with existing mcpServers entries, then restart the client.

{
  "mcpServers": {
    "china-news-feed": {
      "command": "npx",
      "args": ["-y", "github:joydai2026-del/china-news-feed-mcp"],
      "env": {
        "APIFY_TOKEN": "<your-apify-token>"
      }
    }
  }
}

GitHub installation builds dist/ using the prepare script. Git must also be available for installation from GitHub. Keep your real token in private client configuration or your process environment; never commit it.

For a local build:

git clone https://github.com/joydai2026-del/china-news-feed-mcp.git
cd china-news-feed-mcp
npm install
npm run build

Use this server entry in either client's mcpServers object, replacing the path with your absolute checkout path:

{
  "china-news-feed": {
    "command": "node",
    "args": ["/absolute/path/china-news-feed-mcp/dist/index.js"],
    "env": { "APIFY_TOKEN": "<your-apify-token>" }
  }
}

For manual startup with APIFY_TOKEN already exported, run npm start. The server reserves stdout for MCP messages. Missing tokens produce a clear tool error; tokens and raw upstream errors are never logged. The fetch timeout is 300 seconds; configure a longer tool timeout in your client if supported. A timed-out request may leave an actor run active in Apify.

Docker

docker build -t china-news-feed-mcp .
# APIFY_TOKEN must already be exported in your shell.
docker run --rm -i -e APIFY_TOKEN china-news-feed-mcp

To use Docker from Claude Desktop or Cursor, set command to docker, args to ["run", "--rm", "-i", "-e", "APIFY_TOKEN", "china-news-feed-mcp"], and provide APIFY_TOKEN in the server's env. Use -i to keep stdin open for stdio transport.

Smithery

The included smithery.yaml declares a stdio start command and requires the apifyToken configuration value. Smithery maps that value to APIFY_TOKEN and starts node dist/index.js; the included multi-stage Dockerfile supplies the build and runtime. Supply your own token when configuring the server.

The official Apify MCP also works generically with this actor. This wrapper adds dedicated tools, local headline filtering, language projection, and compact output.

Sample output

Shortened from the two fixture rows in sample-rows.json, illustrating a get_deletions response. The tool returns compact JSON text; null and empty fields are dropped. Flags such as likely_censored are actor assessments and retain their status and evidence.

{
  "count": 2,
  "rows": [
    {
      "kind": "hot",
      "source_id": "toutiao",
      "headline_en": "The 20th Asian Games Come to a Close",
      "headline_original": "第20届亚运会闭幕",
      "rank": 1,
      "peak_rank": 1,
      "first_seen": "2026-10-04T18:07:26Z",
      "last_seen": "2026-10-04T23:28:50Z",
      "censorship": { "status": "likely_censored", "label": "Likely censored" }
    },
    {
      "kind": "hot",
      "source_id": "weibo",
      "headline_original": "蔡康永",
      "rank": 14,
      "peak_rank": 11,
      "censorship": { "status": "likely_censored", "label": "Likely censored" }
    }
  ],
  "note": "billed rows: 2 at $8/1000"
}

Pay-per-call HTTP API (x402)

Development

npm install
npm run build
npm test

Tests use mocked fetch responses and the provided fixtures, with no paid actor runs. Input reference: actor-input-schema.json. Licensed under MIT, copyright 2026 Ownly.

Related links

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.