cnipa-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cnipa_mcp-0.1.0/PKG-INFO +143 -0
- cnipa_mcp-0.1.0/README.md +126 -0
- cnipa_mcp-0.1.0/pyproject.toml +30 -0
- cnipa_mcp-0.1.0/setup.cfg +4 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp/__init__.py +4 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp/cnipa_query.py +2997 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp/server.py +448 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp.egg-info/PKG-INFO +143 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp.egg-info/SOURCES.txt +11 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp.egg-info/dependency_links.txt +1 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp.egg-info/entry_points.txt +2 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp.egg-info/requires.txt +6 -0
- cnipa_mcp-0.1.0/src/cnipa_mcp.egg-info/top_level.txt +1 -0
cnipa_mcp-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cnipa-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: CNIPA patent query MCP server: self-contained direct mode (bundled Node) or HTTP proxy mode
|
|
5
|
+
Keywords: mcp,cnipa,patent,model-context-protocol
|
|
6
|
+
Classifier: Programming Language :: Python :: 3
|
|
7
|
+
Classifier: Operating System :: OS Independent
|
|
8
|
+
Classifier: Topic :: Utilities
|
|
9
|
+
Requires-Python: >=3.9
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
Requires-Dist: mcp>=2.0
|
|
12
|
+
Requires-Dist: requests>=2.28
|
|
13
|
+
Requires-Dist: numpy>=1.24
|
|
14
|
+
Requires-Dist: opencv-python-headless<5,>=4.8
|
|
15
|
+
Requires-Dist: nodejs-bin==18.4.0a4
|
|
16
|
+
Requires-Dist: openpyxl>=3.1
|
|
17
|
+
|
|
18
|
+
# cnipa-mcp
|
|
19
|
+
|
|
20
|
+
CNIPA(中国国家知识产权局 · 专利检索及分析系统)专利查询 **MCP 服务器**。
|
|
21
|
+
让 Qoder / Claude Desktop / Cursor 以及魔搭(ModelScope)MCP 托管等支持 MCP 的客户端
|
|
22
|
+
直接调用专利查询能力。
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
MCP 客户端 ──stdio──▶ cnipa-mcp ──┬─ 直连模式: 进程内访问 CNIPA(自带 Node,自动登录/滑块/铸币)
|
|
26
|
+
└─ 代理模式: HTTP 转发给 Docker 后端(cnipa-api 等兼容服务)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 功能与工具
|
|
30
|
+
|
|
31
|
+
| 工具 | 功能 | 关键参数 |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `service_status` | 查看运行模式、Node/OpenCV 依赖、数据目录、凭据配置状态 | — |
|
|
34
|
+
| `query_patent` | 按专利号查询:检索信息 + 著录项目 + 费用信息 | `patent_no`(逗号分隔多个;支持 CN/ZL 前缀、.X 后缀) |
|
|
35
|
+
| `query_applicant_patents` | 按申请人查询名下专利:完整 JSON 落盘 + 生成 Excel + 返回预览 | `sqrmc`、`preview_count`、`max_pages`、`download_excel`、`save_dir` |
|
|
36
|
+
| `download_excel_file` | 下载后端已生成的 Excel(仅代理模式) | `filename` 或完整 URL |
|
|
37
|
+
|
|
38
|
+
所有查询工具都需要 CNIPA 账号凭据,优先取工具参数 `account` / `password` / `type_key`,
|
|
39
|
+
缺省回退到环境变量 `CNIPA_USERNAME` / `CNIPA_PASSWORD` / `CNIPA_TYPE_KEY`
|
|
40
|
+
(`type_key`:1 自然人 / 2 法人 / 3 代理机构;也接受"自然人/法人/代理机构"中文写法)。
|
|
41
|
+
|
|
42
|
+
> ⚠️ 本包**不内置任何默认凭据**,请使用您本人有权使用的账号,并遵守 CNIPA 用户协议与相关法律法规。
|
|
43
|
+
|
|
44
|
+
## 安装
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# 推荐(隔离环境,适合 MCP 客户端/云端一键拉起)
|
|
48
|
+
uvx cnipa-mcp
|
|
49
|
+
|
|
50
|
+
# 或 pip 安装
|
|
51
|
+
pip install cnipa-mcp
|
|
52
|
+
cnipa-mcp # stdio 方式运行
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 两种运行模式
|
|
56
|
+
|
|
57
|
+
### 直连模式(默认,自包含)
|
|
58
|
+
|
|
59
|
+
不设置 `CNIPA_API_BASE` 即启用:进程内直接访问 CNIPA,自动完成
|
|
60
|
+
登录(滑块验证求解 + 瑞数铸币)、检索、著录项、费用信息查询。
|
|
61
|
+
依赖均已声明在包内:`nodejs-bin`(随包 Node 18)、`opencv-python-headless`(滑块求解)、
|
|
62
|
+
`numpy`、`requests`、`openpyxl`(Excel 导出)。临时数据目录自动落到系统临时目录,
|
|
63
|
+
适配只读/受限沙箱环境(如魔搭免费实例)。
|
|
64
|
+
|
|
65
|
+
### 代理模式
|
|
66
|
+
|
|
67
|
+
设置 `CNIPA_API_BASE`(如 `http://127.0.0.1:15000`)后,转发给 Docker 后端
|
|
68
|
+
(兼容 `hahaha121391/cnipa-api` 的 HTTP 服务):
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
docker run -d --name cnipa-api --restart unless-stopped \
|
|
72
|
+
-p 127.0.0.1:15000:5000 hahaha121391/cnipa-api:latest
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## MCP 客户端配置
|
|
76
|
+
|
|
77
|
+
### 本地客户端(Qoder / Claude Desktop 等,stdio)
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"mcpServers": {
|
|
82
|
+
"cnipa": {
|
|
83
|
+
"command": "uvx",
|
|
84
|
+
"args": ["cnipa-mcp"],
|
|
85
|
+
"env": {
|
|
86
|
+
"CNIPA_USERNAME": "<您的账号>",
|
|
87
|
+
"CNIPA_PASSWORD": "<您的密码>",
|
|
88
|
+
"CNIPA_TYPE_KEY": "1"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
凭据也可以不放在 env,由调用方在每次工具调用时传入 `account` / `password`。
|
|
96
|
+
|
|
97
|
+
### 魔搭(ModelScope)MCP 部署服务
|
|
98
|
+
|
|
99
|
+
选择"托管 STDIO"类型,提交如下 JSON(创建表单中用 `uvx` 拉取本包):
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"mcpServers": {
|
|
104
|
+
"cnipa": {
|
|
105
|
+
"command": "uvx",
|
|
106
|
+
"args": ["cnipa-mcp"],
|
|
107
|
+
"env": {
|
|
108
|
+
"CNIPA_USERNAME": "",
|
|
109
|
+
"CNIPA_PASSWORD": "",
|
|
110
|
+
"CNIPA_TYPE_KEY": "1"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
平台会自动从 PyPI 安装本包并调用 `list_tools` 做可部署检测;
|
|
118
|
+
`env` 中的账号/密码由部署者或使用者在部署向导中填写,不会出现在公开页面。
|
|
119
|
+
|
|
120
|
+
## 环境变量
|
|
121
|
+
|
|
122
|
+
| 变量 | 默认值 | 说明 |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| `CNIPA_API_BASE` | 空 | 空=直连模式;设置(如 `http://127.0.0.1:15000`)=代理模式 |
|
|
125
|
+
| `CNIPA_USERNAME` / `CNIPA_PASSWORD` | 空 | 默认凭据(可被工具参数覆盖) |
|
|
126
|
+
| `CNIPA_TYPE_KEY` | `1` | 账号类型:1 自然人 / 2 法人 / 3 代理机构 |
|
|
127
|
+
| `CNIPA_EXPORT_DIR` | `~/cnipa-exports` | 导出文件保存目录 |
|
|
128
|
+
| `CNIPA_DATA_DIR` | 系统临时目录/cnipa-mcp | 会话/JWT 缓存目录(受限环境自动降级) |
|
|
129
|
+
| `CNIPA_NODE_PATH` | 空 | 指定 node 可执行文件(默认用随包 Node) |
|
|
130
|
+
| `CNIPA_TIMEOUT` | `290` | 代理模式 HTTP 超时秒数 |
|
|
131
|
+
|
|
132
|
+
## 已知限制
|
|
133
|
+
|
|
134
|
+
- 首次查询包含"登录 + 滑块验证 + 铸币"流程,可能耗时数十秒;
|
|
135
|
+
- 超大申请人(数万条专利)全量拉取耗时较长,受限环境请设置 `max_pages` 取样,
|
|
136
|
+
截断时返回 `truncated: true`;
|
|
137
|
+
- 自由实例(1 vCPU / 1GB 内存 / 512MB 磁盘)下全量导出大申请人数据可能超限;
|
|
138
|
+
- 本工具通过自动化方式访问公开检索系统,请在获得授权的前提下用于合法用途
|
|
139
|
+
(如查询自有/客户授权范围内的专利数据)。
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
未声明许可证。仅供授权范围内的内部使用。
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# cnipa-mcp
|
|
2
|
+
|
|
3
|
+
CNIPA(中国国家知识产权局 · 专利检索及分析系统)专利查询 **MCP 服务器**。
|
|
4
|
+
让 Qoder / Claude Desktop / Cursor 以及魔搭(ModelScope)MCP 托管等支持 MCP 的客户端
|
|
5
|
+
直接调用专利查询能力。
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
MCP 客户端 ──stdio──▶ cnipa-mcp ──┬─ 直连模式: 进程内访问 CNIPA(自带 Node,自动登录/滑块/铸币)
|
|
9
|
+
└─ 代理模式: HTTP 转发给 Docker 后端(cnipa-api 等兼容服务)
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 功能与工具
|
|
13
|
+
|
|
14
|
+
| 工具 | 功能 | 关键参数 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `service_status` | 查看运行模式、Node/OpenCV 依赖、数据目录、凭据配置状态 | — |
|
|
17
|
+
| `query_patent` | 按专利号查询:检索信息 + 著录项目 + 费用信息 | `patent_no`(逗号分隔多个;支持 CN/ZL 前缀、.X 后缀) |
|
|
18
|
+
| `query_applicant_patents` | 按申请人查询名下专利:完整 JSON 落盘 + 生成 Excel + 返回预览 | `sqrmc`、`preview_count`、`max_pages`、`download_excel`、`save_dir` |
|
|
19
|
+
| `download_excel_file` | 下载后端已生成的 Excel(仅代理模式) | `filename` 或完整 URL |
|
|
20
|
+
|
|
21
|
+
所有查询工具都需要 CNIPA 账号凭据,优先取工具参数 `account` / `password` / `type_key`,
|
|
22
|
+
缺省回退到环境变量 `CNIPA_USERNAME` / `CNIPA_PASSWORD` / `CNIPA_TYPE_KEY`
|
|
23
|
+
(`type_key`:1 自然人 / 2 法人 / 3 代理机构;也接受"自然人/法人/代理机构"中文写法)。
|
|
24
|
+
|
|
25
|
+
> ⚠️ 本包**不内置任何默认凭据**,请使用您本人有权使用的账号,并遵守 CNIPA 用户协议与相关法律法规。
|
|
26
|
+
|
|
27
|
+
## 安装
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 推荐(隔离环境,适合 MCP 客户端/云端一键拉起)
|
|
31
|
+
uvx cnipa-mcp
|
|
32
|
+
|
|
33
|
+
# 或 pip 安装
|
|
34
|
+
pip install cnipa-mcp
|
|
35
|
+
cnipa-mcp # stdio 方式运行
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 两种运行模式
|
|
39
|
+
|
|
40
|
+
### 直连模式(默认,自包含)
|
|
41
|
+
|
|
42
|
+
不设置 `CNIPA_API_BASE` 即启用:进程内直接访问 CNIPA,自动完成
|
|
43
|
+
登录(滑块验证求解 + 瑞数铸币)、检索、著录项、费用信息查询。
|
|
44
|
+
依赖均已声明在包内:`nodejs-bin`(随包 Node 18)、`opencv-python-headless`(滑块求解)、
|
|
45
|
+
`numpy`、`requests`、`openpyxl`(Excel 导出)。临时数据目录自动落到系统临时目录,
|
|
46
|
+
适配只读/受限沙箱环境(如魔搭免费实例)。
|
|
47
|
+
|
|
48
|
+
### 代理模式
|
|
49
|
+
|
|
50
|
+
设置 `CNIPA_API_BASE`(如 `http://127.0.0.1:15000`)后,转发给 Docker 后端
|
|
51
|
+
(兼容 `hahaha121391/cnipa-api` 的 HTTP 服务):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
docker run -d --name cnipa-api --restart unless-stopped \
|
|
55
|
+
-p 127.0.0.1:15000:5000 hahaha121391/cnipa-api:latest
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## MCP 客户端配置
|
|
59
|
+
|
|
60
|
+
### 本地客户端(Qoder / Claude Desktop 等,stdio)
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"mcpServers": {
|
|
65
|
+
"cnipa": {
|
|
66
|
+
"command": "uvx",
|
|
67
|
+
"args": ["cnipa-mcp"],
|
|
68
|
+
"env": {
|
|
69
|
+
"CNIPA_USERNAME": "<您的账号>",
|
|
70
|
+
"CNIPA_PASSWORD": "<您的密码>",
|
|
71
|
+
"CNIPA_TYPE_KEY": "1"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
凭据也可以不放在 env,由调用方在每次工具调用时传入 `account` / `password`。
|
|
79
|
+
|
|
80
|
+
### 魔搭(ModelScope)MCP 部署服务
|
|
81
|
+
|
|
82
|
+
选择"托管 STDIO"类型,提交如下 JSON(创建表单中用 `uvx` 拉取本包):
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"cnipa": {
|
|
88
|
+
"command": "uvx",
|
|
89
|
+
"args": ["cnipa-mcp"],
|
|
90
|
+
"env": {
|
|
91
|
+
"CNIPA_USERNAME": "",
|
|
92
|
+
"CNIPA_PASSWORD": "",
|
|
93
|
+
"CNIPA_TYPE_KEY": "1"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
平台会自动从 PyPI 安装本包并调用 `list_tools` 做可部署检测;
|
|
101
|
+
`env` 中的账号/密码由部署者或使用者在部署向导中填写,不会出现在公开页面。
|
|
102
|
+
|
|
103
|
+
## 环境变量
|
|
104
|
+
|
|
105
|
+
| 变量 | 默认值 | 说明 |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `CNIPA_API_BASE` | 空 | 空=直连模式;设置(如 `http://127.0.0.1:15000`)=代理模式 |
|
|
108
|
+
| `CNIPA_USERNAME` / `CNIPA_PASSWORD` | 空 | 默认凭据(可被工具参数覆盖) |
|
|
109
|
+
| `CNIPA_TYPE_KEY` | `1` | 账号类型:1 自然人 / 2 法人 / 3 代理机构 |
|
|
110
|
+
| `CNIPA_EXPORT_DIR` | `~/cnipa-exports` | 导出文件保存目录 |
|
|
111
|
+
| `CNIPA_DATA_DIR` | 系统临时目录/cnipa-mcp | 会话/JWT 缓存目录(受限环境自动降级) |
|
|
112
|
+
| `CNIPA_NODE_PATH` | 空 | 指定 node 可执行文件(默认用随包 Node) |
|
|
113
|
+
| `CNIPA_TIMEOUT` | `290` | 代理模式 HTTP 超时秒数 |
|
|
114
|
+
|
|
115
|
+
## 已知限制
|
|
116
|
+
|
|
117
|
+
- 首次查询包含"登录 + 滑块验证 + 铸币"流程,可能耗时数十秒;
|
|
118
|
+
- 超大申请人(数万条专利)全量拉取耗时较长,受限环境请设置 `max_pages` 取样,
|
|
119
|
+
截断时返回 `truncated: true`;
|
|
120
|
+
- 自由实例(1 vCPU / 1GB 内存 / 512MB 磁盘)下全量导出大申请人数据可能超限;
|
|
121
|
+
- 本工具通过自动化方式访问公开检索系统,请在获得授权的前提下用于合法用途
|
|
122
|
+
(如查询自有/客户授权范围内的专利数据)。
|
|
123
|
+
|
|
124
|
+
## License
|
|
125
|
+
|
|
126
|
+
未声明许可证。仅供授权范围内的内部使用。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "cnipa-mcp"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "CNIPA patent query MCP server: self-contained direct mode (bundled Node) or HTTP proxy mode"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.9"
|
|
11
|
+
keywords = ["mcp", "cnipa", "patent", "model-context-protocol"]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Programming Language :: Python :: 3",
|
|
14
|
+
"Operating System :: OS Independent",
|
|
15
|
+
"Topic :: Utilities",
|
|
16
|
+
]
|
|
17
|
+
dependencies = [
|
|
18
|
+
"mcp>=2.0",
|
|
19
|
+
"requests>=2.28",
|
|
20
|
+
"numpy>=1.24",
|
|
21
|
+
"opencv-python-headless>=4.8,<5",
|
|
22
|
+
"nodejs-bin==18.4.0a4",
|
|
23
|
+
"openpyxl>=3.1",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
[project.scripts]
|
|
27
|
+
cnipa-mcp = "cnipa_mcp.server:main"
|
|
28
|
+
|
|
29
|
+
[tool.setuptools.packages.find]
|
|
30
|
+
where = ["src"]
|