Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

国家统计局MCP/Agent数据获取工具

项目概述

本项目是一个基于MCP(Model Context Protocol)协议的国家统计局数据获取服务,为AI Agent提供直接访问国家统计局API的功能。项目同时支持新版API (V2.0)和旧版API,支持获取各种统计数据,包含关键词搜索、分类浏览、时间维度查询等功能。

🆕 新版 API V2.0 (2026.03.27更新)

新版API采用UUID标识符架构,具有以下特点:

  • UUID标识: 使用UUID作为唯一标识符,摒弃旧的层级代码系统
  • 三步查询: 树形导航 → 指标元数据 → 批量取值
  • 时间分片: 同一指标按5年或统计制度变革周期分割,支持更精细的数据管理
  • 批量查询: 支持一次性查询多个指标、多个时间点数据
  • 缓存优化: 内置智能缓存机制,提升查询效率
  • 完整元数据: 包含统计口径说明、单位信息等关键元数据

旧版 API (向后兼容)

  • ✅ 关键词搜索:直接搜索获取指标代码及最新值(推荐用于快速查询)
  • ✅ 树形分类:可浏览和递归获取所有分类/指标体系
  • ✅ 预遍历数据:提供完整的预遍历分类编码体系,可直接读取使用(减少递归调用)
  • ✅ 时间范围:可查询各数据库对应可用时间维度
  • ✅ 标准API:遵循国家统计局接口文档的全部规范
  • ✅ 容错机制:内置重试逻辑、请求延迟、数据验证等功能

环境要求

  • Node.js 18+
  • npm or yarn

安装指南

安装所需依赖,请运行以下命令:

npm install

服务启动

启动MCP服务器:

# 构建项目
npm run build
# 启动服务器(STDIO模式 - 适用于Claude Desktop等)
npm start
# 或启动HTTP服务器(端口模式)
node dist/index.js --port 8080

可用工具

search_statistics(推荐)

通过关键词搜索国家统计局指标和数据。可以快速查找指标及其最新值。

  • 参数:keyword(必需)- 搜索关键词,如 "GDP"、"人均可支配收入" 等
  • 参数:db(可选)- 数据库筛选,空=全部,可选"年度数据"或"季度数据"
  • 参数:page(可选)- 页码,从0开始

get_statistics_categories

获取统计指标分类树,返回国家统计局分类体系(第一层)。

  • 参数:dbcode(必需)- 数据库代码,wdcode(可选)- 维度代码

get_statistics_leaf_categories

递归获取特定数据库的所有叶子指标节点(分类下全部可查询指标)。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_time_options

获取指定数据库可选的时间范围维度。

  • 参数:dbcode(必需)- 数据库代码

get_statistics_data

获取国家统计局特定指标的数据。

  • 参数:zb(必需)- 指标代码,dbcode(必需)- 数据库代码,sj(可选)- 时间范围

batch_get_statistics

批量获取多个统计指标的数据。

  • 参数:queries(必需)- 查询参数数组

🆕 新版 API V2.0 使用指南

核心概念

新版API引入以下关键概念:

标识符说明
pid父节点ID,用于在目录树中向下展开
cid数据集ID,代表一个叶子节点(特定指标+地区+时间段)
indicatorId具体指标ID,代表数据集中的某一列
时间分片同一指标按时间分成多个cid(如2021-2025, 2026-至今)

新版API客户端使用示例

import{NewStatsApiClient,CategoryCode}from'./src/api-client';// 创建客户端实例constclient=newNewStatsApiClient();// 方式一:一步到位查询(推荐)asyncfunctionquickQuery(){constresult=awaitclient.searchAndGet('CPI',// 关键词'居民消费价格指数',// 指标名称(可选)'202601MM',// 起始时间(可选)'202603MM'// 结束时间(可选));console.log('数据集ID:',result.cid);console.log('指标信息:',result.indicator);console.log('数据:',result.data);}// 方式二:分步查询(适合复杂场景)asyncfunctionstepByStep(){// 1. 搜索定位数据集constsearchResults=awaitclient.search({search: 'GDP',pageSize: 10});// 2. 获取树结构(遍历分类)consttreeNodes=awaitclient.getTree({code: CategoryCode.MONTHLY,// 月度数据pid: ''// 根节点});// 3. 获取指标列表constindicators=awaitclient.getIndicators({cid: 'your-cid-here'});// 4. 查询数据constdata=awaitclient.getData({cid: 'your-cid-here',indicatorIds: ['indicator-id-1','indicator-id-2'],das: [{text: '全国',value: '000000000000'}],dts: ['202601MM-202612MM']});}// 方式三:获取所有叶子节点(慎用,耗时)asyncfunctiongetAllLeafs(){constleafs=awaitclient.getAllLeafNodes(CategoryCode.MONTHLY);console.log(`共找到 ${leafs.length} 个数据集`);}

时间编码格式

新版API使用特定的时间编码格式:

类型格式示例
月度YYYYMM + MM202602MM (2026年2月)
季度YYYYQ + SS20254SS (2025年第4季度)
年度YYYY + YY2025YY (2025年)
范围Start-End202601MM-202612MM

分类代码

enumCategoryCode{MONTHLY='1',// 月度数据QUARTERLY='2',// 季度数据YEARLY='3',// 年度数据PROVINCE_QUARTERLY='5',// 分省季度PROVINCE_YEARLY='6',// 分省年度OTHER='7',// 其他/普查}

最佳实践

  1. 优先使用搜索接口: 用 search() 快速定位cid,避免全量遍历树
  2. 处理时间分片: 同一指标可能有多个cid,需按时间拼接数据
  3. 批量请求: getData() 支持多个indicatorIds,一次请求获取多个指标
  4. 关注元数据: 查看indicator的i_mark字段了解统计口径
  5. 利用缓存: 客户端内置缓存,树结构和指标列表会自动缓存

模块介绍

  • src/index.ts: MCP服务器主入口,实现MCP协议规范
  • src/api-client.ts: 国家统计局API交互模块,提供完整的数据获取功能
    • NewStatsApiClient: 新版API V2.0客户端(推荐)
    • StatsApiClient: 旧版API客户端(向后兼容)
  • src/types.ts: 完整的类型定义,包含新旧两版API的数据结构

遵循国家统计局API标准

新版 API V2.0

项目严格实现新版API接口规范:

  • 搜索接口 /external/query 用于关键词搜索和快速定位cid
  • 树遍历接口 /new/queryIndexTreeAsync 用于浏览分类树和获取cid
  • 指标查询接口 /new/queryIndicatorsByCid 用于获取指标列表
  • 数据查询接口 /stream/esData 用于批量获取时间序列数据
  • 内置缓存机制:树结构24小时,指标列表12小时
  • UUID标识符系统和时间分片机制
  • 完整的错误处理和重试逻辑

旧版 API (向后兼容)

项目严格实现旧版API接口规范:

  • 搜索接口 /search.htm 用于关键词查找和快速获取最新值
  • 分类接口 /easyquery.htm 用于遍历指标分类树
  • 数据接口 /easyquery.htm 用于查询历史时间序列
  • 通过 k1 时间戳防缓存参数
  • URL编码处理 wdsdfwds 参数
  • 数据验证与错误处理最佳实践

数据编码对应

  • dbcode.json: 存储数据库代码及其相应的名称
  • wbcode.json: 维度代码定义
  • 预遍历编码数据:
    • npm包中不包含: nbs_data_repository/ (因文件体积较大)
    • 需从GitHub获取: 预先遍历获取的完整的国家统计局分类编码体系(可减少递归调用)
      • 完整数据集在 GitHub 仓库中,请从 GitHub 仓库 下载
      • csnd/, csyd/: 城市统计数据(年度、月度)
      • fsnd/, fsyd/: 分省年度、月度数据
      • hgnd/, hgjd/, hgyd/: 国民经济核算数据(年度、季度、月度)
      • gjnd/, gjyd/, gatnd/, gatyd/: 国际、港澳台统计数据(年度、月度)
      • 每个数据库目录下包含预遍历的分类编码(以JSON文件形式存储):
        • nbs_data_repository/hgjd/A01.json 包含A01分类下的具体指标
        • 文件内容格式: [{"id": "指标ID", "pid": "父级ID", "name": "指标名", "isParent": 是否为父级}]

为AI Agent的使用

本项目专门设计为MCP服务器,可以直接集成到AI Agent系统中,提供国家统计局数据查询能力。Agent可根据使用场景选择最合适的工具:

  • 快速查询:使用 search_statistics 直接通过关键词获取指标和最新值
  • 分类浏览:使用 get_statistics_categories 获取分类体系;对于完整指标体系,可优先参考 nbs_data_repository 目录下的预遍历编码文件
  • 递归获取get_statistics_leaf_categories 用于递归获取所有叶子节点(由于已有预遍历数据,此功能使用频率较低)
  • 深度查询:使用 get_statistics_time_optionsget_statistics_data 获取历史序列数据
  • 预遍历数据nbs_data_repository 目录下已预存各类统计数据库的详细分类编码,可直接读取使用,避免实时API递归调用

开发

进行开发时可使用:

npm run dev

使用建议

对于AI Agent开发者,根据使用方式采用不同策略:

npm 包使用(核心库):

  1. 安装: npm install national-stats-mcp
  2. 功能: 使用 API 工具进行动态数据查询
  3. 使用: search_statisticsget_statistics_data
  4. 递归调用: 当需要完整分类体系时,使用 get_statistics_leaf_categories

GitHub 仓库使用(完整版本):

  1. 克隆完整仓库:
    git clone https://github.com/Ddhjx-code/notional_data.git
  2. 优先使用预遍历数据: 从 nbs_data_repository 目录直接读取已存在的分类编码信息
  3. 快速查询: 使用 search_statistics 工具进行关键词搜索
  4. 实时数据获取: 使用 get_statistics_data 获取具体统计数据
  5. 递归调用: 仅在预遍历数据不满足需求时使用 get_statistics_leaf_categories

预遍历数据优势(当可访问完整数据集时):

  • ✅ 快速访问:无需等待实时API调用和递归遍历
  • ✅ 大数据量:包含国家统计局完整分类体系
  • ✅ 稳定性好:离线数据访问不受API限制
  • ✅ 减少API调用:降低对国家统计局服务器压力

递归API使用场景:

  • 临时获取最新指标(若预遍历数据未及时更新)
  • 特殊查询需求超出预遍历数据范围
  • 在较小环境中仅安装了 npm 包的情况

贡献

欢迎对本代码进行修改。请确保遵循项目的编码标准。

开源协议

MIT License

About

国家统计局数据查询的MCP服务,可用于claude 等支持mcp的AI工具中

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages