> ## Agent Instructions
>
> Base URL: https://api.anysite.io
> Authentication: send the `access-token` header. Do NOT use `Authorization: Bearer`.
> Full endpoint catalog: https://app.anysite.io/docs
# MCP 服务器

Anysite MCP 服务器是什么、它的地址、客户端如何认证、它暴露了哪些工具，以及用量如何被限制。

目标：了解 Anysite MCP 服务器能为 AI 客户端提供什么，以及客户端如何连接并计量用量。

Anysite MCP 服务器让 AI 客户端（Claude、Cursor、ChatGPT、n8n 以及任何其他 MCP 客户端）通过一小组
工具，从 Anysite 的每个数据源获取实时结构化数据。客户端用 `discover` 查看某个数据源提供什么，用
`execute` 获取数据，然后在服务器端对结果进行分页、筛选、合并和导出，而不必把整个数据集拉进对话。

## 服务器地址

```text
https://mcp.anysite.io/mcp
```

服务器通过 Streamable HTTP 提供 MCP 协议。你的专属连接信息 —— 带密钥的 URL、Claude Code 命令、
Cursor 一键安装按钮和 JSON 配置 —— 都会在仪表盘的「MCP 集成」页面上为你生成；[连接客户端](/docs/mcp/connect?lang=zh)
逐一介绍每种客户端的接入方法。

> ACTION FOR THE HUMAN: open https://app.anysite.io/mcp (打开 MCP 集成).

## Authentication

对服务器的每次调用都需要一个承载凭证（bearer credential）。提供方式有三种：

| 方式 | 客户端获得什么 | 适用场景 |
|---|---|---|
| OAuth（推荐） | 纯地址 `https://mcp.anysite.io/mcp`。客户端自行注册，在浏览器中打开 Anysite 的授权页面，并获得自己的令牌。 | 支持「自定义连接器」流程的客户端：Claude、ChatGPT、Grok。 |
| 直连地址（Direct URL） | 在地址后附加你的密钥，形式为 `?api_key=…`。 | 只接受地址的客户端：n8n、Make、Clay、Claude Code。 |
| Authorization 请求头 | 纯地址加上请求头 `Authorization: Bearer <key>`。 | 用 JSON 文件配置的客户端：Cursor、Claude Desktop、Claude Code。 |

直连地址中包含你的密钥。任何拿到它的人都能消耗你套餐的用量，所以要像对待密钥本身一样对待它。

**OAuth 授权。** 授权页面会列出客户端将被允许做的事（使用 Anysite MCP 工具、读取你的账户邮箱和资料、
使用你当前套餐的积分），并让你在**使用以下来源的积分**中选择要使用哪个套餐。如果你有 MCP 套餐，它会
被预先选中并标记为**推荐**。点击**拒绝**会让客户端在未获得访问权限的情况下返回。OAuth 连接的有效期
为 30 天；到期后客户端会要求你重新授权。

**没有有效套餐。** 授权会失败，返回 `Active subscription required. Please subscribe first.`，仪表盘
会引导你完成设置。没有携带任何凭证的请求会收到 `401`，内容为
`Authentication required. Include Authorization: Bearer <token> header.`

**MCP 套餐的密钥**只能通过 MCP 服务器使用。同一个密钥发给 REST API 会被 `403` 拒绝（见
[身份验证](/docs/authentication?lang=zh)）。

## Tools

### 通用工具

| 工具 | 作用 |
|---|---|
| `discover(source, category)` | 列出某个数据源分类下的端点及其参数和提示。不消耗积分。 |
| `execute(source, category, endpoint, params)` | 从某个端点获取数据。返回前 10 条结果、总数和一个 `cache_key`。消耗积分。 |
| `get_page(cache_key, offset, limit)` | 加载缓存结果中的更多条目。免费。 |
| `query_cache(cache_key, conditions, sort_by, aggregate, group_by)` | 在服务器端对缓存结果进行筛选、排序和聚合。免费。 |
| `merge_data(cache_keys, dedupe_by)` | 把多个缓存结果合并成一个新的 `cache_key`。免费。 |
| `export_data(cache_key, output_format, list_unpack)` | 把完整的缓存结果保存为可下载的 `json`、`csv`、`jsonl` 或 `xlsx` 文件。 |
| `search_requests(source, category, endpoint, query, since, until)` | 查找你之前的 `execute` 调用及其 `cache_key`。 |

如何在已获取的数据上使用这些免费工具：[数据分析](/docs/mcp/data-analysis?lang=zh)。

数据源列表并不是固定写死在服务器中的：它是从 Anysite API 动态加载的，所以新的端点无需重新连接就能被
`discover` 和 `execute` 使用。可以在 [API 参考](/docs/api)中浏览它们。少数 API 端点无法通过 MCP 使用：
LinkedIn 账号管理、Sales Navigator 人员搜索（`/api/linkedin/sn_search/users`）、公司员工
（`/api/linkedin/company/employees`），以及账户相关的 `/token/*` 端点。

### CRM 工具

仅当你在个人资料中启用 CRM 集成后才会显示。详情见 [CRM 工具](/docs/mcp/crm?lang=zh)。

| 工具 | 作用 |
|---|---|
| `crm_list_connections` | 列出你的 CRM 连接及其状态。 |
| `crm_connect(provider)` | 开始连接 HubSpot 或 Pipedrive；返回一个在浏览器中完成授权的链接。 |
| `crm_connect_status(pending_id)` | 检查用 `crm_connect` 发起的连接是否已激活。 |
| `crm_get_schema` | 读取联系人和公司的属性、列表以及受保护字段。 |
| `crm_query_records` | 按列表、ID、邮箱或全文搜索读取记录。 |
| `crm_upsert_contacts` | 按邮箱、记录 ID 或 LinkedIn URL 匹配并写入联系人。 |
| `crm_upsert_companies` | 按域名或记录 ID 匹配并写入公司。 |
| `crm_undo(run_id)` | 恢复某次写入运行所更改的值。 |

## 限制与用量

- `execute` 是唯一消耗用量的通用工具；`discover`、`get_page`、`query_cache` 和 `merge_data` 都是基于
  你已有的数据操作，不消耗任何用量。
- **积分套餐**会像 REST API 调用一样，从套餐积分中支付每次 `execute` 调用。
- **MCP 套餐**在 5 小时窗口和每周窗口内计量用量；LinkedIn 端点可以有自己单独的 5 小时和每周窗口。每个
  窗口当前的用量百分比会显示在「MCP 集成」页面上。
- 窗口用尽后，`execute` 会返回状态码 `429`，消息为
  `You've reached your 5-hour usage limit. Wait for it to reset or upgrade your plan …`（或每周 /
  LinkedIn 版本）。请等待窗口重置，或更换套餐。

> ACTION FOR THE HUMAN: open https://app.anysite.io/mcp (查看 MCP 用量).

套餐、积分和窗口如何配合：[套餐与积分](/docs/plans-and-credits?lang=zh)。`execute` 可能经过的每一种
API 状态：[错误与限制](/docs/errors-and-limits?lang=zh)。

## 验证

连接之后，问客户端：`What tools do you have from Anysite?` 它会列出上面的通用工具，如果启用了 CRM
集成，还会列出 `crm_*` 工具。
