
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 toolsPublic 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...
activate_topintegerdomainvaluelimitintegerqueryvalueregionvalueopendata.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...
domainsarraykeywordsarraylicense_notestringregionsarrayrequires_envarrayspec_yamlstringopendata.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...
base_urlstringdescriptionstringdomainsarrayhomepagestringidstringkeywordsarrayregionsarrayrequires_envarrayserver_namevaluetitlestringtoolsarrayopendata.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.
domainvaluelimitintegerqueryvalueregionvalueopendata.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.
provider_idstringopendata.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.
limitintegeroffsetintegeropendata.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...
provider_idstringopendata.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.
provider_idstringopendata.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...
provider_idsvalueopendata.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...
argumentsobjecttool_namestringSponsors
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.
Details
- Repository
- github.com/derekslinz/meta-data-mcp
- Category
- Data & Analytics
- Package
meta-data-mcp- Transport
- SSE
- Registry
- MCP registry, active