mcpField
M
meta-data-mcp

meta-data-mcp

本地服务
github.com/derekslinz法律与政务52 天前更新

关于 meta-data-mcp

meta-data-mcp 是用于查找和查询政府、科学、金融等领域开放数据 API 的单一 MCP 服务。它通过提供方注册表路由请求,并可在没有匹配来源时生成和加载插件。

主要功能

  1. 01搜索并路由至数据提供方
  2. 02按需激活提供方工具
  3. 03动态创建并加载插件
  4. 04将结果呈现为交互面板

适用场景

  1. 01查找所需数据集对应的 API
  2. 02查询多个开放数据领域的数据
  3. 03为未收录的开放 API 添加支持

MCP 相关

它向 MCP 客户端提供提供方发现、激活、插件创建和数据查询工具。支持 MCP Apps 的宿主可将兼容结果呈现为交互面板。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"derekslinz-meta-data": {
"command": "uvx",
"args": [
"meta-data-mcp"
]
}
}
}
启动命令uvx meta-data-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimeta-data-mcp2.5.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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 可以使用两层工具——你无需向用户提及其中任何一层:

  1. 元工具——以下 13 个服务级工具。它们让路由过程透明化:LLM 使用这些工具来查找、激活并在需要时创建合适的插件,无需你告知它要调用哪个工具。
  2. 插件工具——来自 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通过名称代理调用已激活插件的工具,适用于无法直接调用动态添加工具的环境。
自主发现流程

此服务之所以称为“元服务”,是因为它会代表用户路由数据请求——包括在尚无路由时创建路由。完整流程如下:

  1. 用户请求数据,例如“显示最新发布的 CVE”。
  2. 大模型使用查询词调用 opendata_providers_find(例如 cve、vulnerability 等)。
  3. 如果注册表中有匹配项:大模型激活匹配的服务提供方(调用 opendata_providers_activate,或在 find 中使用 activate_top),然后调用插件工具。
  4. 如果注册表中没有匹配项:响应会包含 no_match: true 和一个说明自主创建路径的 next_step 字段。大模型将:
    1. 告知用户即将为此数据源添加支持。
    2. 搜索网络,查找可公开访问、提供所需数据的 API(例如 NVD 或 CIRCL CVE API)。
    3. 使用 API 的 ID、基础 URL 和结构化工具定义调用 opendata_plugins_draft。服务会验证输入(ID 大小写、路径占位符一致性、参数类型),并返回 YAML 字符串。
    4. 将该 YAML 传给 opendata_plugins_create。服务会生成插件模块和测试、导入模块、在内存中的动态注册表中注册一个 ProviderEntry,并将新工具合并到正在运行的服务工具列表中。
    5. 调用新近可用的工具,回答用户最初的问题。
  5. 用户获得答案——插件在本次会话剩余时间内仍可使用。

生成的插件保存在磁盘上(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 覆盖。
  • 需要使用具有推送权限的 gh CLI 完成身份验证。如果没有,将在本地提交该分支,并在响应中说明如何完成拉取请求。

展示层(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/v1Leaflet 地图 + 标记聚类(高基数输出使用密度图层)。`{features: GeoJSON
records/v1可分面、可排序、可分页的 HTML 表格 + 每列自动概况(类型推断、top-k、空值率、范围)。{rows: [...], schema?, default_facets?}
自定义应用 — ui://meta-data-mcp/app/<name>/v1

有些数据形状不适合通用原语。v2.0 为它们提供了专用应用:

应用驱动的工具可视化
discovery/v1opendata_providers_find、opendata_domains_list、opendata_regions_list、opendata_providers_activate 等。带实时健康状态徽章的分面插件浏览器。
vulnerability/v1nvd-*、osv-*、epss-*、cisa-kev。CVSS 雷达图 + 严重性热力图 + 利用概率仪表盘。
entity-graph/v1crossref-works-by-author、openalex-search-works、wikidata-search-entities、opensanctions-search。带合著关系叠加层的力导向图(D3)。
trade-flows/v1comtrade-trade-data。报告方 → 商品 → 伙伴桑基图 + 商品矩形树图。
news-tone/v1gdelt-article-search、gdelt-volume-timeline。带国家对弦图的数量 + 语气时间线。
network-topology/v1ripestat-asn-neighbours 等。力导向 ASN 对等连接/上游/下游图。
molecular/v1pubchem-compound、pdb-entry。WebGL 3D 结构查看器(3Dmol.js;蛋白质使用卡通样式,配体使用棒状 + 球体样式)。
museum/v1met-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_swissopendata.swiss瑞士联邦开放数据目录(CKAN)
de_govdata德国 GovData德国联邦开放数据目录(CKAN)
fr_data_gouvdata.gouv.fr法国政府开放数据平台
nl_tweedekamerTweede Kamer荷兰议会开放数据
sg_data_gov新加坡开放数据data.gov.sg 数据集和集合
uk_govdata.gov.uk英国政府 CKAN 目录
us_cary卡里镇开放数据通过 Socrata 提供的北卡罗来纳州卡里镇开放数据 — 公共安全、交通、公用事业、园区
us_data_govData.gov美国联邦政府开放数据集
us_fayetteville费耶特维尔市开放数据通过 Socrata 提供的北卡罗来纳州费耶特维尔市开放数据 — 公共安全、基础设施、社区服务
us_raleigh罗利市开放数据通过 Socrata 提供的罗利市开放数据 — 公共安全、基础设施、园区、规划
统计 / 经济
插件来源描述
eu_eurostatEurostat欧盟统计数据
global_imf国际货币基金组织IMF SDMX 2.1 统计数据
global_faostatFAOSTAT联合国粮食及农业统计数据 — 生产、价格、贸易、土地利用、排放
global_dbnomicsDBnomics全球经济数据聚合平台(IMF、世界银行等)
global_oecdOECDOECD 经济和社会统计数据(SDMX)
global_world_bank世界银行按国家划分的发展指标
nl_cbs荷兰统计局(CBS)荷兰统计数据集(OData v2/v3)
uk_ons英国 ONS英国国家统计局
金融 / 市场
插件来源描述
eu_ecb欧洲中央银行ECB 数据门户(SDMX)— 外汇、货币、银行业
global_coingeckoCoinGecko加密货币市场数据
global_frankfurterFrankfurterECB 参考外汇汇率(无需密钥)
us_sec_edgarSEC EDGAR上市公司文件、XBRL 财务数据
us_treasury_fiscal美国财政部财政数据联邦债务、每日财政部报表、外汇汇率
健康与生命科学
插件来源描述
global_chemblChEMBLEMBL-EBI 分子和生物活性数据库
global_disease_shdisease.shCOVID-19、流感、疫苗聚合数据
global_pubchemNCBI PubChem化学化合物和物质
global_rcsb_pdbRCSB PDB3D 蛋白质和大分子结构
global_who_ghoWHO GHOWHO 全球卫生观察站(OData)
us_cdc_socrata美国 CDC通过 Socrata 提供的 CDC 开放数据
us_clinicaltrialsClinicalTrials.govNIH/NLM 临床试验注册库 v2
us_fda_openfdaopenFDAFDA 不良事件、召回、标签
us_healthdata_govHealthData.gov通过 Socrata 提供的 HHS 开放健康数据 — 结局、保险、人口统计、公共卫生
地球科学 / 天气 / 环境
插件来源描述
eu_copernicusCopernicus(欧盟)欧洲地球观测和气候数据集
global_open_meteoOpen-Meteo天气预报 + 历史天气 + 空气质量
global_openaqOpenAQ来自参考监测站和传感器的全球空气质量测量数据
us_ncdeq_gisNC DEQ 环境 GISNC 环境质量部 ArcGIS Hub — 许可证、空气 / 水质、危险废物
us_noaa_nceiNOAA NCEI气候数据访问服务(无需密钥)
us_noaa_tidesNOAA 潮汐与海流水位、潮汐、海流
us_usgs_earthquakeUSGS 地震实时和历史地震事件
生物多样性 / 太空 / 物理
插件来源描述
cern_opendataCERN Open Data粒子物理数据集和软件
global_gbifGBIF全球生物多样性物种出现记录
global_inaturalistiNaturalist公民科学物种观测记录
global_openskyOpenSky Network实时 ADS-B 航班追踪
global_solarsystemLe Systeme Solaire API开放的太阳系天体和星体元数据
us_nasaNASAAPOD、近地天体、火星车照片
地理 / 地图 / 知识
插件来源描述
global_mcp_registryMCP Server Registry官方 MCP 服务注册表 — 搜索和列出已发布的 MCP 服务
global_osm_nominatimOSM Nominatim地理编码 / 反向地理编码(1 req/sec)
global_overpassOSM Overpass使用 Overpass QL 查询 OpenStreetMap
global_rest_countriesREST Countries国家参考数据 — 边界、首都、货币、语言、人口
global_wikidataWikidata结构化知识图谱 + SPARQL
global_wikipediaWikipedia条目摘要、相关内容、页面浏览量
us_arcgis_itemArcGIS REST API按 ID 获取公开 ArcGIS 项目元数据 — 图层、地图、服务、文件
us_census_geocoderUS Census Geocoder地址 ⇄ 坐标 ⇄ 地理区域
us_nc_onemapNC OneMap通过 ArcGIS REST 提供的 NC 权威 GIS 数据中心 — 全州地理图层
农业 / 贸易
插件来源描述
global_un_comtradeUN Comtrade国际商品和服务贸易统计数据
安全 / 漏洞
插件来源描述
eu_euvdENISA EUVD最新、已遭利用、严重及筛选后的欧盟漏洞搜索
global_circl_cveCIRCL CVE Search最新 CVE、CVE 详情以及供应商 / 产品浏览
global_crtshcrt.sh域名和证书的证书透明度搜索
global_epssFIRST.org EPSSCVE 的漏洞利用预测评分和百分位排名
global_nvd_cveNVD CVE DatabaseNIST CVE 记录、筛选条件和变更历史
global_opensanctionsOpenSanctions制裁、政治公众人物、取消资格及相关风险数据集
global_osv_devOSV.dev覆盖各生态系统的开源漏洞公告
global_pwned_passwordsPwned Passwords匿名泄露密码 SHA-1 前缀查询
global_ssllabsSSL Labs公开 TLS 配置和终端分析
us_cisa_kevCISA KEV已知遭利用漏洞目录及修复期限
公共交通 / 航空
插件来源描述
ch_sbbSwiss Federal Railways瑞士列车中断和服务数据
global_transitousTransitous全球公共交通行程规划 — 出行时间、换乘、行程方案(基于开放 GTFS 的 MOTIS)
de_dbDeutsche Bahn德国铁路开放数据
nl_ndovNDOV Loket荷兰公共交通数据
nl_ovapiOVapi荷兰实时公共交通 — 实时出发信息、车辆位置、GTFS/GTFS-RT 数据源
us_faa_nasstatusFAA NAS Status美国空域状态、延误、地面停飞(XML)
us_noaa_awcNOAA Aviation WeatherMETAR、TAF 和气象站天气数据
学术文献
插件来源描述
global_arxivarXiv预印本元数据(Atom XML)
global_crossrefCrossrefDOI 元数据、引文、期刊
global_doajDOAJ开放获取期刊和文章搜索
global_europepmcEurope PMC生物医学文献 + 全文 XML
global_openalexOpenAlex开放学术元数据
文化 / 书籍
插件来源描述
global_met_museum大都会艺术博物馆大都会艺术博物馆开放访问(CC0)
global_open_libraryOpen Library书籍、作者、作品(Internet Archive)
global_unesco_heritageUNESCO 世界遗产地自然、文化和混合类世界遗产地
新闻 / 媒体
插件来源描述
global_gdeltGDELT 2.0以 100 多种语言监测全球新闻、事件和舆论基调
global_hackernewsHacker News API公开的故事、评论、招聘信息和用户资料
网络 / 互联网
插件来源描述
global_bgpviewBGPViewBGP 路由数据 — ASN 信息、前缀、对等方(无需密钥)
global_ripe_statRIPE NCC RIPEstat生产级 BGP 数据(无需密钥)
法律
插件来源描述
nl_rechtspraak荷兰 Rechtspraak荷兰法院裁决和判例法(ECLI)
uk_legislation英国 legislation.gov.uk英国法案、法定文书(XML/Atom)
us_courtlistenerCourtListener美国法院意见、案卷、法官(Free Law Project)
us_federal_register美国《联邦公报》每日规则、公告、行政命令

可选环境变量

部分捆绑插件支持可选 API 密钥,以提高速率限制。可在 shell 或 Claude Desktop 服务配置的 env 区块中设置:

变量插件用途
COURTLISTENER_API_TOKENus_courtlistener匿名访问适用于低流量场景
NVD_API_KEYglobal_nvd_cve提高 NVD API 的速率限制
META_DATA_MCP_CONTACT全部你的电子邮件地址,用于礼貌访问池 API(Crossref、OpenAlex、OSM、SEC EDGAR)的 User-Agent。默认值为 [email protected]。
OPENAQ_API_KEYglobal_openaq启用经过身份验证的 OpenAQ API 访问
OPENSANCTIONS_API_KEYglobal_opensanctions启用经过身份验证的 OpenSanctions API 访问
UN_COMTRADE_API_KEYglobal_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_TTLOAuth 访问令牌的有效期(秒)。默认值为 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 个以上。

致谢

许可证

MIT — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。