cyanheads avatar

Openfda Mcp Server

cyanheads/openfda-mcp-server

Connects Claude to the openFDA API with nine tools spanning adverse events, recalls, drug labels, device clearances, and NDC lookups. You can search adverse event reports across drugs, food, and devices, pull complete FDA package inserts, query 510(k) clearances and PMA approvals, or aggregate counts across any field in the openFDA dataset. Built on a framework that handles auth, storage backends, and retry logic, so it runs locally over stdio or as a public HTTP endpoint. Useful when you need to cross-reference drug safety signals, check recall history, verify NDC codes, or pull official labeling for clinical or regulatory work. Supports up to 1000 results per query with Elasticsearch syntax for filtering.

GitHub stars
4
tools
14
transport
STDIO, HTTP
env vars
16
last updated
Nov 11, 2026

Install

From registry metadata
$ npx add-mcp https://openfda.caseyjhand.com/mcp --name openfda

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http openfda https://openfda.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 14 tools

Verified live against the running server on Nov 6, 2026.

openfda_search_adverse_eventsSearch adverse event reports across drugs, food, and devices. Use to investigate safety signals, find reports for a specific product, or explore reactions by demographics. With stage=true, call openfda_dataframe_describe for the staged columns, then openfda_dataframe_query for...8 params

Search adverse event reports across drugs, food, and devices. Use to investigate safety signals, find reports for a specific product, or explore reactions by demographics. With stage=true, call openfda_dataframe_describe for the staged columns, then openfda_dataframe_query for...

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
category*string
Product category — each has different field schemas in the responseone of drug · food · device
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["receivedate", "patient.drug.medicinalproduct"] — any key path on a returned record works, and openfda_describe_fields lists the searchabl...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
searchstring
openFDA search query. Examples: patient.drug.medicinalproduct:"aspirin", patient.reaction.reactionmeddrapt:"nausea" AND serious:"1". Omit to browse recent. Separate clauses with spaces. A "+" writt...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_search_animal_eventsSearch adverse event reports for veterinary drugs and devices submitted to the FDA Center for Veterinary Medicine. Records include animal species, breed, age, weight, drug name and route, adverse reactions (using VeDDRA terminology), and outcome. Use to investigate safety sign...7 params

Search adverse event reports for veterinary drugs and devices submitted to the FDA Center for Veterinary Medicine. Records include animal species, breed, age, weight, drug name and route, adverse reactions (using VeDDRA terminology), and outcome. Use to investigate safety sign...

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["original_receive_date", "animal.species"] — any key path on a returned record works, and openfda_describe_fields lists the searchable one...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
searchstring
openFDA search query using field:value syntax. Examples: animal.species:"Dog", drug.active_ingredients.name:"Fluralaner", reaction.veddra_term_name:"Vomiting", serious_ae:"true". Omit to browse rec...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_search_drug_shortagesSearch FDA drug shortage records. Returns per-product shortage status, availability, therapeutic category, dosage form, manufacturer, and dates. Use to check whether a drug is currently in shortage, find all oncology drugs with supply issues, or retrieve the openfda block (bra...7 params

Search FDA drug shortage records. Returns per-product shortage status, availability, therapeutic category, dosage form, manufacturer, and dates. Use to check whether a drug is currently in shortage, find all oncology drugs with supply issues, or retrieve the openfda block (bra...

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["generic_name", "status"] — any key path on a returned record works, and openfda_describe_fields lists the searchable ones. Each record is...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
searchstring
openFDA search query using field:value syntax. Examples: status:"Current", therapeutic_category:"Oncology", generic_name:"carboplatin", company_name:"pfizer". Omit to browse all records. Separate c...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_search_recallsSearch enforcement reports and recall actions across drugs, food, and devices. With stage=true, call openfda_dataframe_describe for the staged columns, then openfda_dataframe_query for SQL.9 params

Search enforcement reports and recall actions across drugs, food, and devices. With stage=true, call openfda_dataframe_describe for the staged columns, then openfda_dataframe_query for SQL.

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
category*string
Product categoryone of drug · food · device
endpointstring
Report type. Default enforcement. The recall endpoint is only available for devices.one of enforcement · recalldefault: enforcement
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["recalling_firm", "reason_for_recall"] — any key path on a returned record works, and openfda_describe_fields lists the searchable ones. E...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
searchstring
openFDA search query. Examples: classification:"Class I" (also "Class II" or "Class III"), recalling_firm:"pfizer", reason_for_recall:"undeclared allergen". Omit to browse recent. Separate clauses...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_search_tobacco_reportsSearch problem reports submitted to the FDA for tobacco products, including e-cigarettes, vaping products, cigarettes, and smokeless tobacco. Reports capture product type, reported health problems (e.g. seizure, chest pain), product problems (e.g. exploding battery), whether a...7 params

Search problem reports submitted to the FDA for tobacco products, including e-cigarettes, vaping products, cigarettes, and smokeless tobacco. Reports capture product type, reported health problems (e.g. seizure, chest pain), product problems (e.g. exploding battery), whether a...

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["date_submitted", "reported_health_problems"] — any key path on a returned record works, and openfda_describe_fields lists the searchable...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
searchstring
openFDA search query using field:value syntax. Examples: tobacco_products:"Electronic cigarette", reported_health_problems:"Seizure", nonuser_affected:"Yes". Omit to browse recent reports. Separate...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_count_valuesAggregate and tally unique values for any field across any openFDA endpoint. Returns ranked term-count pairs sorted by count descending; a date field tallies one term per distinct YYYYMMDD date, ranked the same way. Pair with openfda_search_adverse_events, openfda_search_drug_...4 params

Aggregate and tally unique values for any field across any openFDA endpoint. Returns ranked term-count pairs sorted by count descending; a date field tallies one term per distinct YYYYMMDD date, ranked the same way. Pair with openfda_search_adverse_events, openfda_search_drug_...

Parameters* required
count*string
Field to count. openfda_describe_fields gives the verified expression per field as countAs (null = not countable in any form). Otherwise: append .exact for whole-phrase counting of free-text fields...
endpoint*string
Full openFDA endpoint path (e.g. "drug/event", "device/classification")one of drug/event · drug/label · drug/enforcement · drug/ndc · drug/drugsfda · drug/shortages
limitnumber
Number of top terms to return (default 100, max 1000 — openFDA's own count maximum). truncated reports whether more distinct terms exist beyond it, except at the maximum itself, where openFDA offer...default: 100
searchstring
Filter query to scope the count (e.g. patient.drug.medicinalproduct:"metformin"). Omit to count across every record in the endpoint. Separate clauses with spaces. A "+" written in the URL style of...
openfda_describe_fieldsReturn the searchable field paths for an openFDA endpoint, grouped by category with type and description. Use before constructing a search query to find the correct dotted field path — field names differ per endpoint and are not discoverable from the tool schema alone.1 params

Return the searchable field paths for an openFDA endpoint, grouped by category with type and description. Use before constructing a search query to find the correct dotted field path — field names differ per endpoint and are not discoverable from the tool schema alone.

Parameters* required
endpoint*string
openFDA endpoint to describe (e.g. "drug/event", "drug/shortages", "device/510k"). Must be one of the cataloged endpoints.one of drug/event · drug/label · drug/enforcement · drug/ndc · drug/drugsfda · drug/shortages
openfda_get_drug_labelLook up FDA drug labeling (package inserts / SPL documents). Check indications, warnings, dosage, contraindications, active ingredients, or any structured label section. A label runs to tens of thousands of tokens, so a page that exceeds the inline budget returns the list of a...5 params

Look up FDA drug labeling (package inserts / SPL documents). Check indications, warnings, dosage, contraindications, active ingredients, or any structured label section. A label runs to tens of thousands of tokens, so a page that exceeds the inline budget returns the list of a...

Parameters* required
limitnumber
Maximum number of results to return (1-1000). Default 5. Labels are large, and the cost of a sections selection is the section summed across every record on the page — so it scales with this limit....default: 5
search*string
Query targeting label fields. Examples: openfda.brand_name:"aspirin", openfda.generic_name:"metformin", openfda.manufacturer_name:"pfizer". To fetch one product's label, pass set_id with the SPL UU...
sectionsarray
Label sections to return, e.g. ["boxed_warning","indications_and_usage"]. Names come from the outline an oversized page returns, or from openfda_describe_fields. Omit for the whole label — which re...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
openfda_search_drug_approvalsSearch the Drugs@FDA database for drug application approvals (NDAs and ANDAs). Returns application details, sponsor info, and full submission history. Pair with openfda_get_drug_label to read the approved label, or openfda_count_values to aggregate by sponsor_name, product_typ...7 params

Search the Drugs@FDA database for drug application approvals (NDAs and ANDAs). Returns application details, sponsor info, and full submission history. Pair with openfda_get_drug_label to read the approved label, or openfda_count_values to aggregate by sponsor_name, product_typ...

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["sponsor_name", "submissions.submission_status_date"] — any key path on a returned record works, and openfda_describe_fields lists the sea...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
searchstring
openFDA search query. Examples: openfda.brand_name:"humira", sponsor_name:"PFIZER", submissions.submission_type:"ORIG" AND submissions.review_priority:"PRIORITY". Exact quoted values can be case-se...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_search_device_clearancesSearch FDA device premarket notifications — 510(k) clearances and PMA approvals. With stage=true, call openfda_dataframe_describe for the staged columns, then openfda_dataframe_query for SQL.8 params

Search FDA device premarket notifications — 510(k) clearances and PMA approvals. With stage=true, call openfda_dataframe_describe for the staged columns, then openfda_dataframe_query for SQL.

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or another openFDA search tool (openfda_search_* or openfda_lookup_ndc). Passing one stages this search onto that canvas (same effect as s...
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["decision_date", "applicant"] — any key path on a returned record works, and openfda_describe_fields lists the searchable ones. Each recor...
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
pathway*string
Premarket pathway. 510(k) is the most common; PMA is for higher-risk devices.one of 510k · pma
searchstring
openFDA search query. Examples: applicant:"medtronic", advisory_committee_description:"cardiovascular", product_code:"DXN", openfda.device_name:"catheter". Omit to browse recent. Separate clauses w...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_lookup_ndcLook up drugs in the NDC (National Drug Code) Directory. Identify drug products by NDC code, find active ingredients, packaging details, or manufacturer info. Pair with openfda_get_drug_label using the returned brand_name or set_id to read the package insert. With stage=true,...7 params

Look up drugs in the NDC (National Drug Code) Directory. Identify drug products by NDC code, find active ingredients, packaging details, or manufacturer info. Pair with openfda_get_drug_label using the returned brand_name or set_id to read the package insert. With stage=true,...

Parameters* required
canvas_idstring
Canvas ID returned by a prior stage=true call to this tool or an openFDA search tool (openfda_search_*). Passing one stages this lookup onto that canvas (same effect as stage=true) so result sets a...
fieldsarray
Dotted record paths to keep on each returned record, e.g. ["brand_name", "active_ingredients.name"] — any key path on a returned record works, and openfda_describe_fields lists the searchable ones....
limitnumber
Maximum number of records to return (1-1000, default 10). Serialized record size varies by three orders of magnitude across openFDA endpoints, so the page is also bounded by a 24000-byte serialized...default: 10
search*string
openFDA search query. Examples: product_ndc:"0363-0218", brand_name:"aspirin", generic_name:"metformin", openfda.manufacturer_name:"walgreen", active_ingredients.name:"ASPIRIN". Separate clauses wi...
skipnumber
Number of records to skip for pagination (default 0). openFDA caps pagination at 25000 records; a higher value returns a pagination_limit_reached error.default: 0
sortstring
Sort expression — a field path optionally suffixed with :asc or :desc (any letter case; :ascending and :descending are also accepted, and every direction is sent as asc or desc); comma-separate for...
stageboolean
Stage the matched set on a DataCanvas for SQL analysis — openfda_dataframe_describe lists the staged columns, openfda_dataframe_query runs the SQL. Default false — the call returns one page for one...default: false
openfda_drug_profileResolve one drug name to its FDA identity, then fan out in parallel across the bounded per-drug openFDA endpoints and merge into one profile: identity, label highlights, adverse-event summary, recall history, Drugs@FDA approval, and shortage status. Replaces chaining openfda_g...1 params

Resolve one drug name to its FDA identity, then fan out in parallel across the bounded per-drug openFDA endpoints and merge into one profile: identity, label highlights, adverse-event summary, recall history, Drugs@FDA approval, and shortage status. Replaces chaining openfda_g...

Parameters* required
drug*string
Drug name to profile — brand or generic (e.g. "metformin", "Humira", "Glucophage"). Resolved once to an FDA identity; meta.fanOutKey reports the name the recall, approval, and shortage sub-queries...
openfda_dataframe_describeList the tables and column schemas on a DataCanvas staged by an openFDA search tool. Call before openfda_dataframe_query to discover the exact table name, column names, and DuckDB types needed for valid SQL. row_count is the full staged result set, not the inline preview count...1 params

List the tables and column schemas on a DataCanvas staged by an openFDA search tool. Call before openfda_dataframe_query to discover the exact table name, column names, and DuckDB types needed for valid SQL. row_count is the full staged result set, not the inline preview count...

Parameters* required
canvas_id*string
Canvas ID from the canvas_id field of an openFDA search tool response (openfda_search_* or openfda_lookup_ndc), present when the search ran with stage=true.
openfda_dataframe_queryRun a read-only SQL SELECT against a DataCanvas table staged by an openFDA search tool (call one with stage=true; its response carries canvas_id + canvas_table). Enables GROUP BY, COUNT/SUM/AVG, time-series, and joins across the staged result set without re-paging the API. Cal...2 params

Run a read-only SQL SELECT against a DataCanvas table staged by an openFDA search tool (call one with stage=true; its response carries canvas_id + canvas_table). Enables GROUP BY, COUNT/SUM/AVG, time-series, and joins across the staged result set without re-paging the API. Cal...

Parameters* required
canvas_id*string
Canvas ID from the canvas_id field of an openFDA search tool response (openfda_search_* or openfda_lookup_ndc), present when the search ran with stage=true.
query*string
SQL SELECT against the staged table. Use the table name from openfda_dataframe_describe. Example: "SELECT classification, COUNT(*) AS n FROM spilled_ab12cd34 GROUP BY classification ORDER BY n DESC".

Sponsors

Configuration

OPENFDA_API_KEY

Free API key from open.fda.gov — increases daily limit from 1K to 120K requests.

OPENFDA_CLAMP_LIMITSdefault: true

Clamp a limit above its endpoint's cap to that cap, with a notice naming the requested value and the cap. On by default; set to 'false' to reject such a limit instead and advertise the cap as the schema maximum.

CANVAS_PROVIDER_TYPEdefault: duckdb

DataCanvas staging, on by default: stage=true or a canvas_id on an openfda_search_* tool or openfda_lookup_ndc stages the matched records as a SQL table for the openfda_dataframe_* tools. The DuckDB binding ships with the server. Set to 'none' to disable.

OPENFDA_DATAFRAME_DROP_ENABLEDdefault: false

Enable openfda_dataframe_drop, which deletes a table staged on a DataCanvas. Off by default; applies only when DataCanvas is enabled (CANVAS_PROVIDER_TYPE=duckdb).

OPENFDA_MIRROR_ENABLEDdefault: false

Serve exact-key lookups for drug/label, drug/ndc, drug/enforcement, and drug/drugsfda from a local bulk mirror instead of the API. Off by default; the initial harvest runs out-of-band via the mirror:init script.

OPENFDA_MIRROR_PATHdefault: ./data/openfda-mirror

Directory holding one SQLite file per mirrored dataset.

OPENFDA_MIRROR_REFRESH_CRON

Cron expression for the in-process mirror refresh. HTTP transport only; stdio operators run mirror:refresh from the host. Requires the optional node-cron peer dependency.

OPENFDA_MIRROR_FALLBACK_LIVEdefault: true

Fall back to the live API when the mirror is cold, missing the record, or failing. Disable to fail loudly instead.

OPENFDA_MIRROR_REFRESH_TIMEOUT_MSdefault: 21600000

Wall-clock budget for one scheduled refresh before it is aborted. Raise it for drug/label, the only multi-partition dataset.

OPENFDA_MIRROR_BASE_URLdefault: https://api.fda.gov

Host serving the openFDA bulk download manifest. Override only to harvest from a private mirror of the dumps.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/openfda-mcp-server

Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.

15 Tools

Version License Docker MCP SDK npm TypeScript Bun

Details

Repository
github.com/cyanheads/openfda-mcp-server
Category
Data & Analytics
Package
@cyanheads/openfda-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Data & Analytics MCP servers

View all
1cyanheads avatarSocrata Mcp Servercyanheads/socrata-mcp-serverSearch and query government open-data portals (Socrata SODA API).4stars
2coinrithm avatarCoinRithm Agent Tradingcoinrithm/coinrithm-agent-tradingKeyless prediction-market data across 12 venues plus paper-trading of crypto spot, futures, and PM.4stars
3egulatee avatarCodecovegulatee/mcp-server-codecovMCP server for querying Codecov coverage data with configurable URL support4stars
4isakskogstad avatarOECD MCP Serverisakskogstad/oecd-mcp-serverOECD economic and statistical data via SDMX API. Access 5,000+ datasets across 17 categories.4stars
5malamutemayhem avatarAmber Electric MCP by UnClickmalamutemayhem/unclickReal-time Australian electricity spot prices and renewables data from Amber Electric. By UnClick.4stars
6malamutemayhem avatarFantasy Premier League MCP by UnClickmalamutemayhem/unclickFantasy Premier League teams, fixtures, players, standings, and league data. By UnClick.4stars