Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CKCEST MCP 服务器

中国工程科技知识中心 (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、fastmcphttpxselectolax

在 Claude Code / Cursor 中配置

{
 "mcpServers": {
 "ckcest": {
 "command": "python",
 "args": ["-m", "ckcest_mcp"]
 }
 }
}

项目自带 skills/ckcest/SKILL.md,包含 39 个工具的使用指南与典型工作流模板,Claude Code 会自动识别加载。


登录:如何获取 cookie

三个子站共用 CKCEST CAS SSO(sso.ckcest.cn)。一个 CASTGC 通行三站:

  1. 在浏览器登录任意一个 *.ckcest.cn 子站
  2. F12 → Application(应用)Cookies
  3. https://sso.ckcest.cn,复制 CASTGC;再选目标子站复制 SESSION / projectlib-securitycas-cookie
  4. set_cookie(cookie="..."),把 DevTools 拷贝出来的 cookie 列表用 ; 拼接整段粘贴

⚠️ 这些 cookie 都是 HttpOnly,JS 读不到,必须从开发者工具复制。 cookie 持久化在 ~/.ckcest-mcp/cookie.json,约 30 天有效。文件含敏感令牌,请注意本机安全。

stats 子站特殊:第一次调用任何 stats 工具时,会自动跑一次 CAS 服务握手把 userId 缓存到会话内存(导出工具自动填);可调 stats_check_login 主动触发。


工具一览

共享(2)

函数 功能 备注
set_cookie 解析并保存登录 cookie 串到本地 ~/.ckcest-mcp/cookie.json 必须从 DevTools 复制;含 sso 域 CASTGC 即可三站通用
check_login 检查当前登录状态 三站任意一个有效就算登录

政策库(15)

函数 功能 备注
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

全球科研项目库(7)

函数 功能 备注
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

全球统计数据库(15)

函数 功能 备注
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 搜索框联想 需登录

MCP Resources

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:发文机构名 + 国家级 / 省级
  • yearsort=相关度|时间
  • 高级表达式字段编码: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

About

面向中国工程科技知识中心政策、科研项目和统计数据库的 MCP 服务器。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /