中国工程科技知识中心 (CKCEST) 三大数据库的统一 Model Context Protocol 服务器。 39 个工具 · 51 个离线测试全过 · 3 子站共用一套 cookie
| 模块 | 子站 | 工具数 | 覆盖能力 |
|---|---|---|---|
| 政策库 | https://policy.ckcest.cn | 15 | 检索 · 详情 · 高级检索 · 可视化分析 · 地图/穿透/热词 · 数据/汇编/图表导出 · 全文+附件保存 |
| 全球科研项目库 | https://gsp.ckcest.cn | 7 | 检索 · 详情 · 高级检索 · 联想词 · 多维分面 · 可视化聚合 · Excel 导出 |
| 全球统计数据库 | https://stats.ckcest.cn | 15 | 数据中心查询/导出 · 多项对比/导出 · 指标概览/详情/地图 · 联想/热词 |
| 共享 | — | 2 | 登录 / 登录状态 |
pip install -e . # 或 pip install -e ".[dev]" 开发模式 python -m ckcest_mcp # stdio 模式 ckcest-mcp # 安装后命令行
依赖:Python ≥ 3.10、fastmcp、httpx、selectolax。
{
"mcpServers": {
"ckcest": {
"command": "python",
"args": ["-m", "ckcest_mcp"]
}
}
}项目自带 skills/ckcest/SKILL.md,包含 39 个工具的使用指南与典型工作流模板,Claude Code 会自动识别加载。
三个子站共用 CKCEST CAS SSO(sso.ckcest.cn)。一个 CASTGC 通行三站:
- 在浏览器登录任意一个 *.ckcest.cn 子站
- F12 → Application(应用) → Cookies
- 选
https://sso.ckcest.cn,复制CASTGC;再选目标子站复制SESSION/projectlib-securitycas-cookie - 调
set_cookie(cookie="..."),把 DevTools 拷贝出来的 cookie 列表用;拼接整段粘贴
⚠️ 这些 cookie 都是 HttpOnly,JS 读不到,必须从开发者工具复制。 cookie 持久化在~/.ckcest-mcp/cookie.json,约 30 天有效。文件含敏感令牌,请注意本机安全。
stats 子站特殊:第一次调用任何 stats 工具时,会自动跑一次 CAS 服务握手把 userId 缓存到会话内存(导出工具自动填);可调 stats_check_login 主动触发。
| 函数 | 功能 | 备注 |
|---|---|---|
set_cookie |
解析并保存登录 cookie 串到本地 ~/.ckcest-mcp/cookie.json |
必须从 DevTools 复制;含 sso 域 CASTGC 即可三站通用 |
check_login |
检查当前登录状态 | 三站任意一个有效就算登录 |
| 函数 | 功能 | 备注 |
|---|---|---|
search_policy |
政策检索(关键词 + 字段 + 类型/机构/年份过滤) | 公开可用,不强求登录 |
advanced_search_policy |
高级/专业检索(TI=... AND PLCTY==... 表达式) |
字段:TI/KY/THEME/CTYPUB/PROPUB/PLCTY/YEAR/FLNBR |
get_policy_detail |
获取政策全文详情 | 需登录 |
suggest_keywords |
关键词联想 | 公开可用 |
analyze_policy |
多维度分面统计(类型/层级/机构/年份等) | 公开可用 |
browse_organizations |
政策发布机构列表 | 需登录 |
browse_subjects |
政策专题列表 / 专题下政策 | 需登录;`action=list |
policy_visual_map |
我国政策发布地图数据 + SVG 条形图 | 需登录;output_svg 可选 |
policy_visual_analysis |
维度可视化(类型/产业/机构/热词) | 需登录;`analysis_type=type |
policy_hot_words |
热词趋势与排序 | 需登录 |
policy_penetration_analysis |
政策穿透分析时间线 | 需登录 |
export_policy_data |
导出政策数据表格(xls) | 需登录 |
export_policy_compilation |
导出政策汇编(excel/word/pdf) | 需登录;默认 word |
export_visual_chart_data |
导出可视化图表数据(xls) | 需登录 |
save_policy_fulltext |
保存政策全文 + 元数据 + 原始 HTML + 附件到本地 | 需登录;include_attachments=True |
| 函数 | 功能 | 备注 |
|---|---|---|
search_projects |
项目检索(按字段/资助/承担/类型/学科/年份) | 字段:全文/项目名称/摘要/关键词/项目编号/项目负责人 |
advanced_search_projects |
高级表达式检索 | 字段:TI/AB/KY/ZT/FUNORG/FUNORGCOU/LDROG/LDRORGCOU/PRJTY/CCC1/YEAR/LANG |
get_project_detail |
获取项目详情 | 需登录 |
suggest_project_keywords |
关键词联想 | 公开可用 |
analyze_projects |
多维度分面(语种/国家/机构/类型/学科/年度) | 需登录 |
visualize_projects |
可视化聚合(13 维度 ×ばつ 7 指标) | 需登录;学科分类 自动解码 CCC1 → 中文 |
export_projects_visual |
导出可视化数据为 Excel(OLE/CFB) | 需登录;站点限制只支持 xls |
| 函数 | 功能 | 备注 |
|---|---|---|
stats_check_login |
主动触发 CAS 握手并返回 {user_id, user} |
第一次用 stats 工具时自动跑,可手动调用确认 |
get_stats_overview |
首页 9 个一级分类(综合/经济/能源/环境...) | 需登录 |
get_stats_index_tree |
数据中心左侧完整指标树(约 480KB) | 需登录;叶子节点 id 即 indexId |
get_stats_filter_options |
年份 / 国家 / 来源 / 计数筛选项 | 需登录 |
search_stats_data |
数据中心查询 | 需登录;indexes 必填 |
export_stats_data |
数据中心结果导出 | 需登录;`fmt=excel |
get_compare_options |
多项对比 4 级筛选下拉项 | 需登录 |
compare_stats |
多项数据对比分析 | 需登录;indexes + countries 必填,years 可选 |
export_compare_stats |
导出对比分析 Excel | 需登录;userId 自动填 |
list_stats_target_fields |
指标概览页领域 / 子领域筛选项 | 需登录 |
list_stats_targets |
指标概览分页查询 | 需登录;POST 接口 |
get_stats_target_detail |
指标详情(等同于 /target/targetOverview/{id}) |
需登录 |
get_stats_target_map |
指标的国家分布地图数据 | 需登录 |
search_stats_hot_words |
热搜词 | 需登录 |
search_stats_suggestion |
搜索框联想 | 需登录 |
| URI | 内容 |
|---|---|
ckcest://policy/fields |
政策库字段编码表 |
ckcest://policy/types |
政策类型枚举 |
ckcest://projects/fields |
项目库字段编码表 |
ckcest://projects/visual-schema |
项目库可视化的可用维度/指标 |
ckcest://status |
当前服务器与登录状态 |
field:全文/标题/关键词/主题(也接受title/keyword/subject/fulltext)policy_type:政策文件/政策法规/公告公报/政策解读/建议提案/政府报告/规划文本org+org_level:发文机构名 +国家级/省级year、sort=相关度|时间- 高级表达式字段编码:
TI/KY/THEME/CTYPUB/PROPUB/PLCTY/YEAR/FLNBR
field:全文/项目名称/摘要/关键词/主题/项目编号/项目负责人- 过滤:
funder+funder_country·leader_org+leader_country·project_type·field_l1·year·language - 字段编码:
TI/AB/KY/ZT/FUNORG/FUNORGCOU/LDROG/LDRORGCOU/PRJTY/CCC1/YEAR/LANG
indexes必填,从get_stats_index_tree取叶子 id- 可选
years/countries/sources,可传 list 或逗号串 - 对比分析:
indexes+countries+ 可选years
# 共享
set_cookie(cookie="CASTGC=...; SESSION=...; ...")
check_login()
# 政策
search_policy(query="人工智能", field="标题", policy_type="政策文件", year="2024")
advanced_search_policy(expression="TI=人工智能 AND CTYPUB==教育部")
analyze_policy(query="碳中和")
policy_visual_map(title="人工智能", output_svg="./map.svg")
policy_visual_analysis(analysis_type="type", begin_year="2024", end_year="2026")
policy_penetration_analysis(title="人工智能")
get_policy_detail(policy_id="<search_policy 返回的 id>")
save_policy_fulltext(policy_id="<id>", include_attachments=True)
export_policy_compilation(policy_type="政策文件", export_format="word")
# 项目
search_projects(query="量子计算", field="项目名称", funder_country="美国", page_size=10)
advanced_search_projects(expression="TI=人工智能 AND FUNORGCOU==中国")
analyze_projects(query="人工智能") # 维度:语种/国家/机构/类型/学科/年度
get_project_detail(project_id="<id>")
visualize_projects(dimension="资助机构国家", measure="项目数量",
express="TI=人工智能")
visualize_projects(dimension="学科分类", measure="项目数量") # 自动解码 CCC1 → 中文
export_projects_visual(dimension="资助机构国家", measure="项目数量",
output_dir="./exports", filename="国家分布.xls")
# 统计
stats_check_login() # 拿到 user_id 缓存到会话
get_stats_overview() # 9 一级分类 + 各分类常用指标
get_stats_index_tree() # 数据中心左侧指标树
get_stats_filter_options() # 年份 / 国家 / 来源筛选项
search_stats_data(indexes=["100000","100865"],
years=["2022","2023"])
export_stats_data(indexes="100000", fmt="excel", # userId 自动填
output_dir="./exports")
list_stats_targets(field_id="10001", page=1, size=10) # 指标概览分页
get_stats_target_detail(target_id="103528") # 等同于 /target/targetOverview/103528
get_stats_target_map(target_id="103528") # 国家分布地图数据
get_compare_options() # 多项对比的下拉选项
compare_stats(indexes=["100000","100001"], # 多项数据对比
countries=["524","535"], years="2022,2023")
export_compare_stats(indexes=..., countries=..., years=...)
ckcest_mcp/
├── server.py # 统一 FastMCP 实例,注册全部 39 工具
├── shared/ # 跨模块(session / auth / exceptions / utils / download / config)
├── policy/ # 政策库(15 工具:search/advanced/detail/suggest/analyze/
│ # navigate/visual/export/save)
├── projects/ # 全球科研项目库(7 工具:search/advanced/detail/suggest/
│ # analyze/visualize/export)
└── stats/ # 全球统计数据库(15 工具:overview/datacenter/compare/target;
# client.py 含自动 CAS 握手 + userId 缓存)
tests/
├── policy/ projects/ stats/ shared/
└── fixtures/ # 真实抓包样本(policy + gsp + stats)
skills/ckcest/SKILL.md # Claude Code 自动加载的工具使用指南
pytest # 51 个离线单测,基于真实抓包样本,不联网- 仅接受用户主动粘贴的 cookie;不存储密码、不做登录自动化、不绕过验证码。
- 仅对站点已有的读取接口发起 GET/POST,不做任何写操作(即便是收藏/反馈也不调)。
- cookie 只保存在本机
~/.ckcest-mcp/,日志中不回显 cookie 值。 - 站点内部限流 / WAF 提示请减小并发与频率(推荐 1 req / 2s)。
MIT