元数据mcp
一个MCP服务器,透明地将用户请求路由到66个开放数据源。
meta-data-mcp 是一个MCP服务器,不是很多。引擎盖下捆着66 *插件*,每个包装一个不同的开放数据API。插件是一个实现细节;从法学硕士的角度来看,有一个服务器、一组工具和一个地方可以问“我在哪里可以找到关于X的数据?”
安装一台服务器。您可以通过内置的路由工具获取所有可发现的数据。
为什么是“元”?
找到开放数据并不是最难的部分——有大量的开放数据可供使用。最困难的部分是找到正确的数据集 *当你需要它的时候*. meta-data-mcp 使其自动:
- LLM电话
opendata-find-providers(“汇率”、“法院裁决”、“里斯本附近的地震”),服务器将查询路由到每个捆绑插件的内部注册表。 - 然后LLM直接调用匹配工具。中间没有设置步骤,没有单独的服务器,没有每个提供商的安装仪式。
这个项目是从 开放数据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客户端 一 meta-data-mcp 进入下 mcpServers 在每一个。支持的客户端:
| 客户端 | 配置文件 |
|---|---|
| 克劳德桌面 | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)/ %APPDATA%/Claude/claude_desktop_config.json (Windows) |
| 克劳德代码 | ~/.claude.json |
| 光标 | ~/.cursor/mcp.json |
| 风帆冲浪 | ~/.codeium/windsurf/mcp_config.json |
| Gemini CLI | ~/.gemini/settings.json |
| LM工作室 | ~/.cache/lm-studio/mcp.json |
每个现有配置都备份到 .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服务器
要使用承载令牌身份验证在自己的域后部署,请参阅 docs/hosting.md。它涵盖了 systemdCaddy/nnginx TLS终止、令牌轮换和威胁模型。
命令行界面
有一个服务器,因此CLI不接受“提供者”参数。每个命令都在一个 meta-data-mcp 服务器。
| 命令 | 它的作用 |
|---|---|
uv run meta-data-mcp run | 运行服务器(默认SSE;pass --transport stdio 克劳德桌面)。 |
uv run meta-data-mcp setup | 在Claude Desktop的配置中注册服务器。 |
uv run meta-data-mcp remove | 从Claude Desktop注销服务器。 |
uv run meta-data-mcp cleanup | 检测并删除旧的多服务器条目(--apply 承诺)。 |
uv run meta-data-mcp inspect | 启动 mcp检查员 针对服务器。 |
uv run meta-data-mcp list | 信息:列出此服务器中捆绑的内部插件。 |
uv run meta-data-mcp info | 信息:显示服务器概述。通过 --plugin 有关插件级别的详细信息。 |
uv run meta-data-mcp version | 打印软件包版本。 |
这 list 命令的存在是为了提高捆绑内容的透明度-- 插件不能单独安装、运行或寻址。它们在服务器启动时自动加载。
服务器工具(LLM称之为)
曾经 meta-data-mcp 当LLM正在运行时,它可以访问两层工具——你不需要向用户提及任何一层:
- 元工具 --下面八个服务器级工具。它们使路由透明:LLM使用它们来查找(或创建)正确的插件,而无需告诉它调用哪个工具。
- 插件工具 --来自66个捆绑插件的约330个工具。它们在启动时合并到同一个命名空间中。LLM在咨询元工具后选择了一个。
元工具
| 工具 | 目的 |
|---|---|
opendata-find-providers | 在插件注册表中进行免费文本搜索。返回已排名的比赛。当没有匹配项时,响应将携带 no_match: true 旗帜和a next_step 提示指向 opendata-draft-spec + opendata-create-plugin. |
opendata-explain-choice | 显示搜索的评分明细(有助于调试路由决策)。 |
opendata-list-domains | 枚举受控域词汇表(health, legal, finance, earth-science, …). |
opendata-list-regions | 枚举受控区域词汇表(us, eu, uk, global, …). |
opendata-describe-provider | 按id列出一个插件的完整元数据——标题、描述、域、地区、关键字、主页、所需的环境变量。 |
opendata-list-providers | 整个注册表的分页转储。 |
opendata-draft-spec | 从结构化输入构建一个经过验证的插件YAML规范。 接受id、base_url、工具定义(名称、端点、参数)和注册表元数据。验证id/工具名称大小写、路径占位符/参数一致性和参数类型,然后发出一个准备输入的YAML字符串 opendata-create-plugin。使用这个,这样LLM就不必交给作者YAML。 |
opendata-create-plugin | 自动创建一个新插件。 采用YAML规范(通常由 opendata-draft-spec),运行生成器,导入新模块,在实时注册表中注册它,并将其工具热加载到正在运行的服务器上。在以下情况下使用此功能 opendata-find-providers 不返回匹配项。 |
自主发现流程
此服务器被称为“meta”的原因是,它代表用户路由数据请求,包括 *创建* 当一条路线还不存在时。全流程:
- 用户要求提供数据,例如“显示最新发布的CVE。”
- LLM电话
opendata-find-providers与查询(cve,vulnerability, …). - 如果注册表有匹配项:LLM选择匹配插件的工具并回答——完成。
- 如果注册表没有匹配项:响应包括
no_match: true和一个next_step解释自主创建路径的字段。法学硕士:
1. 告诉用户它将为该数据源添加覆盖范围。 1. Web搜索公开请求数据的开放API(例如NVD或CIRCL CVE API)。 1. 呼叫 opendata-draft-spec 带有API的id、基本URL和结构化工具定义。服务器验证输入(id大小写、路径占位符一致性、参数类型)并返回一个YAML字符串。 1. 将该YAML传递给 opendata-create-plugin服务器实现插件模块+测试、导入模块、注册 ProviderEntry 并将新工具合并到正在运行的服务器的工具列表中。 1. 调用新可用的工具来回答用户的原始问题。
- 用户得到答案 --并且该插件在会话的剩余时间内仍然可用。
物化插件存在于磁盘上(meta_data_mcp/providers/{id}.py + tests/providers/test_{id}.py);贡献者可以清理它,将其添加到 meta_data_mcp/registry.py 作为静态条目,打开一个PR,使其成为每个已发货安装的一部分。
插件工具
每个捆绑的插件都在一个服务器下贡献自己的工具。它们的名称是唯一的烤肉串案例标识符,通常使用特定于提供商的前缀(例如。 usgs-eq-feed-significant-week, frankfurter-latest, wikipedia-fetch-summary).LLM通过以下方式发现它们 opendata-find-providers 和 opendata-describe-provider你不需要记住它们。
捆绑插件(66)
这是一台服务器内部的内容。你不需要单独安装这些——它们都是附带的。
政府/公民
| 插件 | 来源 | 描述 |
|---|---|---|
au_data_gov | 澳大利亚政府开放数据 | Data.gov.au上的CKAN目录 |
ca_open_gov | 加拿大开放数据 | Open.Canada.ca上的CKAN目录 |
fr_data_gouv | data.gov.fr | 法国政府开放数据平台 |
nl_tweedekamer | Tweed Kamer | 荷兰议会公开数据 |
sg_data_gov | 新加坡开放数据 | Data.gov.sg数据集和集合 |
uk_gov | data.gov.uk | 英国政府CKAN目录 |
us_cary | 卡里镇开放数据 | 北卡罗来纳州卡里镇通过索克拉塔开放数据——公共安全、交通、公用事业、公园 |
us_data_gov | Data.gov | 美国联邦政府开放数据集 |
us_fayetteville | 费耶特维尔市开放数据 | 北卡罗来纳州费耶特维尔市通过Socrata开放数据——公共安全、基础设施、社区服务 |
us_raleigh | 罗利市开放数据 | 罗利市通过苏格拉底开放数据——公共安全、基础设施、公园、规划 |
统计学/经济学
| 插件 | 来源 | 描述 |
|---|---|---|
eu_eurostat | 欧盟统计局 | 欧盟统计 |
global_imf | 国际货币基金组织 | IMF SDMX 2.1统计数据 |
global_dbnomics | DBnomics | 全球经济数据聚合器(国际货币基金组织、世界银行等) |
global_oecd | 经合组织 | 经合组织经济和社会统计(SDMX) |
global_world_bank | 世界银行 | 各国发展指标 |
nl_cbs | 荷兰统计局(CBS) | 荷兰统计数据集(OData v2/v3) |
uk_ons | 英国国家统计局 |
金融/市场
| 插件 | 来源 | 描述 |
|---|---|---|
eu_ecb | 欧洲央行 | 欧洲央行数据门户(SDMX)-外汇、货币、银行 |
global_coingecko | CoinGecko | 加密货币市场数据 |
global_frankfurter | 法兰克福 | 欧洲央行参考汇率(无关键) |
us_sec_edgar | SEC EDGAR | 上市公司文件,XBRL财务 |
us_treasury_fiscal | 美国财政部财政数据 | 联邦债务、每日财政报表、外汇汇率 |
健康与生命科学
| 插件 | 来源 | 描述 |
|---|---|---|
global_disease_sh | disease.sh | neneneba新冠肺炎、流感、疫苗聚集器 |
global_pubchem | NCBI PubChem | 化合物和物质 |
global_rcsb_pdb | RCSB PDB | 3D蛋白质和大分子结构 |
global_who_gho | 世界卫生组织全球卫生组织 | 世界卫生组织全球卫生观测站(OData) |
us_cdc_socrata | 美国疾病控制与预防中心 | 通过Socrata公开数据 |
us_clinicaltrials | ClinicalTrials.gov | NIH/NLM临床试验注册v2 |
us_fda_openfda | openFDA | FDA不良事件、召回、标签 |
us_healthdata_gov | HealthData.gov | 卫生和公众服务部通过Socrata公开健康数据——结果、保险、人口统计、公共卫生 |
地球科学/天气/环境
| 插件 | 来源 | 描述 |
|---|---|---|
eu_copernicus | 哥白尼(欧盟) | 欧洲地球观测和气候数据集 |
global_open_meteo | Open Meteo | 天气预报+历史+空气质量 |
us_ncdeq_gis | NC DEQ环境GIS | NC环境质量部ArcGIS Hub——许可证、空气/水质、危险废物 |
us_noaa_ncei | NOAA NCEI | 气候数据访问服务(无密钥) |
us_noaa_tides | NOAA潮汐和海流 | 水位、潮汐、海流 |
us_usgs_earthquake | 美国地质调查局地震 | 实时和历史地震事件 |
生物多样性/空间/物理学
| 插件 | 来源 | 描述 |
|---|---|---|
cern_opendata | CERN开放数据 | 粒子物理数据集和软件 |
global_gbif | GBIF | 全球生物多样性发生记录 |
global_inaturalist | 自然学家 | 公民科学物种观察 |
global_opensky | OpenSky Network | 实时ADS-B飞行跟踪 |
us_nasa | NASA | APOD,近地天体,火星车照片 |
地理/地图/知识
| 插件 | 来源 | 描述 |
|---|---|---|
global_osm_nominatim | OSM提名 | 地理编码/反向地理编码(1个要求/秒) |
global_overpass | OSM天桥 | 使用天桥QL查询OpenStreetMap |
global_wikidata | 维基数据 | 结构化知识图谱+SPARQL |
global_wikipedia | 维基百科 | 文章摘要、相关内容、页面浏览量 |
us_arcgis_item | ArcGIS REST API | 按ID层、地图、服务、文件获取公共ArcGIS项元数据 |
us_census_geocoder | 美国人口普查地理编码器 | 地址⇄ 坐标⇄ 地理 |
us_nc_onemap | NC OneMap | NC通过ArcGIS REST建立的权威GIS信息交换所——全州地理层 |
过境/航空
| 插件 | 来源 | 描述 |
|---|---|---|
ch_sbb | 瑞士联邦铁路 | 瑞士列车中断和服务数据 |
de_db | 德国联邦铁路公司 | 德国铁路公开数据 |
nl_ndov | NDOV Loket | 荷兰公共交通数据 |
us_faa_nasstatus | FAA NAS状态 | 美国空域状态、延误、地面停靠(XML) |
us_noaa_awc | NOAA航空天气 | METAR、TAF和气象站天气数据 |
学术文献
| 插件 | 来源 | 描述 |
|---|---|---|
global_arxiv | arXiv | 预打印元数据(Atom XML) |
global_crossref | Crossref | DOI元数据、引文、期刊 |
global_europepmc | 欧洲PMC | 生物医学文献+全文XML |
global_openalex | OpenAlex | 开放学术元数据 |
文化/书籍
| 插件 | 来源 | 描述 |
|---|---|---|
global_met_museum 博物馆开放存取(CC0) | ||
global_open_library | 开放图书馆 | 书籍、作者、作品(互联网档案) |
global_unesco_heritage | 联合国教科文组织世界遗产 | 自然、文化和混合世界遗产 |
网络/互联网
| 插件 | 来源 | 描述 |
|---|---|---|
global_bgpview | BGPView | BGP路由数据——ASN信息、前缀、对等体(无密钥) |
global_ripe_stat | RIPE NCC RIPState | 生产级BGP数据(无密钥) |
法律
| 插件 | 来源 | 描述 |
|---|---|---|
nl_rechtspraak | 荷兰法院裁决和判例法(ECLI) | |
uk_legislation | 英国立法.gov.UK | 英国法案、法定文书(XML/Atom) |
us_courtlistener | CourtListener | 美国法院意见、案件目录、法官(自由法律项目) |
us_federal_register | 美国联邦公报 | 日常规则、通知、行政命令 |
可选环境变量
一些捆绑插件接受可选的API密钥以获得更高的速率限制。在shell或Claude Desktop服务器配置中设置这些 env 块:
| 变量 | 插件 | 用途 |
|---|---|---|
COURTLISTENER_API_TOKEN | us_courtlistener | 匿名访问在低容量下工作 |
OPENDATA_MCP_CONTACT | all | 您的电子邮件,用于用户代理中的礼貌池API(Crossref、OpenAlex、OSM、SEC EDGAR)。默认为 opendata-mcp@example.org. |
运输
run 默认为 上海证券交易所 (HTTP,端口8000),因此您可以从MCP检查器或远程客户端进行连接。对于克劳德桌面(哪 setup 命令目标),生成的进程使用 标准:
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路线图
- v1.2--分层发现:
opendata-list-subcategories和opendata-browse-providers用户可以浏览域的工具→ 子类别→ 当他们不知道自己需要什么时。 - v1.3--代理驱动生成: 将路由引擎的no-match路径挂接到一个代理中,该代理找到一个开放的API,生成一个提供程序模块,并自动注册它——在没有用户干预的情况下关闭覆盖范围缺口。
- 使用SSE进行公共托管部署,以便非Claude客户端可以远程使用服务器。
- 用于发现工具的多语言SDK客户端,因此非MCP集成可以获得相同的路由优势。
学分
- 最初由 grll 作为
opendata-mcp. - 围绕单服务器“元mcp”模型进行分叉和重塑。
- 建于 Anthropic的开源MCP规范.
许可证
麻省理工学院——见 许可证.
