专利实务里最费时间的往往不是撰写本身,而是查资料:申请人的工商信息在一个地方查,著录项目在另一个系统核,说明书全文还得单独下载存档。这套 MCP 服务把这些重复查询封装成标准工具,交给 AI 去调用。
本文是这套服务的完整功能说明:每个工具能查什么、参数怎么传、返回长什么样、有哪些边界,以及接入与鉴权的全部细节。文中所有返回示例均取自真实调用。
1一眼看全:能力地图
7 个工具按数据域分成三类。企业类回答「这家公司是什么情况」,费用类回答「还要交多少钱、能不能减」,专利类回答「这件专利是什么、全文在哪」。
| # | 工具 | 数据域 | 一句话用途 |
|---|---|---|---|
| 1 | search_company |
企业 | 按关键词模糊检索企业,只给标准名称 + 统一社会信用代码 |
| 2 | query_company_info |
企业 | 查单个企业的工商详情:法定代表人、企业类型、注册地址、邮编 |
| 3 | query_fee_reduction |
费用 | 查费减备案的历年明细,并给出本年度是否可用的结论 |
| 4 | is_fee_reduction_valid |
费用 | 只回答当前年度能不能享受费减(是 / 否) |
| 5 | query_patent_fee |
费用 | 查专利应缴费用:费用项目、应缴金额、缴费期限,支持一次查多件 |
| 6 | get_patent_info |
专利 | 查著录项目:发明名称、申请号、公开号、申请人、发明人、主分类号、摘要 |
| 7 | download_patent_pdf |
专利 | 下载说明书全文 PDF,返回可直接打开的短时效链接 |
search_company 是模糊检索,只解析出标准企业名称和信用代码,本身不返回工商详情;要问「法人是谁 / 地址在哪」,用的是 query_company_info。实际使用时不需要记,AI 会根据你的问法自己选。
2接入方式与协议
服务以标准 MCP(Model Context Protocol)对外提供,任何支持 MCP 的 AI 客户端都能接入。
| 项目 | 说明 |
|---|---|
| 端点地址 | https://www.patentg.com/mcp(仅 HTTPS) |
| 传输方式 | Streamable HTTP,单 JSON 响应模式(Content-Type: application/json)。不开 SSE 长连接,避免占用连接资源 |
| 协议版本 | 支持 2025-06-18 与 2024-11-05,握手时按客户端请求的版本回显 |
| 调用方法 | initialize → tools/list → tools/call;另支持 ping、resources/list、prompts/list |
| 自述接口 | GET /mcp —— 返回服务名、版本、协议、工具清单等状态信息,可用于自检 |
| 健康检查 | GET /mcp/health —— 返回 {"status":"ok"},便于探活 |
| 批量请求 | 支持 JSON-RPC 批(数组形式一次提交多条) |
最简调用示例
# 1) 握手 POST https://www.patentg.com/mcp Content-Type: application/json X-MCP-Orkey: 你的orkey {"jsonrpc":"2.0","id":1,"method":"initialize", "params":{"protocolVersion":"2025-06-18"}} # 2) 调用工具(查一件专利的著录信息) {"jsonrpc":"2.0","id":2,"method":"tools/call", "params":{"name":"get_patent_info", "arguments":{"patent_no":"CN121087679B"}}}
3鉴权:orkey 准入机制
所有工具调用都要求携带有效凭证,未携带或无效时会被直接拒绝,不会返回任何业务数据。
凭证怎么传
| 方式 | 支持 | 说明 |
|---|---|---|
X-MCP-Orkey 请求头 | 推荐 | 在客户端的 headers 里配置一次,全局生效 |
orkey 表单字段 | 兼容 | 仅 POST 表单场景,供不便设置请求头的调用方使用 |
URL 查询串 ?orkey= | 不接受 | 查询串会被写进服务器访问日志与浏览器历史,因此不支持 |
两条准入通路
pg- 开头便于辨识。可随时重置或删除,账号被禁用时密钥立即失效。被拒绝时返回什么
{"jsonrpc":"2.0","id":2,
"result":{"isError":true,
"content":[{"type":"text",
"text":"拒绝调用:调用凭证无效或未授权。该 MCP 服务需要有效的 orkey 才能调用……"}]}}
4工具详解
以下逐个说明。每个工具给出:用途、入参表、返回字段、真实返回示例、注意事项。
search_company
企业检索(辅助)
按关键词模糊检索企业,返回候选清单(标准企业名称 + 统一社会信用代码)。它是为费减查询解析主体用的辅助工具,只做检索、不返回工商详情。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 企业名称关键词,支持模糊匹配 |
limit | integer | 否 | 最多返回条数,默认 10 |
返回:候选清单,每条形如 [1] 腾讯科技(深圳)有限公司 (gsid: 9144030071526726XG)。匹配到多家时会提示用 pick_index 指定序号或直接提供信用代码。
query_company_info
企业工商信息
查单个企业的工商详情。企业名称写完整(含「有限公司」等后缀)命中率更高,也可以直接传统一社会信用代码。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 企业完整名称(建议含后缀,至少 4 个汉字)或统一社会信用代码 |
返回字段:企业名称、统一社会信用代码、法定代表人、企业类型、成立日期、注册地址、邮编。
真实返回示例:
腾讯科技(深圳)有限公司 ● 9144030071526726XG ● 法人:马化腾 ● 2000-02-24 ● 深圳市南山区高新区科技中一路腾讯大厦 35 层
名称过短(低于 4 个汉字)会被拒绝并提示;查不到时会提示改用完整名称或信用代码。
query_fee_reduction
费减备案查询(含历年明细)
查询专利费减备案情况,返回历年备案明细,并给出本年度是否可用的结论。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 是 | 单位名称,支持模糊匹配 |
gsid | string | 否 | 统一社会信用代码。已知时直接传,可跳过名称解析,最快 |
pick_index | integer | 否 | 名称命中多家时,指定第几个候选(从 1 起) |
返回字段:单位名称、统一社会信用代码、数据来源、备案记录条数、年度结论、以及按年度倒序的备案明细(备案年度、备案状态、备案日期)。
真实返回示例:
单位:腾讯科技(深圳)有限公司 统一社会信用代码:9144030071526726XG 数据来源:CNIPA 实时 费减备案记录:0 条 结论:未查询到费减备案记录 年度备案明细(按年度倒序): (无)
is_fee_reduction_valid
费减资格判定
只回答一个问题:当前年度能不能享受费减。适合批量核对名单时快速过一遍。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
company_name | string | 是 | 单位名称 |
gsid | string | 否 | 统一社会信用代码 |
pick_index | integer | 否 | 多候选时指定序号(从 1 起) |
真实返回示例:
否。腾讯科技(深圳)有限公司(9144030071526726XG)未查询到费减备案记录。数据来源:CNIPA 实时
需要历年明细时改用 query_fee_reduction。
query_patent_fee
专利应缴费用
查询中国专利的应缴费用:费用项目、应缴金额、缴费期限。回答「这件专利还要交多少钱 / 什么时候到期」时用它。支持一次查多件。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
patent_nos | array<string> | 是 | 专利申请号数组。单件也要写成数组:["2025116396651"] |
号码要求:13 位申请号(12 位数字 + 1 位校验位,校验位可为 0-9 或 X)。带 CN 前缀、点分写法都能识别并归一化。
返回示例:
【2025116396651】2 项应缴费: - 发明专利第2年年费 | 金额 135.00 | 期限 2026-12-11 - 发明专利第3年年费 | 金额 180.00 | 期限 2027-12-13 以下专利号不合法,已跳过: - BADNUMBER:不是有效的 13 位中国专利申请号
get_patent_info
专利著录信息
查询中国专利的著录项目信息。回答「这件专利是什么 / 谁申请的 / 什么时候公开」时用它。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
patent_no | string | 是 | 13 位申请号(2025116396651)或 CN 开头的公开(公告)号(CN121087679B / CN121087679A) |
返回字段:发明名称、申请号、公开(公告)号、申请日、公开(公告)日、申请人、发明人、主分类号、摘要。
真实返回示例:
发明名称:一种抗寒保暖的复合羊毛面料及其制作工艺 申请号:CN202511639665.1 公开(公告)号:CN121087679B 申请日:2025.11.11 公开(公告)日:2026.02.03 申请人:上海悠途实业有限公司 发明人:张凯;章晋增 主分类号:D04B1/10(2006.01) 摘要:本发明公开了……
首次查询某件专利时,服务端需向官方接口实时取数,通常 5 秒左右;同一件再次查询很快。这是正常的冷缓存现象。
download_patent_pdf
说明书全文下载
下载中国专利的说明书全文 PDF,成功后返回可直接在浏览器打开的地址。用户要「专利全文 / 说明书 / PDF」时用它。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
patent_no | string | 是 | 与 get_patent_info 相同:13 位申请号或 CN 开头公开号 |
返回示例:
说明书 PDF 已就绪: 文件名:CN121087679B.pdf 下载地址:https://www.patentg.com/mcp/file/CN121087679B.pdf?t=eyJmIjoiQ04xMjEwODc2NzlCLnBkZiIsImsiOiI4MWM2ZGVjZi… (链接 10 分钟内有效,可直接在浏览器打开或另存为;过期后重新调用本工具即可获取新链接)
返回的链接是短时效签名地址,机制见下一节。文件在服务端已缓存,重复请求不会重复下载。
5说明书 PDF 下载的完整链路
下载是整套服务里唯一涉及「文件交付」的能力,因此单独设计成两段式:先签发令牌,再凭令牌取件。理解这条链路,能解释你遇到的绝大多数下载问题。
为什么不直接给一个静态地址
说明书 PDF 的文件名由公开号推导(如 CN121087679B.pdf),如果暴露出一个公开静态目录,任何人只要按公开号拼地址就能批量拉取全文。所以取件地址改为带签名的临时链接:不可枚举、有时效、与文件名绑定。
两段式流程
download_patent_pdf 时,服务端校验凭证通过后才签发令牌。没有 orkey 就拿不到令牌,也就打不开任何文件。GET /mcp/file/<文件名>?t=<令牌>)。因为浏览器地址栏无法携带自定义请求头,令牌本身就是这次取件的凭证。也可以给前端/后台单独签发
如果需要在你的系统里生成「用户可直接点开」的链接,可调用签发接口换取令牌(同样必须带有效 orkey):
POST https://www.patentg.com/mcp/mcpdlissue Content-Type: application/x-www-form-urlencoded X-MCP-Orkey: 你的orkey filename=CN121087679B.pdf → 返回 {"code":0,"data":{"filename":"CN121087679B.pdf", "url":"https://www.patentg.com/mcp/file/CN121087679B.pdf?t=…", "expires_in":600}}
取件端的安全约束
| 约束 | 行为 |
|---|---|
| 令牌有效期 | 默认 600 秒(10 分钟),过期即失效 |
| 与文件名绑定 | 令牌里记录了目标文件名,用它去取别的文件会被拒绝 |
| 签名校验 | 令牌被篡改(改变内容)即校验失败,返回 403 |
| 文件名白名单 | 只放行 .pdf,同目录下的其它导出文件不可通过该路由取走 |
| 路径围栏 | 只允许取固定目录内的文件,越界或路径穿越一律拒绝 |
| 缓存策略 | 响应头带 Cache-Control: private, no-store,防止中间层缓存后绕过时效 |
| 限流 | 签发与取件分别限流;超限返回 429 |
失败时返回什么
| 状态码 | 含义 | 怎么处理 |
|---|---|---|
401 | 没带任何凭证(既无令牌也无 orkey) | 重新调用 download_patent_pdf 取完整链接 |
403 | 令牌无效或已过期、令牌与文件名不匹配、orkey 无效 | 最常见的原因是过期 —— 重新问一次即可 |
404 | 文件名不合法,或服务端无该文件 | 确认专利号有效;该专利可能暂无文本 |
429 | 触发限流 | 稍后重试 |
403——这不是服务故障。重新调用一次工具就能拿到新链接,无需其它操作。
6错误处理与边界
协议层错误(标准 JSON-RPC 错误码)
| 错误码 | 含义 | 触发场景 |
|---|---|---|
-32600 | Invalid Request | 请求体不是合法 JSON-RPC 对象 |
-32601 | Method not found | 调用了不支持的方法 |
-32602 | Invalid params | 工具名不存在(如 未知工具:xxx) |
-32700 | Parse error | 报文无法解析 |
工具层错误(isError: true + 可读文案)
参数缺失、号码不合法、上游接口异常等,统一以 isError: true 返回,并在 content[0].text 给出可直接转达给用户的中文说明,例如「错误:keyword 不能为空」「专利号错误:xxx」。
· 「无应缴费记录」(可能已缴清或不适用)
· 「未查询到费减备案记录」(该主体未备案)
· 「未检索到…对应的企业」(企业库无该主体)
主体解析:多候选怎么办
用简称查费减时可能命中多家企业。此时服务端不会随便挑一家,而是返回候选清单,提示用 pick_index 指定序号,或直接补传统一社会信用代码。如果该主体不在企业库内(如事业单位),会提示补充完整名称 + 信用代码。
7数据来源与性能
每次返回都会标注数据来源,便于判断结果的时效性。
| 来源 | 含义 | 典型耗时 |
|---|---|---|
| 本地库 | 命中服务端已同步的备案/企业数据 | 毫秒级 |
| CNIPA 实时 | 本地未命中,向官方接口实时请求 | 通常 1~2 秒 |
各工具的耗时特征
| 工具 | 典型耗时 | 说明 |
|---|---|---|
search_company | 约 0.2~0.5 s | 企业库检索 |
query_company_info | 约 0.5~1.7 s | 名称越完整越快 |
query_fee_reduction | 约 0.2~0.6 s | 本地命中更快 |
is_fee_reduction_valid | 约 0.2~0.5 s | 同上 |
query_patent_fee | 约 0.3 s | 批量时随件数增加 |
get_patent_info | 首次约 5 s,之后 1 s 内 | 首次需实时向官方取数 |
download_patent_pdf | 首次约 4.8 s,之后更快 | 含服务端下载与落盘,文件会被缓存 |
8安装配置
在 AI 客户端的 MCP 配置文件里加一段即可。以 WorkBuddy 为例:点击「连接器 → 自定义连接器 → 配置 MCP」,或直接编辑配置文件。
配置文件位置:~/.workbuddy/mcp.json(Windows 通常为 C:\Users\你的用户名\.workbuddy\mcp.json)
{
"mcpServers": {
"patentg-web-mcp": {
"type": "http",
"url": "https://www.patentg.com/mcp",
"headers": {
"X-MCP-Orkey": "你的orkey"
}
}
}
}
其他常见客户端:
| 客户端 | 配置文件位置 |
|---|---|
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | 项目目录下 .cursor/mcp.json |
| Cline / 其他支持 MCP 的工具 | 在设置里选择「添加远程 MCP 服务」,填入地址与请求头 |
保存后完全退出并重启客户端,再到连接器(或 MCP)管理页面,对这个新服务点一次「信任」即可生效。之后每次对话,AI 都会自动判断何时该调用它。
9使用边界与合规说明
| 项目 | 说明 |
|---|---|
| 读写性质 | 全部只读。没有任何写入、修改、删除接口,不会改动官方系统里的任何数据 |
| 数据来源 | 国家知识产权局公开的专利数据(费减备案、应缴费用、著录项目、说明书全文)与公开工商信息 |
| 结果性质 | 查询结果仅供业务参考。正式结论请以官方系统记录为准;涉及法律效力的判断,以代理师意见与官方文件为准 |
| 凭证安全 | orkey 等同于账号身份,请勿写入 URL、截图外发或提交到代码仓库。泄露后请立即重置 |
| 下载文件 | 取件链接短时效且带签名,请勿长期保存或转贴到公开场合 |
| 调用配额 | 下载类接口有独立限额;如你的业务需要更大的批量,请联系管理员调整 |
10常见问题
下载链接打开是 403,是不是坏了?
大概率是过期。链接有效期 10 分钟,重新调用一次 download_patent_pdf 就能拿到新链接,不需要做别的。
为什么第一次查著录信息要等 5 秒?
服务端需要向官方接口实时取数并缓存。同一件专利再查就很快,这是正常的冷启动现象,不是卡住。
查费减返回「未查询到费减备案记录」,是出错了吗?
不是。这是正常结论——表示该主体在当前年度没有备案记录。如果确认该单位已备案,请检查名称与统一社会信用代码是否与备案时填写的一致。
为什么企业名称要写完整?
「XX科技」这类简称会匹配到一串同名企业,需要二次确认。写全称(含「有限公司」等后缀)或直接给统一社会信用代码,可以一次命中。
查询应缴费用时为什么单件也要写成数组?
因为该接口本身支持批量,入参统一为数组形式。单件写成 ["2025116396651"] 即可,这样同一套调用方式既能查一件也能查几十件。
可以同时查多少件?
应缴费用查询一次最多 50 件(上游接口单页上限)。超过会被明确拒绝,请分批调用——服务端不会静默截断,因为漏查的号码会被误报成「未查询到」。