关于 meta-data-mcp
meta-data-mcp 是用于查找和查询政府、科学、金融等领域开放数据 API 的单一 MCP 服务。它通过提供方注册表路由请求,并可在没有匹配来源时生成和加载插件。
主要功能
- 01搜索并路由至数据提供方
- 02按需激活提供方工具
- 03动态创建并加载插件
- 04将结果呈现为交互面板
适用场景
- 01查找所需数据集对应的 API
- 02查询多个开放数据领域的数据
- 03为未收录的开放 API 添加支持
MCP 相关
它向 MCP 客户端提供提供方发现、激活、插件创建和数据查询工具。支持 MCP Apps 的宿主可将兼容结果呈现为交互面板。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
meta-data-mcp
一个 MCP 服务,可透明地将用户请求路由到 90 个开放数据源。
meta-data-mcp 是一个 MCP 服务,而不是多个。它在底层打包了 90 个插件,每个插件都封装了一个不同的开放数据 API。插件只是实现细节;从你的 LLM 的角度来看,这里只有一个服务,也只有一个可以询问“在哪里能找到关于 X 的数据?”的地方。
安装一个服务,即可获取所有数据,并通过内置路由工具发现所需数据。
为什么叫“meta”?
寻找开放数据并不难——可用的数据多得惊人。难的是在需要时找到合适的数据集。meta-data-mcp 会自动完成这件事:
- LLM 调用
opendata_providers_find(“外汇汇率”“法院裁决”“里斯本附近的地震”),服务会通过内部注册表查询所有打包的插件,并路由该查询。 - 然后,LLM 直接调用匹配的工具。中间无需设置步骤,无需单独的服务,也无需为每个提供方分别安装。
本项目从 opendata-mcp 分叉而来,并在目录中的插件达到数十个后,围绕单服务理念进行了重新设计。
安装
你需要 uv(一个 Python 包管理器)。
# macOS — install uv via Homebrew so MCP clients can find it
brew install uv
# Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
然后将服务注册到你机器上安装的每个 MCP 客户端:
uv run meta-data-mcp setup
该命令会自动检测你安装了哪些 MCP 客户端,并在每个客户端的 mcpServers 下添加一个 meta-data-mcp 条目。支持的客户端:
| 客户端 | 配置文件 |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%/Claude/claude_desktop_config.json (Windows) |
| Claude Code | ~/.claude.json |
| Cursor | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Gemini CLI | ~/.gemini/settings.json |
| LM Studio | ~/.cache/lm-studio/mcp.json |
写入前,每个现有配置都会备份到 <file>.bak。重启受影响的客户端后,你就会看到一个新服务,其中的发现工具可立即使用;之后可按需激活插件工具。
查看你的机器上检测到/已配置的内容:
uv run meta-data-mcp clients
指定单个客户端(或无论是否检测到,都写入每个受支持的客户端):
uv run meta-data-mcp setup --client claude-code
uv run meta-data-mcp setup --client all
如果你想查看 JSON 片段,但不修改任何配置文件(例如,复制到我们尚未支持的客户端中):
uv run meta-data-mcp setup --print-json
设置 META_DATA_MCP_AUTH_TOKEN 后,--print-json 也会将 SSE 客户端片段(包含真实令牌)输出到 stderr,方便你连接远程客户端。
将 meta-data-mcp 部署为远程 SSE 服务
如需在自有域名后部署并使用 Bearer 令牌身份验证,请参阅 docs/hosting.md。其中介绍了 systemd、Caddy/nginx TLS 终止、令牌轮换和威胁模型。
CLI
这里仅有一个服务,因此 CLI 不接受“provider”参数。每条命令都对唯一的 meta-data-mcp 服务执行操作。
| 命令 | 功能 |
|---|---|
uv run meta-data-mcp run | 运行服务(默认使用 SSE;为 Claude Desktop 传入 --transport stdio)。 |
uv run meta-data-mcp setup | 将服务注册到检测到的 MCP 客户端配置中(或通过 --client 指定一个目标)。 |
uv run meta-data-mcp remove | 从检测到的 MCP 客户端配置中取消注册服务(或通过 --client 指定一个目标)。 |
uv run meta-data-mcp cleanup | 检测并移除旧版多服务条目(使用 --apply 提交更改)。 |
uv run meta-data-mcp inspect | 启动 mcp-inspector 并连接到该服务。 |
uv run meta-data-mcp list | 信息查询:列出此服务捆绑的内部插件。 |
uv run meta-data-mcp info | 信息查询:显示服务概览。传入 --plugin <name> 可查看插件级别的详情。 |
uv run meta-data-mcp version | 输出软件包版本。 |
list 命令用于透明地展示捆绑的内容——插件不能单独安装、运行或寻址。服务启动时会自动加载插件。
服务工具(LLM 调用的工具)
meta-data-mcp 运行后,LLM 可以使用两层工具——你无需向用户提及其中任何一层:
- 元工具——以下 13 个服务级工具。它们让路由过程透明化:LLM 使用这些工具来查找、激活并在需要时创建合适的插件,无需你告知它要调用哪个工具。
- 插件工具——来自 90 个捆绑插件的约 330 个工具。在默认的仅发现模式下,这些工具会在运行时按 provider 激活(或通过
META_DATA_MCP_PRELOAD预加载)。LLM 在查阅元工具后选择其中一个。
元工具
| 工具 | 用途 |
|---|---|
opendata_providers_find | 在插件注册表中进行自由文本搜索。返回按相关性排序的匹配结果。如果没有匹配项,响应会包含 no_match: true 标记,以及指向 opendata_plugins_draft 和 opendata_plugins_create 的 next_step 提示。 |
opendata_explain_choice | 显示搜索的评分明细(有助于调试路由决策)。 |
opendata_domains_list | 列出受控领域词汇表(health、legal、finance、earth-science 等)。 |
opendata_regions_list | 列出受控地区词汇表(us、eu、uk、global 等)。 |
opendata_providers_describe | 按 ID 获取一个插件的完整元数据——标题、描述、领域、地区、关键词、主页和必需的环境变量。 |
opendata_providers_list | 分页列出整个注册表。 |
opendata_providers_activate | 激活一个服务提供方,使其工具在当前会话中可调用。 |
opendata_providers_deactivate | 从当前会话目录中移除已激活服务提供方的工具。 |
opendata_providers_list_active | 列出当前已激活的服务提供方及其各自提供的工具名称。 |
opendata_health_snapshot | 返回各服务提供方的健康评分,用于发现健康徽标和路由上下文。 |
opendata_plugins_draft | 根据结构化输入构建经过验证的插件 YAML 规范。 接收 ID、base_url、工具定义(名称、端点、参数)和注册表元数据。验证 ID 和工具名称的大小写、路径占位符与参数的一致性以及参数类型,然后输出可直接传给 opendata_plugins_create 的 YAML 字符串。使用此工具可避免大模型手动编写 YAML。 |
opendata_plugins_create | 自主创建新插件。 接收 YAML 规范(通常由 opendata_plugins_draft 生成),运行生成器、导入新模块、将其注册到实时注册表,并将其工具热加载到正在运行的服务中。opendata_providers_find 未返回匹配项时,请使用此工具。 |
opendata_tool_call | 通过名称代理调用已激活插件的工具,适用于无法直接调用动态添加工具的环境。 |
自主发现流程
此服务之所以称为“元服务”,是因为它会代表用户路由数据请求——包括在尚无路由时创建路由。完整流程如下:
- 用户请求数据,例如“显示最新发布的 CVE”。
- 大模型使用查询词调用
opendata_providers_find(例如cve、vulnerability等)。 - 如果注册表中有匹配项:大模型激活匹配的服务提供方(调用
opendata_providers_activate,或在 find 中使用activate_top),然后调用插件工具。 - 如果注册表中没有匹配项:响应会包含
no_match: true和一个说明自主创建路径的next_step字段。大模型将:- 告知用户即将为此数据源添加支持。
- 搜索网络,查找可公开访问、提供所需数据的 API(例如 NVD 或 CIRCL CVE API)。
- 使用 API 的 ID、基础 URL 和结构化工具定义调用
opendata_plugins_draft。服务会验证输入(ID 大小写、路径占位符一致性、参数类型),并返回 YAML 字符串。 - 将该 YAML 传给
opendata_plugins_create。服务会生成插件模块和测试、导入模块、在内存中的动态注册表中注册一个ProviderEntry,并将新工具合并到正在运行的服务工具列表中。 - 调用新近可用的工具,回答用户最初的问题。
- 用户获得答案——插件在本次会话剩余时间内仍可使用。
生成的插件保存在磁盘上(meta_data_mcp/providers/{id}.py + tests/providers/test_{id}.py);贡献者可以清理它,将其作为静态条目添加到 meta_data_mcp/registry.py,并提交 PR,使其成为每个发布版本的一部分。
插件工具
每个捆绑插件都会在同一服务器下提供自己的工具。工具名称是唯一的 kebab-case 标识符,通常带有特定提供方前缀(例如 usgs-eq-feed-significant-week、frankfurter-latest、wikipedia-fetch-summary)。大模型通过 opendata_providers_find/opendata_providers_describe 发现这些工具,在需要时激活提供方,并可通过 opendata_providers_list_active 检查会话状态。
自动贡献已创建的插件
opendata_plugins_create 创建新插件时,meta-data-mcp 会向项目提交拉取请求,将其贡献回项目,供其他人使用——目录会随着实际使用不断扩充。
- **征求同意:**如果你的 MCP 客户端支持交互式征询,在打开拉取请求前会显示一个是/否提示词(默认为是)。
- **共享内容:**仅限
contribute/plugin-<id>分支上的三个生成文件(规范、提供方模块、测试桩)。不会触碰你的工作树。 - **选择退出:**设置
META_DATA_MCP_AUTO_CONTRIBUTE=0。 - **目标仓库:**根据你的
origin远程地址推导;可通过META_DATA_MCP_CONTRIBUTE_REPO=owner/repo覆盖。 - 需要使用具有推送权限的
ghCLI 完成身份验证。如果没有,将在本地提交该分支,并在响应中说明如何完成拉取请求。
展示层(MCP Apps)
v2.0 为每个工具结果添加了视觉层。支持 MCP Apps 扩展的宿主(Claude Desktop、MCP Inspector 等)会将绑定的工具结果以内嵌交互面板的形式,在沙箱 iframe 中渲染,而不是显示为 JSON 文本。不支持 MCP Apps 的宿主仍会收到原有的 JSON——此绑定仅为附加功能。
每个支持 MCP Apps 的工具都会通过工具描述中的 _meta.ui.resourceUri 声明其面板。宿主会获取 ui:// 资源(HTML + 捆绑的 JS,单个载荷;除明确列入白名单的 CDN 外,不会发出外部请求),并在 iframe 与自身之间分发双向 postMessage 事件。
形状原语 — ui://meta-data-mcp/shape/<name>/v1
三个可复用的捆绑包涵盖常见的载荷约定。响应符合其中一种形状的工具会自动绑定到相应原语,无需额外操作即可获得丰富的渲染器。
| 形状 | 渲染内容 | 载荷约定 |
|---|---|---|
timeseries/v1 | 折线图 + 通过 Plotly 自动计算的概况(最小值/最大值/平均值/标准差/间隔数量)。 | {points: [{date, value, series?}], axes: {x, y}, annotations?} |
geofeatures/v1 | Leaflet 地图 + 标记聚类(高基数输出使用密度图层)。 | `{features: GeoJSON |
records/v1 | 可分面、可排序、可分页的 HTML 表格 + 每列自动概况(类型推断、top-k、空值率、范围)。 | {rows: [...], schema?, default_facets?} |
自定义应用 — ui://meta-data-mcp/app/<name>/v1
有些数据形状不适合通用原语。v2.0 为它们提供了专用应用:
| 应用 | 驱动的工具 | 可视化 |
|---|---|---|
discovery/v1 | opendata_providers_find、opendata_domains_list、opendata_regions_list、opendata_providers_activate 等。 | 带实时健康状态徽章的分面插件浏览器。 |
vulnerability/v1 | nvd-*、osv-*、epss-*、cisa-kev。 | CVSS 雷达图 + 严重性热力图 + 利用概率仪表盘。 |
entity-graph/v1 | crossref-works-by-author、openalex-search-works、wikidata-search-entities、opensanctions-search。 | 带合著关系叠加层的力导向图(D3)。 |
trade-flows/v1 | comtrade-trade-data。 | 报告方 → 商品 → 伙伴桑基图 + 商品矩形树图。 |
news-tone/v1 | gdelt-article-search、gdelt-volume-timeline。 | 带国家对弦图的数量 + 语气时间线。 |
network-topology/v1 | ripestat-asn-neighbours 等。 | 力导向 ASN 对等连接/上游/下游图。 |
molecular/v1 | pubchem-compound、pdb-entry。 | WebGL 3D 结构查看器(3Dmol.js;蛋白质使用卡通样式,配体使用棒状 + 球体样式)。 |
museum/v1 | met-search、met-search-by-artist、met-get-object。 | 延迟加载的 CSS 网格图片库 + 藏品来源详情面板。 |
构建新应用
现在只需更改一行规范,即可为生成的提供方添加 UI 绑定:
tools:
- name: my-tool
description: ...
endpoint: /foo
response_shape: records # ← binds to the shape primitive
完整参考请见 tools/specs/README.md。CI 会强制执行打包体积预算(≥ 100 KB 时警告,≥ 1 MB 时错误);v2.0 的打包体积从 14 KB(时间序列原语)到 34 KB(漏洞应用)不等,均远低于预算。
可引用的答案
每个工具结果都包含机器可读的引用清单:准确记录哪些上游请求生成了该结果。传输内核会在工具调用期间记录每次 HTTP 交互,并在结果的第一个内容块中添加 _meta["meta-data-mcp/citations"] 条目:
{
"sources": [
{
"provider": "eu-eurostat",
"title": "Eurostat",
"homepage": "https://ec.europa.eu/eurostat",
"license": "Eurostat data is reusable under CC BY 4.0; cite '© European Union, Eurostat'.",
"url": "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/nama_10_gdp?format=JSON&lang=en",
"method": "GET",
"status": 200,
"fetched_at": "2026-07-09T14:02:11.482Z",
"cache_hit": false
}
]
}
这让大模型生成的数据答案可以审计:具体的 URL(包括查询参数)、获取时间、是否来自传输缓存,以及提供方的许可/署名条款。任何人都可以重新请求该 URL 并核验相关声明。
- 绝不泄露机密。 敏感查询参数的值会被替换为
REDACTED——包括精确的拒绝列表(api_key、token、appid等),以及保守的启发式规则(*key、*token、*secret*、*signature*等),还会覆盖预签名云存储 URL 和插件专用的密钥参数。URL 本身的用户信息凭据(https://user:pass@host)也会被隐藏;参数名称会保留,因此使用你自己的凭据仍可重现该 URL。标头不会进入清单。 - 失败的交互也会被引用——处理程序恢复处理的 4xx/5xx,以及内核重试循环吸收的中间 429/5xx 尝试,都属于答案的生成过程;可按
status筛选。(发生错误的工具调用会返回 SDK 的isError结果,其中不包含清单。) - 时间戳准确可信。
fetched_at表示实际获取字节的时间:由缓存提供的交互会报告原始获取时间,并设置cache_hit: true,而非缓存读取时间。 - 默认启用。 设置
META_DATA_MCP_CITATIONS=0即可禁用。它与选择启用的防篡改摘要(META_DATA_MCP_PROVENANCE)互为补充;两者可以同时用于同一结果。
捆绑插件(90 个)
这些就是这一个服务中包含的内容。你无需逐个安装——它们会一并提供。
政府 / 公共事务
| 插件 | 来源 | 描述 |
|---|---|---|
au_data_gov | 澳大利亚政府开放数据 | data.gov.au 上的 CKAN 目录 |
ca_open_gov | 加拿大开放数据 | open.canada.ca 上的 CKAN 目录 |
ch_opendata_swiss | opendata.swiss | 瑞士联邦开放数据目录(CKAN) |
de_govdata | 德国 GovData | 德国联邦开放数据目录(CKAN) |
fr_data_gouv | data.gouv.fr | 法国政府开放数据平台 |
nl_tweedekamer | Tweede Kamer | 荷兰议会开放数据 |
sg_data_gov | 新加坡开放数据 | data.gov.sg 数据集和集合 |
uk_gov | data.gov.uk | 英国政府 CKAN 目录 |
us_cary | 卡里镇开放数据 | 通过 Socrata 提供的北卡罗来纳州卡里镇开放数据 — 公共安全、交通、公用事业、园区 |
us_data_gov | Data.gov | 美国联邦政府开放数据集 |
us_fayetteville | 费耶特维尔市开放数据 | 通过 Socrata 提供的北卡罗来纳州费耶特维尔市开放数据 — 公共安全、基础设施、社区服务 |
us_raleigh | 罗利市开放数据 | 通过 Socrata 提供的罗利市开放数据 — 公共安全、基础设施、园区、规划 |
统计 / 经济
| 插件 | 来源 | 描述 |
|---|---|---|
eu_eurostat | Eurostat | 欧盟统计数据 |
global_imf | 国际货币基金组织 | IMF SDMX 2.1 统计数据 |
global_faostat | FAOSTAT | 联合国粮食及农业统计数据 — 生产、价格、贸易、土地利用、排放 |
global_dbnomics | DBnomics | 全球经济数据聚合平台(IMF、世界银行等) |
global_oecd | OECD | OECD 经济和社会统计数据(SDMX) |
global_world_bank | 世界银行 | 按国家划分的发展指标 |
nl_cbs | 荷兰统计局(CBS) | 荷兰统计数据集(OData v2/v3) |
uk_ons | 英国 ONS | 英国国家统计局 |
金融 / 市场
| 插件 | 来源 | 描述 |
|---|---|---|
eu_ecb | 欧洲中央银行 | ECB 数据门户(SDMX)— 外汇、货币、银行业 |
global_coingecko | CoinGecko | 加密货币市场数据 |
global_frankfurter | Frankfurter | ECB 参考外汇汇率(无需密钥) |
us_sec_edgar | SEC EDGAR | 上市公司文件、XBRL 财务数据 |
us_treasury_fiscal | 美国财政部财政数据 | 联邦债务、每日财政部报表、外汇汇率 |
健康与生命科学
| 插件 | 来源 | 描述 |
|---|---|---|
global_chembl | ChEMBL | EMBL-EBI 分子和生物活性数据库 |
global_disease_sh | disease.sh | COVID-19、流感、疫苗聚合数据 |
global_pubchem | NCBI PubChem | 化学化合物和物质 |
global_rcsb_pdb | RCSB PDB | 3D 蛋白质和大分子结构 |
global_who_gho | WHO GHO | WHO 全球卫生观察站(OData) |
us_cdc_socrata | 美国 CDC | 通过 Socrata 提供的 CDC 开放数据 |
us_clinicaltrials | ClinicalTrials.gov | NIH/NLM 临床试验注册库 v2 |
us_fda_openfda | openFDA | FDA 不良事件、召回、标签 |
us_healthdata_gov | HealthData.gov | 通过 Socrata 提供的 HHS 开放健康数据 — 结局、保险、人口统计、公共卫生 |
地球科学 / 天气 / 环境
| 插件 | 来源 | 描述 |
|---|---|---|
eu_copernicus | Copernicus(欧盟) | 欧洲地球观测和气候数据集 |
global_open_meteo | Open-Meteo | 天气预报 + 历史天气 + 空气质量 |
global_openaq | OpenAQ | 来自参考监测站和传感器的全球空气质量测量数据 |
us_ncdeq_gis | NC DEQ 环境 GIS | NC 环境质量部 ArcGIS Hub — 许可证、空气 / 水质、危险废物 |
us_noaa_ncei | NOAA NCEI | 气候数据访问服务(无需密钥) |
us_noaa_tides | NOAA 潮汐与海流 | 水位、潮汐、海流 |
us_usgs_earthquake | USGS 地震 | 实时和历史地震事件 |
生物多样性 / 太空 / 物理
| 插件 | 来源 | 描述 |
|---|---|---|
cern_opendata | CERN Open Data | 粒子物理数据集和软件 |
global_gbif | GBIF | 全球生物多样性物种出现记录 |
global_inaturalist | iNaturalist | 公民科学物种观测记录 |
global_opensky | OpenSky Network | 实时 ADS-B 航班追踪 |
global_solarsystem | Le Systeme Solaire API | 开放的太阳系天体和星体元数据 |
us_nasa | NASA | APOD、近地天体、火星车照片 |
地理 / 地图 / 知识
| 插件 | 来源 | 描述 |
|---|---|---|
global_mcp_registry | MCP Server Registry | 官方 MCP 服务注册表 — 搜索和列出已发布的 MCP 服务 |
global_osm_nominatim | OSM Nominatim | 地理编码 / 反向地理编码(1 req/sec) |
global_overpass | OSM Overpass | 使用 Overpass QL 查询 OpenStreetMap |
global_rest_countries | REST Countries | 国家参考数据 — 边界、首都、货币、语言、人口 |
global_wikidata | Wikidata | 结构化知识图谱 + SPARQL |
global_wikipedia | Wikipedia | 条目摘要、相关内容、页面浏览量 |
us_arcgis_item | ArcGIS REST API | 按 ID 获取公开 ArcGIS 项目元数据 — 图层、地图、服务、文件 |
us_census_geocoder | US Census Geocoder | 地址 ⇄ 坐标 ⇄ 地理区域 |
us_nc_onemap | NC OneMap | 通过 ArcGIS REST 提供的 NC 权威 GIS 数据中心 — 全州地理图层 |
农业 / 贸易
| 插件 | 来源 | 描述 |
|---|---|---|
global_un_comtrade | UN Comtrade | 国际商品和服务贸易统计数据 |
安全 / 漏洞
| 插件 | 来源 | 描述 |
|---|---|---|
eu_euvd | ENISA EUVD | 最新、已遭利用、严重及筛选后的欧盟漏洞搜索 |
global_circl_cve | CIRCL CVE Search | 最新 CVE、CVE 详情以及供应商 / 产品浏览 |
global_crtsh | crt.sh | 域名和证书的证书透明度搜索 |
global_epss | FIRST.org EPSS | CVE 的漏洞利用预测评分和百分位排名 |
global_nvd_cve | NVD CVE Database | NIST CVE 记录、筛选条件和变更历史 |
global_opensanctions | OpenSanctions | 制裁、政治公众人物、取消资格及相关风险数据集 |
global_osv_dev | OSV.dev | 覆盖各生态系统的开源漏洞公告 |
global_pwned_passwords | Pwned Passwords | 匿名泄露密码 SHA-1 前缀查询 |
global_ssllabs | SSL Labs | 公开 TLS 配置和终端分析 |
us_cisa_kev | CISA KEV | 已知遭利用漏洞目录及修复期限 |
公共交通 / 航空
| 插件 | 来源 | 描述 |
|---|---|---|
ch_sbb | Swiss Federal Railways | 瑞士列车中断和服务数据 |
global_transitous | Transitous | 全球公共交通行程规划 — 出行时间、换乘、行程方案(基于开放 GTFS 的 MOTIS) |
de_db | Deutsche Bahn | 德国铁路开放数据 |
nl_ndov | NDOV Loket | 荷兰公共交通数据 |
nl_ovapi | OVapi | 荷兰实时公共交通 — 实时出发信息、车辆位置、GTFS/GTFS-RT 数据源 |
us_faa_nasstatus | FAA NAS Status | 美国空域状态、延误、地面停飞(XML) |
us_noaa_awc | NOAA Aviation Weather | METAR、TAF 和气象站天气数据 |
学术文献
| 插件 | 来源 | 描述 |
|---|---|---|
global_arxiv | arXiv | 预印本元数据(Atom XML) |
global_crossref | Crossref | DOI 元数据、引文、期刊 |
global_doaj | DOAJ | 开放获取期刊和文章搜索 |
global_europepmc | Europe PMC | 生物医学文献 + 全文 XML |
global_openalex | OpenAlex | 开放学术元数据 |
文化 / 书籍
| 插件 | 来源 | 描述 |
|---|---|---|
global_met_museum | 大都会艺术博物馆 | 大都会艺术博物馆开放访问(CC0) |
global_open_library | Open Library | 书籍、作者、作品(Internet Archive) |
global_unesco_heritage | UNESCO 世界遗产地 | 自然、文化和混合类世界遗产地 |
新闻 / 媒体
| 插件 | 来源 | 描述 |
|---|---|---|
global_gdelt | GDELT 2.0 | 以 100 多种语言监测全球新闻、事件和舆论基调 |
global_hackernews | Hacker News API | 公开的故事、评论、招聘信息和用户资料 |
网络 / 互联网
| 插件 | 来源 | 描述 |
|---|---|---|
global_bgpview | BGPView | BGP 路由数据 — ASN 信息、前缀、对等方(无需密钥) |
global_ripe_stat | RIPE NCC RIPEstat | 生产级 BGP 数据(无需密钥) |
法律
| 插件 | 来源 | 描述 |
|---|---|---|
nl_rechtspraak | 荷兰 Rechtspraak | 荷兰法院裁决和判例法(ECLI) |
uk_legislation | 英国 legislation.gov.uk | 英国法案、法定文书(XML/Atom) |
us_courtlistener | CourtListener | 美国法院意见、案卷、法官(Free Law Project) |
us_federal_register | 美国《联邦公报》 | 每日规则、公告、行政命令 |
可选环境变量
部分捆绑插件支持可选 API 密钥,以提高速率限制。可在 shell 或 Claude Desktop 服务配置的 env 区块中设置:
| 变量 | 插件 | 用途 |
|---|---|---|
COURTLISTENER_API_TOKEN | us_courtlistener | 匿名访问适用于低流量场景 |
NVD_API_KEY | global_nvd_cve | 提高 NVD API 的速率限制 |
META_DATA_MCP_CONTACT | 全部 | 你的电子邮件地址,用于礼貌访问池 API(Crossref、OpenAlex、OSM、SEC EDGAR)的 User-Agent。默认值为 [email protected]。 |
OPENAQ_API_KEY | global_openaq | 启用经过身份验证的 OpenAQ API 访问 |
OPENSANCTIONS_API_KEY | global_opensanctions | 启用经过身份验证的 OpenSanctions API 访问 |
UN_COMTRADE_API_KEY | global_un_comtrade | 启用更高级别的 UN Comtrade API 访问 |
服务运行时标志
| 变量 | 用途 |
|---|---|
META_DATA_MCP_PRELOAD | 以逗号分隔的插件 ID,启动时激活;也可设为 * 以激活全部插件。默认未设置 = 仅发现(约 13 个元工具)。 |
META_DATA_MCP_AUTH_TOKEN | 在 SSE 传输上设置后,访问 /sse 和 /messages 时必须提供 Authorization: Bearer <token>。 |
META_DATA_MCP_OAUTH_ISSUER | 启用 OAuth 2.0 授权码 + PKCE。设为服务器的公开基础 URL(例如 http://localhost:8000)。挂载 /.well-known/oauth-authorization-server、/register、/authorize、/token、/revoke,并在 /oauth/consent 提供同意页面。可与 META_DATA_MCP_AUTH_TOKEN 共存,两种身份验证方法可同时使用。 |
META_DATA_MCP_OAUTH_MAX_CLIENTS | 内存中保留的已注册 OAuth 客户端的最大数量。默认值为 1000。必须为正整数;无效值将回退到默认值。 |
META_DATA_MCP_OAUTH_TOKEN_TTL | OAuth 访问令牌的有效期(秒)。默认值为 3600(1 小时)。必须为正整数;无效值将回退到默认值。 |
META_DATA_MCP_OAUTH_SWEEP_THRESHOLD | 清理并按最早创建优先淘汰前,各内存 OAuth 存储中的最大条目数。默认值为 5000。必须为正整数;无效值将回退到默认值。 |
META_DATA_MCP_CITATIONS | 在工具结果中附带引用清单(参见可引用的回答)。默认开启;设为 0/false/no/off 可禁用。会在第一个内容块的 _meta 中添加 meta-data-mcp/citations 条目,列出每次上游 HTTP 交换(已脱敏的 URL、状态、获取时间戳、缓存处理方式、提供方标题/主页/许可证)。 |
META_DATA_MCP_PROVENANCE | 设为真值(1、true、yes、on)后,会在每个工具调用结果的第一个内容块的 _meta 中添加 meta-data-mcp/provenance 条目,包含 sha256 和 timestamp(ISO 8601 UTC,毫秒精度)。摘要覆盖规范化的 (tool, arguments, content) 封装结构:内容块通过 model_dump(mode="json", by_alias=True, exclude_none=True) 导出并剥除 _meta,再以 sort_keys=True, separators=(",",":"), ensure_ascii=True 进行 JSON 序列化。将工具名称和参数纳入哈希后,审计日志便可区分“工具 A 返回了 X”和“工具 B 返回了 X”。默认关闭;需要防篡改证据时再启用。接收端的完整操作说明见 meta_data_mcp/provenance.py 模块文档字符串。 |
传输方式
run 默认使用 SSE(HTTP,端口 8000),因此你可以从 MCP Inspector 或远程客户端连接。对于 Claude Desktop(setup 命令的目标客户端),启动的进程使用 stdio:
uv run meta-data-mcp run # SSE on 127.0.0.1:8000
uv run meta-data-mcp run --transport stdio # stdio
uv run meta-data-mcp run --host 0.0.0.0 --port 3001 # SSE bound to all interfaces
路线图
已发布
- 分层发现(v2.0): 使用带排序评分的
opendata_providers_find取代最初计划的浏览/列表工具。 - Agent 驱动的生成(v2.1):
opendata_plugins_draft+opendata_plugins_create让模型能够自主弥补覆盖缺口。v2.1.1 通过输入允许列表、路径约束和生成后 AST 验证器进行了强化(封堵了 14 条 RCE/路径遍历/绕过路径)。 - 可自托管的 SSE 部署(v2.1): 受 Bearer 身份验证保护,由 systemd 管理,并通过反向代理提供服务。
- 多语言 SDK(v2.2): 用于通过 MCP SSE 进行发现的 Python 嵌入式客户端(
meta_data_mcp.sdk)和 TypeScript/Node 客户端(@meta-data-mcp/sdk)。 - OAuth 2.0(v2.3): 授权码 + PKCE + 动态客户端注册。适用于 Claude.ai(StreamableHTTP)和 MCP Inspector。提供
/.well-known/oauth-authorization-server、/.well-known/oauth-protected-resource和/.well-known/openid-configuration。 - MCP 注册表提供方(v2.3.4):
mcp_registry_search和mcp_registry_list— 可从 meta-data-mcp 中发现其他 MCP 服务。已列入官方 MCP 注册表和 Smithery。
后续计划
- 将提供方覆盖范围扩展到目前的 90 个以上。
致谢
- 最初由 grll 构思,项目名为
opendata-mcp。 - 基于单服务“meta-mcp”模型进行分叉和重塑。
- 基于 Anthropic 的开源 MCP 规范 构建。
许可证
MIT — 详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。