# 给 AI 与开发者：天镜的数据怎么接

> 天镜的数据对 AI 助手和程序开放，都免费、不需要注册：llms.txt 给出全站导览；行业、品类、月报、指南等页面在地址后面加 .md 就能取得 Markdown 版本；MCP 服务让 Claude、Cursor、VS Code 等 AI 工具直接查品类的中标单价、行业规模和月度报告。引用时请写明口径、样本量和数据截至日期，并附页面地址。

- 更新：2026-09-20
- 原文：https://tian-jing.cn/ai-ready
- 出处：天镜（tian-jing.cn）

## 五种接入方式

| 方式 | 地址 | 适合 | 要不要 key |
|---|---|---|---|
| llms.txt | https://tian-jing.cn/llms.txt | AI 助手快速了解站点、找到要读的页面 | 不要 |
| llms-full.txt | https://tian-jing.cn/llms-full.txt | 一次读完数据方法、全部指南、对比和常见问题 | 不要 |
| Markdown 版本 | 页面地址后面加 .md | 程序或 AI 读取单个页面，省去解析网页 | 不要 |
| MCP 服务 | https://tian-jing.cn/mcp | 在 AI 工具里直接查数据 | 不要 |
| HTTP 数据接口 | https://tian-jing.cn/api/v1/… | 程序按条拉记录、按字段入库 | 要 |

另外，页面都带 JSON-LD 结构化数据（Dataset、Article、FAQPage、BreadcrumbList 等）；行业、品类、月报页的 Dataset 里写明了口径、样本量和数据截至日期。

## Markdown 版本

在页面地址后面加 .md，返回 `text/markdown; charset=utf-8`，HTTP 头里用 `Link: <网页地址>; rel="canonical"` 指回网页版。行业、品类、月报页的 Markdown 把结论、口径、样本量和数据截至日期写在最前面，数字和网页上一致；站内链接都是绝对地址。

| 页面 | 例子 |
|---|---|
| 行业 | https://tian-jing.cn/hangye/huanbao-shuiwu.md |
| 品类 | https://tian-jing.cn/pinlei/品类名.md |
| 月度报告 | https://tian-jing.cn/baogao/年-月.md，例如 2026-08 |
| 指南、对比 | https://tian-jing.cn/zhinan/zhongbiao-gonggao.md、https://tian-jing.cn/duibi/pingbiao-fangfa.md |
| 应用场景、小工具 | https://tian-jing.cn/changjing/yiliao-qixie.md、https://tian-jing.cn/gongju/jiage-fen.md |
| 常见问题、数据方法、本页 | https://tian-jing.cn/wenda.md、https://tian-jing.cn/shuju.md、https://tian-jing.cn/ai-ready.md |

## MCP 服务

- **地址**：https://tian-jing.cn/mcp
- **传输**：Streamable HTTP，每个请求一次 POST，返回 JSON
- **协议版本**：2026-07-28（无状态，每个请求自带版本和能力），同时兼容 2025-11-25、2025-06-18、2025-03-26、2024-11-05 的 initialize 流程
- **认证**：不需要
- **只读**：全部工具只读，不修改任何数据
- **限制**：每个 IP 每分钟最多调用 30 次工具；品类库以外的品类要实时查询，全站每分钟最多 20 次

### 工具

| 工具 | 做什么 | 参数 |
|---|---|---|
| search_categories（搜索品类） | 在天镜的品类库里按关键词找品类名。 | keyword, limit |
| get_category_stats（查品类的中标数据） | 查一个品类在中国公开中标（成交）公告里的数据：近几年项目数、采购单位数、中标单价中位数和 5%–95% 区间、前三品牌份额、逐年金额、采购最多的单位、中标最多的企业和品牌、地区分布、最新中标项目（附原文链接）。 | name |
| list_industries（列出 17 个行业） | 列出天镜划分的 17 个行业（环保水务、医疗健康、低空经济等），每个行业近几年的项目数、合同包中标金额和页面地址。 | 无 |
| get_industry_stats（查行业的中标数据） | 查一个行业的公开采购市场：近几年项目数和金额、逐年金额、采购最多的单位、中标最多的企业、公告里出现最多的品类和品牌、地区分布、最新中标项目。 | industry |
| get_monthly_report（查月度报告） | 查某个月的全国公开中标数据月报：公告数和环比、同比，合同包中标金额，按行业的分布，出现最多的品类，采购最多的单位，中标最多的企业，地区分布，金额最大的项目。 | month（可选） |
| list_articles（列出指南、对比与工具说明） | 列出天镜的使用指南（中标公告怎么读、预算与中标价的区别、市场规模怎么估等）、规则对比（采购方式、评标方法、政府采购法与招标投标法等）、应用场景和小工具说明。 | section（可选） |
| get_article（读一篇文章） | 按 slug 读取一篇指南、对比、应用场景或小工具说明的 Markdown 全文，包括引用的法规文件。 | slug |
| get_methodology（读数据口径） | 读天镜的数据来源、处理方法、每个指标的口径和已知局限，以及收录规模（公告总数、时间跨度）。 | 无 |

每个结果同时返回一段 Markdown（content）和一份结构化数据（structuredContent）；查品类、查行业、查月报的结果带口径、样本量、数据截至日期和页面地址。建议的顺序：先用 search_categories 找准品类名，再用 get_category_stats 查数据。

### 接入

**Claude Code**

```
claude mcp add --transport http tianjing https://tian-jing.cn/mcp
```

**Claude（网页版、桌面版）**：在 Customize → Connectors 里选 Add custom connector，填入上面的地址。团队版和企业版由组织的管理员（Owner）先在管理设置的 Connectors 里添加。

**Cursor**：写进项目里的 .cursor/mcp.json，或者用户目录下的 ~/.cursor/mcp.json。

```
{
  "mcpServers": {
    "tianjing": { "url": "https://tian-jing.cn/mcp" }
  }
}
```

**VS Code**：写进 .vscode/mcp.json，或者运行命令 MCP: Add Server。

```
{
  "servers": {
    "tianjing": { "type": "http", "url": "https://tian-jing.cn/mcp" }
  }
}
```

**Cline**：MCP Servers → Remote Servers，传输方式选 Streamable HTTP；或者写配置：

```
{
  "mcpServers": {
    "tianjing": { "type": "streamableHttp", "url": "https://tian-jing.cn/mcp", "disabled": false, "autoApprove": [] }
  }
}
```

**Trae**：设置 → MCP → 添加 → 手动添加：

```
{
  "mcpServers": {
    "tianjing": { "url": "https://tian-jing.cn/mcp" }
  }
}
```

**阿里云百炼**：MCP 管理 → 创建 MCP 服务 → 使用脚本部署，安装方式选 http：

```
{
  "mcpServers": {
    "tianjing": { "type": "streamableHttp", "url": "https://tian-jing.cn/mcp" }
  }
}
```

其他客户端：在 MCP 设置里新建一个远程服务器，类型选 Streamable HTTP（有的客户端叫“可流式传输的 HTTP”或 streamableHttp），填入地址即可。只支持旧版 SSE 传输（2024-11-05 的 HTTP+SSE）的客户端暂时接不上。

### 直接调用

不用 MCP 客户端也能调，一个请求就是一次 POST。2026-07-28 版要在请求体的 _meta 里带协议版本和客户端能力，HTTP 头里的 MCP-Protocol-Version、Mcp-Method、Mcp-Name 要和请求体一致：

```
curl -s https://tian-jing.cn/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/call' \
  -H 'Mcp-Name: get_monthly_report' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_monthly_report","arguments":{},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'
```

列出工具把 Mcp-Method 换成 tools/list、去掉 Mcp-Name，请求体的 method 也换成 tools/list。

## HTTP 数据接口

程序用的只读 JSON 接口。和 MCP 的区别：MCP 是给 AI 工具用的聚合结果，这里能**按条拉记录**，字段是原样的值（金额是数字就还是数字），适合入库和做自己的分析。

- **鉴权**：请求头 `X-Api-Key: <你的 key>`，或者 `Authorization: Bearer <你的 key>`。不支持把 key 写在地址里——那样它会进日志和 Referer。
- **限流**：每个 key 每分钟 120 次（可以按需调）。超了返回 429，响应体里写明原因。
- **没有 key 时**：整个接口返回 503。申请见 <https://tian-jing.cn/data-api>。
- **口径**：和站内页面完全一致，同一份数据、同一套过滤条件。逐条接口只覆盖近 3 年，`from` 早于这个窗口的部分不会返回。

| 接口 | 做什么 | 参数 |
|---|---|---|
| `GET /api/v1/notices` | 逐条中标记录：项目、采购单位、地区、原文链接，以及包件的中标人和金额、明细里的品牌型号单价数量 | `keyword` 或 `industry`（至少一个）、`region`、`from`、`to`（yyyy-MM-dd）、`page`、`size`（≤100） |
| `GET /api/v1/categories` | 在品类库里按词找品类名 | `keyword`、`limit` |
| `GET /api/v1/category` | 一个品类的中标数据（同品类页） | `name` |
| `GET /api/v1/industries` | 17 个行业及其规模 | 无 |
| `GET /api/v1/industry` | 一个行业的中标数据（同行业页） | `name`（行业名或 slug） |
| `GET /api/v1/month` | 某个月的月报（同月报页） | `month`（yyyy-MM，不填给最新一期） |
| `GET /api/v1/methodology` | 数据来源、口径与已知局限 | 无 |

返回体统一是 `{"ok": true, "data": {...}}`；出错是 `{"ok": false, "error": {"code": "...", "message": "..."}}`，状态码分别是 400（参数不对）、401（key 不对）、404（查不到）、429（限流）、502（数据源查询失败）、503（接口未开放或数据源不可用）。

```
curl -s 'https://tian-jing.cn/api/v1/notices?keyword=浊度仪&size=2' \
  -H 'X-Api-Key: 你的key'
```

```
{
  "ok": true,
  "data": {
    "total": 1775,
    "page": 1,
    "size": 2,
    "scope": "浊度仪 · 近 3 年 · 公开中标公告",
    "as_of": "2026-09-22",
    "items": [
      {
        "date": "2026-09-10T09:00:00Z",
        "title": "某某浊度仪采购项目中标公告（第1包）",
        "purchaser": "某县教育局",
        "region": "江苏省",
        "url": "https://example.gov.cn/notice/10000",
        "packages": [{ "winner": "某某环保工程有限公司", "amount": 1240000.0 }],
        "products": [
          { "name": "浊度仪", "std_name": "浊度仪", "brand": "某品牌", "model": "A-2094", "unit_price": 148000, "quantity": 4 }
        ]
      }
    ]
  }
}
```

字段缺失时那个键直接不出现（公告里本来就没有的，不编一个空值）。分页用 `page` 和 `size`，`total` 是命中总数。

## 引用规范

- 写明出处：天镜（tian-jing.cn）。
- 引用数字时同时写明口径、样本量和数据截至日期。行业、品类、月报页和对应的工具结果里都有这三项。
- 附上页面地址（工具结果里的 page_url）。
- 格式可以参考：据天镜统计（口径：近 3 年公开中标公告；样本 N 条；数据截至 某年某月某日），某品类的中标单价中位数约 X 元。来源：页面地址。

## 抓取与更新

- robots.txt 欢迎主流 AI 与搜索爬虫抓取公开页面；/lab、/api/、/admin/ 和 /mcp 不对爬虫开放。
- 全部可收录页面见 https://tian-jing.cn/sitemap.xml；月报、指南、对比和小工具的更新见 RSS：https://tian-jing.cn/feed.xml。
- 请控制抓取频率。需要完整数据或数据接口，见[数据接口](https://tian-jing.cn/data-api)。

## 数据范围

只覆盖公开发布了公告的采购；不对外发布公告的采购看不到。行业、品类、月报的数字都是在页面标注的口径下统计的，按固定周期重算，引用时以页面上标注的口径和日期为准。完整说明见[数据来源与方法](https://tian-jing.cn/shuju)。
