Skip to main content
Glama
derekslinz

meta-data-mcp

by derekslinz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NVD_API_KEYNoAPI key for NVD CVE database (optional, raises rate limits)
OPENAQ_API_KEYNoAPI key for OpenAQ (optional, enables authenticated access)
UN_COMTRADE_API_KEYNoAPI key for UN Comtrade (optional, enables higher-tier access)
META_DATA_MCP_CONTACTNoEmail used in User-Agent for polite-pool APIsmeta-data-mcp@example.org
META_DATA_MCP_PRELOADNoComma-separated plugin ids to activate at startup, or '*' for all (default unset = discovery-only)
OPENSANCTIONS_API_KEYNoAPI key for OpenSanctions (optional, enables authenticated access)
COURTLISTENER_API_TOKENNoAPI token for CourtListener (optional, anonymous works at low volumes)
META_DATA_MCP_AUTH_TOKENNoBearer token for SSE transport authentication (optional)
META_DATA_MCP_PROVENANCENoEnable provenance entry on tool results; set to truthy value (optional)
META_DATA_MCP_OAUTH_ISSUERNoEnable OAuth 2.0 Authorization Code + PKCE; set to server's public base URL (optional)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 next_step field that explains how to autonomously create one via opendata_plugins_create.

opendata_plugins_createA

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 is materialized to disk, imported, registered in the live registry, and its tools become available immediately.

opendata_plugins_draftA

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 to feed into opendata_plugins_create.

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

NameDescription
discover-providersAsk the LLM to analyze your needs and suggest the best OpenData MCP providers.
usecase-financial-researchAnalyze economic indicators, exchange rates, and financial markets.
usecase-climate-dashboardBuild tools to track weather, climate change, and environmental data.
usecase-healthcare-analyticsTrack diseases, clinical trials, and public health data.
usecase-academic-literatureSearch for scholarly articles, preprints, and citations.

Resources

Contextual data attached and managed by the client

NameDescription
All OpenData ProvidersA complete list of all currently registered OpenData MCP providers and their metadata.
shape/timeseries/v1Time-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/v1GeoFeatures shape primitive (v1): Leaflet map with marker clustering. Payload contract: {features: GeoJSON FeatureCollection | [{lat, lon, attrs}], layers?, facets?}.
shape/records/v1Records shape primitive: faceted, sortable, paginated table with per-column profile panel. Dependency-free vanilla JS. Payload: {rows, schema?, default_facets?}.
app/discovery/v1Discovery 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/v1Bilateral 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/v1Vulnerability 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/v1Entity-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/v1Museum 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/v1Molecular 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/v1News-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/v1Network 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

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