Kimi K3 + Scrapeless:为模型提供实时Web访问
Senior Web Scraping Engineer
TL;DR:
- Kimi K3 可以推理工具调用,但模型并不会自动拥有一个新鲜的网页副本。 客户端必须暴露搜索、页面提取或浏览器工具并将其结果返回给模型。
- Scrapeless MCP 服务器提供了实时网页工具边界。 通过一个远程的 MCP 连接,代理可以执行类型化搜索、抓取和云浏览器操作,而无需将浏览器基础设施放入模型进程中。
- OpenCode 可以承载集成的双方。 将 Kimi K3 配置为模型提供者,将 Scrapeless 配置为远程 MCP 服务器,然后在请求模型进行研究之前验证该服务器。
- 有依据的提示需要证据合同。 需要源 URL、提取字段、可为空值和新鲜时间戳,而不是接受不支持的叙述答案。
- 两个凭证保持独立。
MOONSHOT_API_KEY授权模型提供者;SCRAPELESS_KEY授权网页工具层。 - 免费开始。 新的 Scrapeless 账户包含免费试用积分 — 在 app.scrapeless.com 注册。
介绍:模型和网页工具是不同的组件
Kimi K3 可以规划、推理并发出结构化的工具调用。实时网页访问依然通过客户端和工具服务器到达。
这种分离是有用的。模型决定它需要什么证据;MCP 客户端验证类型请求;Scrapeless 执行搜索、提取或浏览器工作;结果返回给模型并附有可见的来源轨迹。模型从不需要直接访问浏览器凭证或网络接入。
本指南使用 OpenCode 作为具备 MCP 能力的客户端,因为其项目配置可以声明模型提供者和远程 MCP 服务器。同样的边界适用于任何符合标准的客户端。
您可以用 Kimi K3 和 Scrapeless 构建的内容
Kimi K3 加 Scrapeless 最佳工作方式是模型负责分析,工具层负责当前观察。
- 研究简报。 搜索一个主题,打开相关页面,提取声明和日期,然后返回一个源链接的简报。
- 产品监控。 阅读公共产品和更新日志页面,规范可见字段,并标记需要审查的实质性差异。
- 技术文档代理。 定位当前引用页面并从提取的内容中回答,而不是使用模型记忆。
- 市场地图。 发现公共组织或产品,提取固定架构,并为每条记录保留 URL。
- 证据感知的 RAG。 按需获取实时来源,并在内容进入检索索引之前附加来源信息。
- 浏览器研究。 当页面需要 JavaScript 渲染或多步骤导航时,使用云浏览器。
Scrapeless MCP 启动文章 描述了工具表面,而 LangChain 集成 显示了框架管理代理中的相同边界。
为什么实时网页访问很重要
Kimi K3 的训练和上下文窗口并不会让页面变得当前。发布说明、政策、价格或可用性字段在模型训练后或先前对话开始后可能会发生变化。
官方 Kimi K3 仓库 记录了模型 ID kimi-k3、与 OpenAI 兼容的访问、工具调用和保留的思维历史。它还明确了模型/客户端合同:多轮工具工作流必须将 API 返回的完整助手消息传回下一个请求。
MCP 解决的是一个不同的问题。MCP 生命周期规范 在正常工具操作之前定义了初始化和能力协商。因此,工具发现是第一个集成测试——而不是提示。
为什么选择 Scrapeless MCP 服务器
Scrapeless MCP 服务器为具有 MCP 能力的代理提供了一个类型化边界,以进行当前的网络工作:搜索、直接页面提取、屏幕截图和持久的云浏览器操作。
远程端点是 https://api.scrapeless.com/mcp 并使用 x-api-token 头。本地 stdio 包是 scrapeless-mcp-server。两者都保持浏览器和网络执行在 Kimi K3 的模型进程之外。
前提条件
- Node.js 20 或更高版本。
- 一个支持 MCP 的客户端。本指南使用 OpenCode 的项目配置。
- Kimi K3 API 访问权限和
MOONSHOT_API_KEY。 - 一个 Scrapeless 账户和
SCRAPELESS_KEY。 - 有权限访问每个目标,并存储返回的公共数据。
本地验证环境未包含任何服务密钥。已运行包安装、配置验证和客户端构建;已认证的模型生成和 MCP 工具发现仍被标记为前提条件。
安装集成包
安装验证工具所用的确切 MCP 客户端和本地服务器包:
bash
npm install \
@modelcontextprotocol/sdk@1.30.0 \
scrapeless-mcp-server@0.5.0
包的边界与客户端 UI 独立。OpenCode 可以直接使用远程服务器;SDK 仍然对低级连接测试有用,且 stdio 包提供本地传输选项。
在 OpenCode 中连接 Kimi K3 和 Scrapeless
OpenCode 接受 opencode.json 中的项目配置。它的 提供者配置 支持 OpenAI 兼容的端点,其 MCP 配置接受带有头部的远程可流式 HTTP 服务器。
注意:加载以下配置需要有效的
MOONSHOT_API_KEY和SCRAPELESS_KEY环境变量。JSON 形状已在本地验证;未呈现已认证连接作为完整运行。
json
{
"$schema": "https://opencode.ai/config.json",
"model": "moonshot/kimi-k3",
"providers": {
"moonshot": {
"name": "Moonshot AI",
"env": ["MOONSHOT_API_KEY"],
"package": "@opencode-ai/ai/providers/openai-compatible",
"settings": {
"baseURL": "https://api.moonshot.ai/v1"
},
"models": {
"kimi-k3": {
"name": "Kimi K3",
"modelID": "kimi-k3"
}
}
}
},
"mcp": {
"servers": {
"scrapeless": {
"type": "remote",
"url": "https://api.scrapeless.com/mcp",
"oauth": false,
"headers": {
"x-api-token": "{env:SCRAPELESS_KEY}"
}
}
}
}
}
OpenCode 的 远程 MCP 服务器架构 使用绝对 URL 和一个头部对象。环境替换使凭证避免出现在代码库中。
开始使用 Scrapeless 抓取
使用 Scrapeless 启动您的网络抓取和自动化工作流程!
今天注册并获得 5 美元的免费信用— 无需信用卡。立即在 Scrapeless 仪表板 申请您的免费信用。

在提示 Kimi K3 之前验证工具边界
配置并不能证明连接正常。正确的检查初始化 MCP 客户端,协商能力,并在模型介入之前列出工具。
注意:此握手需要
SCRAPELESS_KEY。已安装的 SDK 和客户端构造函数已在本地验证,但已认证的listTools()调用在此无凭证环境中仍然是前提条件。
javascript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(
new URL("https://api.scrapeless.com/mcp"),
{
requestInit: {
headers: { "x-api-token": process.env.SCRAPELESS_KEY },
},
},
);
const client = new Client({ name: "kimi-k3-web-check", version: "1.0.0" });
await client.connect(transport);
const { tools } = await client.listTools();
console.log(tools.map(({ name }) => name).sort());
await client.close();
当密钥缺失时,测试应关闭失败。使用有效密钥时,检查返回的名称和模式,而不是从旧帖子中硬编码假设。
如何实际使用:提示 Kimi K3
服务器在客户端中出现后,以证据和输出的术语请求工作,而不是产品命令。
你可以粘贴的提示
| 目标 | 提示 |
|---|---|
| 当前技术简报 | “研究此主题的当前公共文档。返回每一行的声明、证据 URL、页面标题和观察日期。” |
| 产品比较 | “仅使用每个页面上可见的字段比较这些公共产品页面。将缺失字段标记为 null。” |
| 更改检查 | “阅读此更改日志和产品页面。确定影响 API 用户的更改,并引用周围的证据。” |
| 源发现 | “首先搜索主要来源,打开最相关的页面,并解释每个来源为何具有权威性。” |
| 结构化提取 | “将可见项目提取到提供的 JSON 模式中。保留每条记录的标准 URL。” |
| 浏览器工作流程 | “在浏览器中打开页面,等待命名的用户界面元素,提取仅公共字段,然后关闭会话。” |
实际示例:研究和提取
你输入:
从 Moonshot AI 的公共代码库中研究当前的 Kimi K3 部署指南。返回支持的 API 模型 ID、兼容接口、推荐推理引擎、源 URL,以及任何无法确认的字段为 null。使用当前的网络工具;不要凭记忆回答。
代理的计划应保持可见:
- 搜索 Moonshot AI 的第一方 Kimi K3 代码库。
- 打开仓库页面并识别部署部分。
- 只提取请求的字段。
- 保留源 URL 和页面标题。
- 对于页面上不存在的任何请求字段返回 null。
输出契约是紧凑的:
jsonc
// illustrative sample
{
"model_id": "kimi-k3",
"api_style": ["OpenAI-compatible", "Anthropic-compatible"],
"recommended_inference_engines": ["vLLM", "SGLang", "TokenSpeed"],
"source_url": "https://github.com/MoonshotAI/Kimi-K3",
"source_title": "MoonshotAI/Kimi-K3",
"unconfirmed": []
}
所示值来自第一方仓库。在生产中,保持原始工具结果与规范化记录并排,以便审核者可以追踪每个字段。
生成可靠的输出
可靠的代理输出始于狭窄的数据契约。
- 命名源类。 当需要时,请求第一方文档、标准或公开记录。
- 指定字段。 固定模式可以防止有说服力的段落替代缺失证据。
- 保留规范 URL。 源 URL 使审查和后续更改检测成为可能。
- 允许 null。 缺失的信息比模型从记忆中填补空白更好。
- 将观察与推论分开。 将提取的字段和任何模型解释存储在不同的键中。
- 要求行动前审核。 研究可以自动化;发布、外联、采购和账户更改需要明确批准。
JSON-RPC 在客户端下承载 MCP 消息。JSON-RPC 2.0 规范 定义了将调用与结果配对的请求标识符和方法/参数结构。
限制和先决条件
Kimi K3 和 Scrapeless 解决系统的不同部分,因此故障出现在不同的边界。
| 边界 | 典型症状 | 正确响应 |
|---|---|---|
| 模型凭证 | 提供者拒绝生成 | 确认 Moonshot 账户和环境变量 |
| MCP 凭证 | 工具发现未授权 | 确认 Scrapeless 账户和 x-api-token 头部 |
| 客户端模式 | 服务器未加载 | 验证 OpenCode 配置与当前版本 |
| 页面访问 | 公开内容缺失或受限 | 停止并返回访问限制 |
| 提取 | 某字段缺失 | 返回 null 并保留证据页面 |
| 操作批准 | 任务将更改外部状态 | 暂停以等待授权人员 |
不要在日志或面向用户的输出中暴露模型推理内容。当提供者要求时,保留完整的助手消息在 API 对话中,但仅发布最终答案、工具证据和应用程序所需的操作元数据。
结论:保持模型在工具边界内
Kimi K3 仅在 MCP 客户端将模型连接到当前观测时,才成为实时网络代理。验证提供者,初始化 MCP 连接,检查工具表面,然后根据严格的证据模式进行提示。
模型可以决定读取什么以及如何合成。Scrapeless 处理网络执行。您的应用程序仍然负责授权、源政策、审查和存储。
准备好让 Kimi K3 访问实时网络了吗?
加入我们的社区,与构建基于的代理的开发者比较 MCP 客户端模式:Discord · Telegram。
在 app.scrapeless.com 注册并在添加基于模型的研究循环之前验证 Scrapeless MCP 工具边界。
常见问题
问:Kimi K3 自身是否具有实时网络访问?
不。Kimi K3 需要一个客户端和网络工具来观察当前页面;Scrapeless MCP 服务器提供该工具边界。
问:Kimi K3 能否调用 MCP 工具?
可以。Kimi K3 支持结构化工具调用,而支持 MCP 的客户端将可用的服务器工具转换为模型的工具表面。
问:为什么在此设置中使用 OpenCode?
OpenCode 可以在项目配置中声明兼容 OpenAI 的模型提供者和远程 MCP 服务器,保持集成可检查。
问:哪个凭证属于 MCP 头?
SCRAPELESS_KEY 属于 x-api-token MCP 头。MOONSHOT_API_KEY 仅由 Kimi K3 模型提供者使用。
问:集成是否可以在没有模型密钥的情况下运行?
当 SCRAPELESS_KEY 可用时,MCP 握手和直接工具调用可以在没有模型密钥的情况下运行。Kimi K3 生成仍然需要 Moonshot API 访问。
问:集成是否可以在没有 Scrapeless 密钥的情况下运行?
没有经过身份验证的 Scrapeless 工具调用无法在没有 Scrapeless 密钥的情况下运行。包安装和配置验证仍然可以在本地运行。
问:代理应该如何处理缺失字段?
代理应该返回 null,保留证据 URL,并避免从模型记忆中填充字段。
问:使用这种模式自动进行账户更改是否安全?
没有明确的批准边界,不要进行状态更改操作,保持禁用或需要人工批准,并仅在授予工作流的帐户范围内使用工具层。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



