meta-data-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NVD_API_KEY | No | API key for NVD CVE database (optional, raises rate limits) | |
| OPENAQ_API_KEY | No | API key for OpenAQ (optional, enables authenticated access) | |
| UN_COMTRADE_API_KEY | No | API key for UN Comtrade (optional, enables higher-tier access) | |
| META_DATA_MCP_CONTACT | No | Email used in User-Agent for polite-pool APIs | meta-data-mcp@example.org |
| META_DATA_MCP_PRELOAD | No | Comma-separated plugin ids to activate at startup, or '*' for all (default unset = discovery-only) | |
| OPENSANCTIONS_API_KEY | No | API key for OpenSanctions (optional, enables authenticated access) | |
| COURTLISTENER_API_TOKEN | No | API token for CourtListener (optional, anonymous works at low volumes) | |
| META_DATA_MCP_AUTH_TOKEN | No | Bearer token for SSE transport authentication (optional) | |
| META_DATA_MCP_PROVENANCE | No | Enable provenance entry on tool results; set to truthy value (optional) | |
| META_DATA_MCP_OAUTH_ISSUER | No | Enable OAuth 2.0 Authorization Code + PKCE; set to server's public base URL (optional) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| opendata_providers_findA | 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 |
| opendata_plugins_createA | Autonomously create a new plugin for this meta-data-mcp server from a YAML spec. Use this when |
| opendata_plugins_draftA | Build a validated YAML plugin spec from structured inputs. Use this BEFORE |
| opendata_explain_choiceA | Explain the scoring breakdown for a provider search. Shows how each provider was ranked using token matching, fuzzy matching, semantic similarity, and metadata filters. |
| opendata_domains_listA | List the controlled domain vocabulary used by the provider registry (e.g. 'health', 'legal', 'finance', 'earth-science'). |
| opendata_regions_listA | List the controlled region vocabulary used by the provider registry (e.g. 'us', 'eu', 'uk', 'global'). |
| opendata_providers_describeA | Fetch the full registry entry for a single provider id — title, description, domains, regions, keywords, homepage, license note, required environment variables. |
| opendata_providers_listA | Enumerate all providers in the opendata-mcp registry (paginated, terse). Returns id, title, domains, regions, and any required env vars per provider. |
| opendata_providers_activateA | 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 advertised list, then sends a tools/list_changed notification so the client refetches its catalog. Idempotent. |
| opendata_providers_deactivateA | 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. |
| opendata_providers_list_activeA | 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. |
| opendata_health_snapshotA | 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 are excluded as caller misconfig. The discovery app uses this to paint live health badges next to each search result. |
| opendata_tool_callA | 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 tool_schemas field. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| discover-providers | Ask the LLM to analyze your needs and suggest the best OpenData MCP providers. |
| usecase-financial-research | Analyze economic indicators, exchange rates, and financial markets. |
| usecase-climate-dashboard | Build tools to track weather, climate change, and environmental data. |
| usecase-healthcare-analytics | Track diseases, clinical trials, and public health data. |
| usecase-academic-literature | Search for scholarly articles, preprints, and citations. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| All OpenData Providers | A complete list of all currently registered OpenData MCP providers and their metadata. |
| shape/timeseries/v1 | Time-series shape primitive: line chart + profile panel (min/max/mean/stddev/gaps). Payload: {points: [{date, value, series?}], axes: {x, y}, annotations?}. Loads Plotly from cdn.plot.ly — adopters must allow that origin in the tool's _meta.ui.csp. |
| shape/geofeatures/v1 | GeoFeatures shape primitive (v1): Leaflet map with marker clustering. Payload contract: {features: GeoJSON FeatureCollection | [{lat, lon, attrs}], layers?, facets?}. |
| shape/records/v1 | Records shape primitive: faceted, sortable, paginated table with per-column profile panel. Dependency-free vanilla JS. Payload: {rows, schema?, default_facets?}. |
| app/discovery/v1 | Discovery app: faceted filter, ranked provider list with score breakdown and live health badges, click-to-activate. Wraps opendata_providers_find / list-domains / list-regions / list-active-providers / activate-provider / health-snapshot. Dependency-free vanilla JS. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention; the spec hasn't ratified an app→host shape yet). |
| app/trade-flows/v1 | Bilateral trade-flows app: Sankey (reporter → commodity → partner) + commodity treemap sized by total USD value. Wraps comtrade-trade-data (UN Comtrade). Filters by year, reporter, and commodity. Hover for per-flow detail. D3.js + d3-sankey via CDN. Payload contract: {flows: [{reporter, partner, commodity, value_usd, year?, flow?, ...}]} or raw UN Comtrade {data: [...]} envelope. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention). |
| app/vulnerability/v1 | Vulnerability synthesis app: CVSS v3 radar, KEV exploitation badge, EPSS probability + percentile gauges, and OSV affected-packages table. Wraps nvd-search-cves / nvd-get-cve / nvd-cve-history / cisa-kev-list / cisa-kev-get / osv-get-vulnerability / osv-query-package / epss-scores. Dependency-free vanilla JS + inline SVG. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention). |
| app/entity-graph/v1 | Entity-graph app: force-directed graph of entities and their relationships across four providers — OpenAlex (works/authors), Wikidata (search results), OpenSanctions (persons/companies), Crossref (co-author overlay via crossref-works-by-author). Payload contract: {nodes:[{id,label,type,attrs}], edges:[{source,target,label,weight?}]}. D3.js v7 force layout via CDN; degrades to flat list if D3 blocked. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments}. |
| app/museum/v1 | Museum browser app: lazy-loaded image grid of Met Museum objects with click-to-open provenance / artist / date / medium detail panel and a free-text search box. Wraps met-search + met-get-object. Payload contract: {objects: [{id, title, artist, date, medium, image_url, primary_image_url, url, provenance, tags}, ...], facets?: [...]}. Raw {objectIDs: [...]} from met-search is also accepted — the bundle renders an id-only fallback grid. Dependency-free vanilla JS + CSS grid. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention). |
| app/molecular/v1 | Molecular structure app: 3D viewer for proteins (RCSB PDB) and small molecules (PubChem). Renders via 3Dmol.js (BSD-3, CDN-loaded). Cartoon style for chains, stick+sphere for ligands. Wraps pubchem-compound and pdb-entry. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention). Payload envelope: {structure: {format, data?|url?, identifier}, metadata: {name, title, source, attrs}}. |
| app/news-tone/v1 | News-tone app: per-article tone lollipops on a daily-volume timeline, average-tone overlay, and country co-occurrence chord diagram. Wraps gdelt-article-search (events + countries) and gdelt-volume-timeline (tone overlay). Dependency-free vanilla JS + inline SVG. Payload contract — caller may push either a raw GDELT response (sniffed by shape) or a unified envelope {events:[{date,tone,title,country,url}], country_pairs:[{a,b,weight}], facets:{tone_timeline,volume_timeline,query}}. postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention). |
| app/network-topology/v1 | Network topology app: force-directed ASN graph with peer / upstream / downstream edges. Wraps ripestat-asn-neighbours, ripestat-asn-neighbours-history (RIPE NCC RIPEstat) and bgpview-asn-peers, bgpview-asn-upstreams, bgpview-asn-downstreams (BGPView, currently offline — binding kept for protocol completeness). Payload contract: {asns: [{asn, name?, country?, rank?}], edges: [{source_asn, target_asn, relationship: peer|upstream|downstream, weight?}], focus_asn?}. D3.js v7 via jsdelivr (only the force layout). postMessage protocol — host→app: {type: 'tool_result'|'render', id?, tool?, payload}; app→host: {type: 'tool_call', id, name, arguments} (Phase 3 invention). |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/derekslinz/meta-data-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server