关于 CatchAll
CatchAll 是面向 NewsCatcher CatchAll Web Search API 的 MCP 服务,供需要发现相关网页并管理搜索任务的客户端使用。它还提供监控器、Webhook、项目、数据集和实体管理功能。
主要功能
- 01提交并验证网页搜索
- 02跟踪任务并获取结果
- 03创建和管理搜索监控器
- 04管理 Webhook 和项目
- 05整理数据集与实体
适用场景
- 01查找与事件相关的网页
- 02通过监控器运行定期搜索
- 03以 CSV 获取搜索结果
- 04在项目和数据集中整理搜索
MCP 相关
它将 CatchAll 搜索与管理操作作为工具提供给 MCP 客户端。可使用托管端点,也可在本地运行或自行托管服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://catchall-mcp.newscatcherapi.com/mcpclaude mcp add --transport http com-newscatcherapi-catchall https://catchall-mcp.newscatcherapi.com/mcp{"mcpServers":{"com-newscatcherapi-catchall":{"type":"http","url":"https://catchall-mcp.newscatcherapi.com/mcp"}}}在 Cursor 中打开{"servers":{"com-newscatcherapi-catchall":{"type":"http","url":"https://catchall-mcp.newscatcherapi.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-newscatcherapi-catchall":{"type":"http","url":"https://catchall-mcp.newscatcherapi.com/mcp"}}}{"mcpServers":{"com-newscatcherapi-catchall":{"serverUrl":"https://catchall-mcp.newscatcherapi.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://catchall-mcp.newscatcherapi.com/mcp需要授权工具
61| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| mode | string | 否 | 可选的任务处理模式:`"lite"`(更快、成本更低、细节更少)或 `"base"`(默认, 完整提取)。省略时,API 默认使用 `"base"`。 |
| limit | any | 否 | 可选的处理上限(最低为 10);会影响费用。省略可检索套餐上限范围内的所有内容。 |
| query | string | 是 | 纯文本搜索意图(必填)。 |
| schema | string | 否 | 可选的高级自定义 JSON schema 字符串,用于覆盖默认提取 schema。使用 `initialize_query` 查找合适的 schema。 |
| api_key | string | 否 | CatchAll API 密钥。若通过 x-api-key 标头或 CATCHALL_API_KEY 环境变量提供,则可省略。 |
| context | string | 否 | 关于优先处理内容的可选指导(例如要关注的实体、 事件类型,以及希望在 enrichments 中捕获的特定数据点)。 如果将关联公司数据集,请注意,实体相关性 验证器(例如 `company_is_primary_subject`)将自动生成—— 不要在此处要求生成这些验证器。不要提及“将附加公司列表”之类的内容。 |
| end_date | string | 否 | 可选的 ISO 8601 UTC 搜索窗口结束时间。 |
| project_id | string | 否 | 可选的关联此任务的项目 ID。 |
| start_date | string | 否 | 可选的 ISO 8601 UTC 搜索窗口开始时间。 |
| validators | any | 否 | 可选的自定义布尔验证器(`name`、`description`、`type`),可用数组或 JSON 字符串数组表示。 设置 `connected_dataset_ids` 时,不要包含 `company_is_primary_subject` 等 实体相关性验证器——API 会自动生成这些验证器。只添加描述事件或主题的验证器(例如 `is_acquisition_event`)。 |
| enrichments | any | 否 | 可选的自定义 enrichments(`name`、`description`、`type`),可用数组或 JSON 字符串数组表示。 |
| webhook_ids | any | 否 | 任务完成时要通知的可选 webhook ID 列表(每个任务最多 5 个)。 使用 `list_webhooks` / `create_webhook` 获取 ID。 |
| ed_score_min | any | 否 | 可选的最低实体-领域相关性分数(1-10)。仅在 设置 `connected_dataset_ids` 时适用。 |
| ed_association_type | string | 否 | 对每个事件中观察列表实体必须出现的关联强度进行可选筛选。仅在设置了 `connected_dataset_ids` 时相关。 - `"event_associated"`:仅保留该实体是**直接参与者**的事件(设置 connected_dataset_ids 时的默认值)。 - `"mention"`:保留该实体仅被**提及**的所有事件。 |
| connected_dataset_ids | any | 否 | 数据集 ID 的可选列表,其实体会缩小检索范围。设置后:(1) 自动应用实体筛选——请勿在 `query` 中提及公司列表或观察列表;(2) 自动生成实体相关性验证器,例如 `company_is_primary_subject`——请勿将其添加到 `validators`。如果未提供,`ed_score_min` 默认为 2。 |
| fetch_all_watchlist_news | boolean | 否 | 为关联的观察列表实体检索**所有**新闻,不应用 `query` 中的主题筛选。需要设置 `connected_dataset_ids`。默认值:`False`。 |
详细介绍
Newscatcher CatchAll MCP 服务
适用于 NewsCatcher CatchAll Web Search API 的 MCP 服务。
快速开始 — 使用我们的托管服务
使用 MCP 无需克隆或运行此仓库 — NewsCatcher 提供托管实例:
https://catchall-mcp.newscatcherapi.com/mcp?apiKey=YOUR_CATCHALL_API_KEY
在 platform.newscatcherapi.com 获取 CatchAll API 密钥,然后连接:
{
"mcpServers": {
"catchall": {
"type": "http",
"url": "https://catchall-mcp.newscatcherapi.com/mcp?apiKey=YOUR_CATCHALL_API_KEY"
}
}
}
也可以通过 Claude Code CLI 使用:
claude mcp add --transport http catchall "https://catchall-mcp.newscatcherapi.com/mcp?apiKey=YOUR_CATCHALL_API_KEY"
完整集成文档:https://www.newscatcherapi.com/docs/web-search-api/integrations/mcp
想自行运行服务(本地或可自托管)?请参阅下文的运行。
工具与端点映射
任务
| MCP 工具 | 方法 | 端点 |
|---|---|---|
initialize_query | POST | /catchAll/initialize |
submit_query | POST | /catchAll/submit |
validate_query | POST | /catchAll/validate |
continue_job | POST | /catchAll/continue |
list_user_jobs | GET | /catchAll/jobs/user |
get_job_status | GET | /catchAll/status/{job_id} |
pull_results | GET | /catchAll/pull/{job_id} |
pull_job_csv | GET | /catchAll/pull/{job_id}/csv |
delete_job | DELETE | /catchAll/jobs/{job_id} |
任务列表筛选条件:
list_user_jobs除了支持page/page_size筛选条件外,还支持search、ownership、project_id和mode(base或lite)筛选条件。
监控器
| MCP 工具 | 方法 | 端点 |
|---|---|---|
create_monitor | POST | /catchAll/monitors/create |
update_monitor | PATCH | /catchAll/monitors/{monitor_id} |
delete_monitor | DELETE | /catchAll/monitors/{monitor_id} |
list_monitors | GET | /catchAll/monitors/ |
list_monitor_jobs | GET | /catchAll/monitors/{monitor_id}/jobs |
get_monitor_status | GET | /catchAll/monitors/{monitor_id}/status |
pull_monitor_results | GET | /catchAll/monitors/pull/{monitor_id} |
pull_monitor_csv | GET | /catchAll/monitors/pull/{monitor_id}/csv |
enable_monitor | POST | /catchAll/monitors/{monitor_id}/enable |
disable_monitor | POST | /catchAll/monitors/{monitor_id}/disable |
Webhook
| MCP 工具 | 方法 | 端点 |
|---|---|---|
list_webhooks | GET | /catchAll/webhooks |
create_webhook | POST | /catchAll/webhooks |
get_webhook | GET | /catchAll/webhooks/{webhook_id} |
update_webhook | PATCH | /catchAll/webhooks/{webhook_id} |
delete_webhook | DELETE | /catchAll/webhooks/{webhook_id} |
test_webhook | POST | /catchAll/webhooks/{webhook_id}/test |
assign_webhook_resource | POST | /catchAll/webhooks/{webhook_id}/resources |
list_webhook_resources | GET | /catchAll/webhooks/{webhook_id}/resources |
remove_webhook_resource | DELETE | /catchAll/webhooks/{webhook_id}/resources/{resource_type}/{resource_id} |
list_resource_webhooks | GET | /catchAll/resources/{resource_type}/{resource_id}/webhooks |
get_webhook_history | GET | /catchAll/webhook-history |
trigger_webhook | POST | /catchAll/webhook/trigger/{resource_type}/{resource_id} |
Webhook 说明:
create_webhook接受可选的project_id,以便在创建时将 Webhook 关联到某个项目。list_webhooks也接受可选的project_id,用于筛选属于特定项目的 Webhook。get_webhook_history支持两种查询模式:传入resource_type+resource_id可查询某个任务/监控器/监控组的投递记录;传入webhook_id则可查询通过某个 Webhook 投递的所有记录(每次调用只能使用一种模式)。手动测试投递(test_webhook)仅会出现在 Webhook 模式中,且记录为resource_type: "test"。
项目
| MCP 工具 | 方法 | 端点 |
|---|---|---|
create_project | POST | /catchAll/projects/ |
list_projects | GET | /catchAll/projects/ |
get_project | GET | /catchAll/projects/{project_id} |
update_project | PATCH | /catchAll/projects/{project_id} |
delete_project | DELETE | /catchAll/projects/{project_id} |
get_project_overview | GET | /catchAll/projects/{project_id}/overview |
add_project_resources | POST | /catchAll/projects/{project_id}/resources |
list_project_resources | GET | /catchAll/projects/{project_id}/resources |
remove_project_resource | DELETE | /catchAll/projects/{project_id}/resources/{resource_type}/{resource_id} |
项目资源:
resource_type可以是job、monitor、dataset、monitor_group或webhook。一个 webhook 可以同时属于多个项目。 使用delete_resources=true调用delete_project会删除其中包含的任务、监控项、 数据集和监控组,但只会从项目中移除 webhook,不会删除 webhook;响应中的deleted_resources会通过webhook_unlinked计数报告被解除关联的 webhook 数量。
数据集
| MCP 工具 | 方法 | 端点 |
|---|---|---|
create_dataset | POST | /catchAll/datasets/ |
list_datasets | GET | /catchAll/datasets/ |
get_dataset | GET | /catchAll/datasets/{dataset_id} |
update_dataset | PATCH | /catchAll/datasets/{dataset_id} |
delete_dataset | DELETE | /catchAll/datasets/{dataset_id} |
add_dataset_entities | POST | /catchAll/datasets/{dataset_id}/entities |
remove_dataset_entities | DELETE | /catchAll/datasets/{dataset_id}/entities |
list_dataset_entities | POST | /catchAll/datasets/{dataset_id}/entities/list |
get_dataset_status | GET | /catchAll/datasets/{dataset_id}/status |
create_dataset_from_csv | POST | /catchAll/datasets/upload |
append_csv_to_dataset | POST | /catchAll/datasets/{dataset_id}/upload |
CSV 上传(v1.6.1):
create_dataset_from_csv和append_csv_to_dataset的file参数接收 CSV 内容——原始 CSV 文本或标准 base64。它们不会从服务端文件系统 读取路径,因此在远程/托管 MCP 中依然安全。内联 CSV 内容的大小上限为 10 MB (base64 解码后)。create_dataset_from_csv还接受新增的可选字段project_id。
实体
| MCP 工具 | 方法 | 端点 |
|---|---|---|
create_entity | POST | /catchAll/entities/ |
list_entities | GET | /catchAll/entities/ |
create_entities_batch | POST | /catchAll/entities/batch |
get_entity | GET | /catchAll/entities/{entity_id} |
update_entity | PATCH | /catchAll/entities/{entity_id} |
delete_entity | DELETE | /catchAll/entities/{entity_id} |
external_entity_id(v1.6.3):create_entity和update_entity接受一个可选的external_entity_id字符串——由客户提供、用于将实体关联到外部系统中记录的标识符。project_id(v1.8.0):list_entities接受可选的project_id,用于筛选属于特定 项目的实体。
来源组
| MCP 工具 | 方法 | 端点 |
|---|---|---|
list_source_groups | GET | /catchAll/source-groups |
**来源组(v1.8.0):**可重复使用的命名域名允许列表(公共组,以及组织可访问的任何 组织可见性组)。
list_source_groups会返回每个组的slug、name和description。 直接 API 的POST /catchAll/submit现在接受由 slug 组成的source_groups字段,以将抓取范围 限定在域名允许列表内;submit_query尚未提供此参数——在后续版本将其加入之前,请使用直接 API。
用户与元数据
| MCP 工具 | 方法 | 端点 |
|---|---|---|
get_user_limits | POST | /catchAll/user/limits |
check_health | GET | /health |
get_version | GET | /version |
身份验证
API 密钥优先级(从高到低):
api_key工具参数x-api-key请求标头Authorization: Bearer <key>请求标头- URL 查询参数
?apiKey=... CATCHALL_API_KEY环境变量
check_health 和 get_version 无需 API 密钥身份验证。
托管部署(FastMCP Gateway)
通过 fastmcp.app 部署时,服务器前面会有一个无状态网关。网关会将 HTTP 标头转发到后端,但不会转发 URL 查询参数。请改用 x-api-key
标头或 CATCHALL_API_KEY 环境变量,而不要使用 ?apiKey=。
Claude Code / Cursor:
{
"mcpServers": {
"catchall": {
"type": "http",
"url": "https://YOUR-DEPLOYMENT.fastmcp.app/mcp",
"headers": { "x-api-key": "YOUR_API_KEY" }
}
}
}
也可以通过 CLI 使用:
claude mcp add --transport http catchall "https://YOUR-DEPLOYMENT.fastmcp.app/mcp" \
--header "x-api-key: YOUR_API_KEY"
直接访问服务器(无网关):URL 中仍可使用 ?apiKey=YOUR_KEY。
核心工作流(作业)
- 可选:调用
initialize_query,预览验证器、增强项和日期范围。 initialize_query仅用于预览(不会创建作业),且建议结果具有非确定性。- 使用
submit_query提交(必须提供query)。你可以只发送query;未提供的可选字段会自动选择或生成。 - 可选字段彼此独立:可提供任意子集(例如,仅自定义
validators),未提供的字段仍会自动生成。 start_date/end_date用于筛选网页发现日期,而非提取内容中的事件日期。- 如需确保事件时间准确,请使用专注于事件的验证器和增强项,并核实拉取结果中的
event_date。 - 轮询
get_job_status:首次在约 1–2 分钟后检查,之后每隔 30–60 秒检查一次;状态变为completed或failed时停止。 - 使用
pull_results拉取结果;在enriching阶段会显示部分数据。 - 当
page < total_pages时继续翻页,以获取所有可用记录。 - 仅在需要处理更多记录时使用
continue_job(会影响成本)。它仅适用于最初提交时带有limit的作业。 continue_job.new_limit为可选参数;若未提供,API 会默认使用你的套餐上限。page/page_size/total_pages表示当前已可用的记录;使用progress_validated < candidate_records判断是否可能还会有更多记录出现。
limit 与 page_size
limit(submit_query、continue_job)控制要处理的记录数量,因此会影响成本。若提供,必须 >= 10。省略时会检索套餐上限内的所有记录。page_size(pull_results、list_user_jobs)仅控制分页,不影响处理成本。pull_results.page_size的默认值为100。page_size范围为1..1000。pull_results响应包含error(失败的作业)和limit(应用的作业上限)。
API 强制执行的监控约束
create_monitor.backfill=true:参考作业的end_date必须在最近 7 天内。create_monitor.backfill=false:不受参考作业时限约束。- 监控的最短计划频率取决于套餐。
create_monitor支持可选的limit(最小值为10)、backfill(默认值为true)、timezone、webhook_ids和project_id。- v1.5.3 中 Webhook 已集中管理:使用
create_webhook注册,然后通过create_monitor.webhook_ids/update_monitor.webhook_ids按 ID 附加(不支持内联 Webhook 配置)。 - 仅
base作业支持监控(不支持lite)。 enable_monitor支持可选的backfill。update_monitor可更新webhook_ids、运行limit、schedule和/或timezone(传入webhook_ids=[]可清除关联;除非同时设置schedule,否则会忽略timezone)。list_monitors支持通过page和page_size分页,并支持search、ownership和project_id筛选;它会返回total、page、page_size、total_pages、monitors。
补充输出说明
- 始终会提供
enrichment.enrichment_confidence。 - 公司补充信息是结构化对象,包含:
source_textconfidencemetadata.namemetadata.domain_urlmetadata.domain_url_confidence
错误处理
工具会返回:
- 成功时返回格式化的 JSON 字符串。
- (v1.8.0) 对于任何上游非 2xx 响应(
api_key错误、project_id无效或不属于当前项目、未找到 ID、验证失败等)或未处理的异常,返回 MCP 工具错误(isError=True)。错误消息包含上游状态码和消息,例如API Error (401): Api key not found。在 v1.8.0 之前,工具会忽略这些失败,并返回普通的"Error: ..."字符串作为成功的工具结果;只检查isError的客户端会误以为操作成功。此问题现已修复:每个工具都会抛出ToolError,而不是返回错误字符串,因此失败总会作为真正的工具错误报告。
运行
安装依赖:
pip install -r requirements.txt
通过 stdio 运行:
python server.py
通过 HTTP 运行(如果有 fastmcp CLI):
fastmcp run server.py:mcp --transport streamable-http --host 0.0.0.0 --port 8000
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。