derekslinz avatar

Meta Data Mcp

derekslinz/meta-data-mcp

This is a single MCP server that bundles 83 open data API plugins and routes your requests automatically. Instead of installing dozens of separate servers, you get one that exposes discovery tools like opendata.providers.find to search the registry by domain, region, or keyword, then activates the matching provider on demand. It covers government datasets, finance, earth science, health, and legal sources. When no plugin exists for your query, the LLM can draft a YAML spec with opendata.plugins.draft and hot-load a new plugin via opendata.plugins.create without restarting the server. Install once with uv, restart Claude Desktop or Cursor, and ask for earthquake data or court rulings without knowing which API to call.

GitHub stars
3
tools
13
transport
SSE
last updated
May 22, 2026

Tools

13 tools

Public tool metadata for what this MCP can expose to an agent.

opendata.providers.findSearch the meta-data-mcp plugin registry. Returns plugins that match a free-text query and/or domain/region filters. Use this FIRST when you don't know which plugin can answer a question. If no plugin matches, the response includes a `next_step` field that explains how to auto...5 params

Search the meta-data-mcp plugin registry. Returns plugins that match a free-text query and/or domain/region filters. Use this FIRST when you don't know which plugin can answer a question. If no plugin matches, the response includes a `next_step` field that explains how to auto...

Parameters* required
activate_topinteger
If > 0, automatically activate the top-N matching providers so their tools become callable in this session. Default 0 means find-providers is read-only — you must call opendata.providers.activate e...default: 0
domainvalue
Restrict to providers tagged with this domain (e.g. 'health', 'legal', 'finance'). Use opendata.domains.list to enumerate.
limitinteger
Maximum number of providers to return (1-100, default 20).default: 20
queryvalue
Free-text query. Matched against id, title, description, keywords, domains, regions. Tokens with exact keyword hits score higher.
regionvalue
Restrict to providers tagged with this region (e.g. 'us', 'eu', 'uk', 'global'). Use opendata.regions.list to enumerate.
opendata.plugins.createAutonomously create a new plugin for this meta-data-mcp server from a YAML spec. Use this when `opendata.providers.find` returned no match. Recommended flow: first call `opendata.plugins.draft` with structured fields to get a valid YAML spec, then pass it here. The new plugin...6 params

Autonomously create a new plugin for this meta-data-mcp server from a YAML spec. Use this when `opendata.providers.find` returned no match. Recommended flow: first call `opendata.plugins.draft` with structured fields to get a valid YAML spec, then pass it here. The new plugin...

Parameters* required
domainsarray
Registry domains for the new plugin (e.g. ['security']). Use `opendata.domains.list` to see existing values, but new domain names are allowed.
keywordsarray
Search keywords that should match this plugin.
license_notestring
Optional short licensing/attribution note for the data source.default:
regionsarray
Registry regions for the new plugin (e.g. ['global', 'us']). Use `opendata.regions.list` to see existing values.
requires_envarray
Names of any environment variables the new plugin needs (e.g. API keys). Leave empty for keyless APIs.
spec_yamlstring
Full YAML spec for the new plugin. Must include id, server_name, base_url, description, homepage, and at least one tool. See tools/specs/example_weather_alert.yaml for the canonical form.
opendata.plugins.draftBuild a validated YAML plugin spec from structured inputs. Use this BEFORE `opendata.plugins.create` to avoid hand-writing YAML. Validates id format, kebab-case tool names, path-placeholder/param consistency, parameter types, and response format. Returns the YAML string ready...11 params

Build a validated YAML plugin spec from structured inputs. Use this BEFORE `opendata.plugins.create` to avoid hand-writing YAML. Validates id format, kebab-case tool names, path-placeholder/param consistency, parameter types, and response format. Returns the YAML string ready...

Parameters* required
base_urlstring
API base URL with no trailing slash (e.g. 'https://services.nvd.nist.gov').
descriptionstring
One- or two-sentence description of what this plugin covers.
domainsarray
Registry domains (e.g. ['security', 'government']).
homepagestring
URL to the API documentation or provider homepage.
idstring
Plugin id in snake_case, e.g. 'global_nvd_cve'. Becomes the Python module name under meta_data_mcp/providers/.
keywordsarray
Search keywords that should match this plugin in opendata.providers.find.
regionsarray
Registry regions (e.g. ['global', 'us']).
requires_envarray
Names of environment variables this API needs (e.g. ['NVD_API_KEY']).
server_namevalue
kebab-case server name for the plugin registry entry. Defaults to id with underscores replaced by hyphens.
titlestring
Human-readable title for the registry entry.
toolsarray
At least one tool definition. Each becomes one MCP tool on the server.
opendata.explain.choiceExplain the scoring breakdown for a provider search. Shows how each provider was ranked using token matching, fuzzy matching, semantic similarity, and metadata filters.4 params

Explain the scoring breakdown for a provider search. Shows how each provider was ranked using token matching, fuzzy matching, semantic similarity, and metadata filters.

Parameters* required
domainvalue
Domain filter used in search.
limitinteger
Number of top providers to explain (1-20, default 5).default: 5
queryvalue
The original search query to explain scoring for.
regionvalue
Region filter used in search.
opendata.domains.listList the controlled domain vocabulary used by the provider registry (e.g. 'health', 'legal', 'finance', 'earth-science').

List the controlled domain vocabulary used by the provider registry (e.g. 'health', 'legal', 'finance', 'earth-science').

No parameter schema in public metadata yet.

opendata.regions.listList the controlled region vocabulary used by the provider registry (e.g. 'us', 'eu', 'uk', 'global').

List the controlled region vocabulary used by the provider registry (e.g. 'us', 'eu', 'uk', 'global').

No parameter schema in public metadata yet.

opendata.providers.describeFetch the full registry entry for a single provider id — title, description, domains, regions, keywords, homepage, license note, required environment variables.1 params

Fetch the full registry entry for a single provider id — title, description, domains, regions, keywords, homepage, license note, required environment variables.

Parameters* required
provider_idstring
The provider id (e.g. 'us_nasa', 'global_world_bank', 'us_courtlistener').
opendata.providers.listEnumerate all providers in the opendata-mcp registry (paginated, terse). Returns id, title, domains, regions, and any required env vars per provider.2 params

Enumerate all providers in the opendata-mcp registry (paginated, terse). Returns id, title, domains, regions, and any required env vars per provider.

Parameters* required
limitinteger
Maximum number of entries to return (1-200, default 50).default: 50
offsetinteger
Number of entries to skip (default 0).default: 0
opendata.providers.activateActivate a registered provider so its tools become callable in this session. By default the server starts in discovery-only mode — only meta tools (find-providers, list-providers, etc.) are advertised. Activation imports the plugin module and merges its tools into the advertis...1 params

Activate a registered provider so its tools become callable in this session. By default the server starts in discovery-only mode — only meta tools (find-providers, list-providers, etc.) are advertised. Activation imports the plugin module and merges its tools into the advertis...

Parameters* required
provider_idstring
Provider id to activate (e.g. 'us_data_gov' or 'us-data-gov'). Use opendata.providers.find or opendata.providers.list to discover available ids.
opendata.providers.deactivateRemove a previously-activated provider's tools from the session's advertised list. The Python module remains imported (Python caches modules) but its tools no longer appear in tools/list. A tools/list_changed notification is sent so the client refetches.1 params

Remove a previously-activated provider's tools from the session's advertised list. The Python module remains imported (Python caches modules) but its tools no longer appear in tools/list. A tools/list_changed notification is sent so the client refetches.

Parameters* required
provider_idstring
Provider id to deactivate.
opendata.providers.list_activeList the providers currently activated in this session, along with the tool names each contributes. Useful for inspecting why a particular tool is (or isn't) advertised.

List the providers currently activated in this session, along with the tool names each contributes. Useful for inspecting why a particular tool is (or isn't) advertised.

No parameter schema in public metadata yet.

opendata.health.snapshotSnapshot the in-memory provider health registry. Returns a score in [0.0, 1.0] for each requested provider (or every registered provider when called without arguments). Health degrades on recent 5xx / 429 / network failures and decays back toward 1.0 over ~5 minutes; 401/403 a...1 params

Snapshot the in-memory provider health registry. Returns a score in [0.0, 1.0] for each requested provider (or every registered provider when called without arguments). Health degrades on recent 5xx / 429 / network failures and decays back toward 1.0 over ~5 minutes; 401/403 a...

Parameters* required
provider_idsvalue
Optional list of provider ids to query. When omitted, returns snapshots for every provider in the static + dynamic registry. Providers with no recorded failures default to a fully-healthy baseline...
opendata.tool.callProxy any activated plugin tool by name. Use this when dynamically activated tools aren't directly callable in your environment. First activate the provider with opendata.providers.activate, then call this tool with the tool name and arguments from the activation response's to...2 params

Proxy any activated plugin tool by name. Use this when dynamically activated tools aren't directly callable in your environment. First activate the provider with opendata.providers.activate, then call this tool with the tool name and arguments from the activation response's to...

Parameters* required
argumentsobject
Arguments to pass to the tool, matching its inputSchema.
tool_namestring
Exact name of an activated plugin tool to call (e.g. 'nvd-search-cves'). Use opendata.providers.activate first, then pass the tool name from its 'tools' list.

Sponsors

Readme

meta-data-mcp

A single MCP server that transparently routes user requests to 90 open-data sources.

meta-data-mcp is one MCP server — not many. Under the hood it bundles 90 plugins, each wrapping a different open-data API. The plugins are an implementation detail; from your LLM's perspective there is one server and one place to ask "where can I find data about X?"

You install one server. You get all the data, discoverable through built-in routing tools.

Why "meta"?

Finding open data isn't the hard part — there's an absurd amount of it available. The hard part is finding the right dataset when you need it. meta-data-mcp makes that automatic:

  • The LLM calls opendata_providers_find ("FX rates", "court rulings", "earthquakes near Lisbon") and the server routes the query against an internal registry of every bundled plugin.
  • The LLM then calls the matching tool directly. No setup step in between, no separate servers, no per-provider install rituals.

View the full README on GitHub

Details

Repository
github.com/derekslinz/meta-data-mcp
Category
Data & Analytics
Package
meta-data-mcp
Transport
SSE
Registry
MCP registry, active

Related Data & Analytics MCP servers

View all
1kaiser-data avatarKitsune Mcpkaiser-data/kitsune-mcpHot-reload for MCP servers + mount any community server mid-session, Docker optional. No restarts.3stars
2mickey-ichi avatarGraph Excelmickey-ichi/graph-excel-mcpRead and edit Excel workbooks on SharePoint/OneDrive via Microsoft Graph, with verified writes.3stars
3dsbissett avatarExcel Webview2 Mcpdsbissett/excel-webview2-mcpMCP server for Excel add-ins via WebView2 CDP2stars
4pipeworx-io avatarFootball Datapipeworx-io/mcp-football-dataFootball-Data.org MCP — soccer competitions, matches, standings2stars
5izyuusya avatarJapan Data Mcpizyuusya/japan-data-mcp日本の公的データ(統計・法人・不動産)にAIからアクセスするMCPサーバー。e-Stat統計API・法人番号Web-API・不動産情報ライブラリAPIの3API統合。全国約1,700市区町村対応。2stars
6ogasurfproject-jpg avatarHORIZON SHIELD Construction Cost Data: JCCDB (Japan) and USCCDB (United States)ogasurfproject-jpg/horizon-shieldPublic construction cost data for Japan and the U.S., each row with its source URL and licence.2stars