Skip to main content
Glama

Server Details

PubMed MCP — wraps the NCBI E-utilities API (biomedical literature, free, no auth)

Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
28.5% over 62 days
Last Tested
Transport
Streamable HTTP
URL
Repository
pipeworx-io/mcp-pubmed
GitHub Stars
1
Server Listing
mcp-pubmed

TDQS

A3.8/5.0

Scored across 48 tools

Disambiguation2/5

Several tools are literal duplicates or near-duplicates: get_citations/get_full_text/get_related_articles are self-declared deprecated aliases of pubmed_get_citations/pubmed_get_full_text/pubmed_get_related_articles, and ask_pipeworx vs ask_pipeworx_beta vs ask_pipeworx_grounded vs deep_research share the same routing purpose with only subtle boundaries. The polymarket family (edges, arbitrage, fill_risk, kalshi_spread, edge_tracker) and the entity family (entity_profile, company_facts, compare_entities, recent_changes, validate_claim) also overlap heavily despite long descriptions attempting to differentiate them.

Naming Consistency3/5

Nearly everything is snake_case, which is good, but the convention is inconsistent: PubMed tools vary between prefixed (pubmed_get_citations) and unprefixed (get_abstract, get_summary, search_pubmed), deprecated aliases exist without the prefix, and prefixes are wildly uneven across the rest of the surface (ai_visibility_check, kalshi_weather_edge, scan_dependency). Readable but not a predictable verb_noun pattern.

Tool Count2/5

48 tools is heavy for any single server, and the surface mixes at least 4-5 distinct domains (biomedical literature, prediction-market trading, SEC/company data, memory/subscriptions, meta-discovery, AI-marketing audits). Many tools are deprecated aliases or thin variations that do not earn an independent slot.

Completeness3/5

For the stated PubMed domain, coverage is actually reasonable (search, summary, abstract, full text, citations, related, integrity, trends, evidence landscape) but conspicuously lacking any write/save/export or bulk-export operation, and the server bundles dozens of unrelated non-PubMed tools that no PubMed-focused agent needs. The domain is ambiguous, making coverage hard to assess as a coherent surface.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 30 tool updates
    • Changedai_visibility_check1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "entity": "Tesla"
        +  }
        +]
    • Changedask_pipeworx3 fields changed
      • addedInput schema / properties / ask
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / message
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • changedInput schema / properties / question / description
        Previous value: -"Your question or request in natural language. Accepts query, q, prompt, text, input as aliases."New value: +"Your question or request in natural language. Accepts query, q, prompt, text, input, ask, message as aliases."
    • Changedask_pipeworx_beta4 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "question": "What is the current US unemployment rate?"
        +  }
        +]
      • addedInput schema / properties / ask
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / message
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • changedInput schema / properties / question / description
        Previous value: -"Your question or request in natural language. Accepts query, q, prompt, text, input as aliases."New value: +"Your question or request in natural language. Accepts query, q, prompt, text, input, ask, message as aliases."
    • Changedask_pipeworx_grounded4 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "question": "What was Apple's fiscal 2023 revenue?"
        +  }
        +]
      • addedInput schema / properties / ask
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / message
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • changedInput schema / properties / question / description
        Previous value: -"Your question in natural language. Accepts query, q, prompt, text, input as aliases."New value: +"Your question in natural language. Accepts query, q, prompt, text, input, ask, message as aliases."
    • Addedcompany_facts
    • Changedcompare_entities1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "type": "company",
        +    "values": [
        +      "AAPL",
        +      "MSFT"
        +    ]
        +  }
        +]
    • Changeddeep_research9 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "depth": "quick",
        +    "question": "What is the current US unemployment rate and how has it changed over the past year?"
        +  }
        +]
      • addedInput schema / properties / ask
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / input
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / message
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prompt
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / q
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
      • changedInput schema / properties / question / description
        Previous value: -"The research question, in natural language. Broad/multi-part is fine — decomposition is the point."New value: +"The research question, in natural language. Broad/multi-part is fine — decomposition is the point. Accepts query, q, prompt, text, input, ask, message as aliases."
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Alias for question.",
        +  "type": "string"
        +}
    • Changedentity_profile1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "type": "company",
        +    "value": "AAPL"
        +  }
        +]
    • Changedforget4 fields changed
      • addedInput schema / properties / k
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • changedInput schema / properties / key / description
        Previous value: -"Memory key to delete"New value: +"Memory key to delete. Accepts name, k, label as aliases."
      • addedInput schema / properties / label
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
    • Changedgenerate_llms_txt1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "url": "https://pipeworx.io"
        +  }
        +]
    • Addedkalshi_weather_edge
    • Changedpipeworx_feedback1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "message": "Fleet #2184 smoke test: verifying pipeworx_feedback example call returns non-empty.",
        +    "type": "other"
        +  }
        +]
    • Changedpipeworx_trending1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "window": "7d"
        +  }
        +]
    • Changedpolymarket_arbitrage1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "topic": "Fed rate decision"
        +  }
        +]
    • Changedpolymarket_edge_tracker1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "days": 14,
        +    "window": "1wk"
        +  }
        +]
    • Changedpolymarket_edges3 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "limit": 5,
        +    "window": "1wk"
        +  }
        +]
      • changedInput schema / properties / min_edge_pp / description
        Previous value: -"Minimum |edge| in percentage points to include (default 0.5). Edge is evaluated NET of slippage."New value: +"Minimum |edge| in percentage points to include (default 0.5). Edge is evaluated NET of slippage and Polymarket's own taker fee."
      • changedInput schema / properties / slippage_pp / description
        Previous value: -"Assumed execution slippage in percentage points per leg (default 0.3). Subtracted from raw |edge| before ranking and Kelly sizing. Polymarket has zero trading fees as of 2024 but bid/ask + thin depth typically eats 20-50bp per trade. Bump for very thin partitions; drop to 0 if you have a smarter fill model."New value: +"Assumed execution slippage in percentage points per leg (default 0.3), for bid/ask + thin depth cost that a last-trade price does not show. Subtracted from raw |edge| before ranking and Kelly sizing, ON TOP OF Polymarket's own taker fee — which is NOT zero (rate 0.04-0.07 depending on category, read off each market's own published fee schedule; see fees_pp_applied on every row and fees.ts for the full schedule). Bump slippage for very thin partitions; drop to 0 if you have a smarter fill model — the fee still applies regardless."
    • Changedpolymarket_fill_risk1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "market": "will-the-fed-increase-interest-rates-by-25-bps-after-the-december-2026-meeting-20260729232808636",
        +    "side": "buy_yes",
        +    "size_usd": 1000
        +  }
        +]
    • Changedrecall4 fields changed
      • addedInput schema / properties / k
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • changedInput schema / properties / key / description
        Previous value: -"Memory key to retrieve (omit to list all keys)"New value: +"Memory key to retrieve (omit to list all keys). Accepts name, k, label as aliases."
      • addedInput schema / properties / label
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
    • Changedrecent_changes1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "since": "30d",
        +    "type": "company",
        +    "value": "AAPL"
        +  }
        +]
    • Addedrelease_calendar_markets
    • Changedremember10 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "key": "target_ticker",
        +    "value": "AAPL"
        +  }
        +]
      • addedInput schema / properties / content
        Added value: +{
        +  "description": "Alias for value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "Alias for value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / k
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • changedInput schema / properties / key / description
        Previous value: -"Memory key (e.g., \"subject_property\", \"target_ticker\", \"user_preference\")"New value: +"Memory key (e.g., \"subject_property\", \"target_ticker\", \"user_preference\"). Accepts name, k, label as aliases."
      • addedInput schema / properties / label
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Alias for key.",
        +  "type": "string"
        +}
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Alias for value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / v
        Added value: +{
        +  "description": "Alias for value.",
        +  "type": "string"
        +}
      • changedInput schema / properties / value / description
        Previous value: -"Value to store (any text — findings, addresses, preferences, notes)"New value: +"Value to store (any text — findings, addresses, preferences, notes). Accepts content, text, data, v as aliases; a non-string value is stored as JSON."
    • Addedresolution_audit
    • Addedresolution_diff
    • Changedresolve_entity1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "type": "company",
        +    "value": "AAPL"
        +  }
        +]
    • Changedscan_competitor_ai_presence1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "entities": [
        +      "Pipeworx",
        +      "Zapier"
        +    ]
        +  }
        +]
    • Changedscan_dependency1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "package": "left-pad"
        +  }
        +]
    • Changedsearch_pubmed4 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "query": "CRISPR cancer therapy"
        -  },
        -  {
        -    "limit": 20,
        -    "query": "Smith J[Author]"
        -  }
        -]New value: +[
        +  {
        +    "from_year": 2024,
        +    "query": "\"cell-free RNA\"[tiab]",
        +    "to_year": 2026
        +  },
        +  {
        +    "query": "CRISPR cancer therapy"
        +  },
        +  {
        +    "limit": 20,
        +    "query": "Smith J[Author]"
        +  }
        +]
      • addedInput schema / properties / from_year
        Added value: +{
        +  "description": "Optional. Restrict to publications from this year onward (four-digit, e.g. 2024). Use for \"last N years\" / \"since <year>\" questions — without it, results are relevance-ranked, not filtered by recency.",
        +  "type": "number"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Search query (e.g., \"CRISPR cancer therapy\", \"Smith J[Author]\", \"COVID-19[MeSH]\")"New value: +"Search query (e.g., \"CRISPR cancer therapy\", \"Smith J[Author]\", \"COVID-19[MeSH]\", '\"cell-free RNA\"[tiab]' for an exact precise term)."
      • addedInput schema / properties / to_year
        Added value: +{
        +  "description": "Optional. Restrict to publications up to and including this year (four-digit). Defaults to the current year when only from_year is given.",
        +  "type": "number"
        +}
    • Changedsearch_within1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "query": "supply-chain risk",
        +    "text": "Apple Inc. reported fiscal 2023 revenue of $383.285 billion, driven by strong iPhone and Services growth. Net income was $96.995 billion. The company faced supply-chain risk in China during the quarter."
        +  }
        +]
    • Changedsuggest_questions1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "topic": "finance"
        +  }
        +]
    • Changedvalidate_claim1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "claim": "Apple's fiscal 2023 revenue was $383 billion"
        +  }
        +]
  2. 1 tool update
    • Changedbet_research2 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "market": "when-will-bitcoin-hit-150k"
        -  },
        -  {
        -    "market": "https://polymarket.com/event/when-will-bitcoin-hit-150k"
        -  }
        -]New value: +[
        +  {
        +    "market": "will-kristi-noem-win-the-2028-republican-presidential-nomination"
        +  },
        +  {
        +    "market": "https://polymarket.com/event/will-kristi-noem-win-the-2028-republican-presidential-nomination"
        +  }
        +]
      • changedInput schema / properties / market / description
        Previous value: -"Polymarket slug (\"when-will-bitcoin-hit-150k\"), full URL (\"https://polymarket.com/event/...\"), or question text (\"Will Bitcoin hit $150k?\"). Dated slugs stop resolving once they settle — Polymarket de-indexes resolved markets — so prefer an undated one."New value: +"Polymarket slug (\"will-kristi-noem-win-the-2028-republican-presidential-nomination\"), full URL (\"https://polymarket.com/event/...\"), or question text (\"Will Bitcoin hit $150k?\"). Dated slugs stop resolving once they settle — Polymarket de-indexes resolved markets — so prefer an undated one."
  3. 1 tool update
    • Changedpolymarket_kalshi_spread1 field changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "topic": "fed"
        -  },
        -  {
        -    "topic": "btc"
        -  }
        -]New value: +[
        +  {
        +    "topic": "fed"
        +  },
        +  {
        +    "topic": "btc"
        +  },
        +  {
        +    "topic": "bitcoin"
        +  },
        +  {
        +    "topic": "fed rate decision"
        +  }
        +]
  4. 2 tool updates
    • Changedbet_research2 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "market": "will-bitcoin-reach-100k-in-july-2026"
        -  },
        -  {
        -    "market": "https://polymarket.com/event/will-bitcoin-hit-150k-by-june-30-2026"
        -  }
        -]New value: +[
        +  {
        +    "market": "when-will-bitcoin-hit-150k"
        +  },
        +  {
        +    "market": "https://polymarket.com/event/when-will-bitcoin-hit-150k"
        +  }
        +]
      • changedInput schema / properties / market / description
        Previous value: -"Polymarket slug (\"will-bitcoin-hit-150k-by-june-30-2026\"), full URL (\"https://polymarket.com/event/...\"), or question text (\"Will Bitcoin hit $150k by June 30?\")"New value: +"Polymarket slug (\"when-will-bitcoin-hit-150k\"), full URL (\"https://polymarket.com/event/...\"), or question text (\"Will Bitcoin hit $150k?\"). Dated slugs stop resolving once they settle — Polymarket de-indexes resolved markets — so prefer an undated one."
    • Changedpolymarket_kalshi_spread1 field changed
      • changedInput schema / properties / topic / description
        Previous value: -"Pre-mapped: fed | btc | cpi | gdp | sp500 | recession | next_pope | next_uk_pm | next_israel_pm | 2028_president"New value: +"Subject to compare. Canonical keys: fed | btc | eth | cpi | gdp | sp500 | recession | next_pope | next_uk_pm | next_israel_pm | 2028_president — but aliases and keywords resolve too (\"bitcoin\", \"fed rate decision\", \"ethereum\", \"inflation\", \"s&p 500\", \"us recession\", \"next pope\", \"2028 election\"). Check resolution.topic_matched_by in the response: \"exact\"/\"alias\" is a curated pairing, \"phrase\"/\"token\" is a keyword guess."
  5. 1 tool update
    • Changedget_summary6 fields changed
      • addedOutput schema / properties / articles / items / properties / author_details
        Added value: +{
        +  "description": "Per-author detail, index-aligned with authors[]: name, affiliations (verbatim from efetch XML), and any emails found inside them",
        +  "items": {
        +    "properties": {
        +      "affiliations": {
        +        "description": "Verbatim AffiliationInfo/Affiliation strings from efetch XML; empty if the record has none",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "emails": {
        +        "description": "Email addresses found inside this author's affiliation strings by plain regex; empty if none present",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "name": {
        +        "description": "Author name as indexed by esummary (e.g. \"Smith JA\")",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "affiliations",
        +      "emails"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / articles / items / properties / authors / description
        Previous value: -"Per-author name, affiliations (verbatim from efetch XML), and any emails found inside them"New value: +"Author names as plain strings, e.g. \"Smith JA\" (unchanged shape; see author_details for affiliations/emails)"
      • removedOutput schema / properties / articles / items / properties / authors / items / properties
        Removed value: -{
        -  "affiliations": {
        -    "description": "Verbatim AffiliationInfo/Affiliation strings from efetch XML; empty if the record has none",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "emails": {
        -    "description": "Email addresses found inside this author's affiliation strings by plain regex; empty if none present",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "name": {
        -    "description": "Author name as indexed by esummary (e.g. \"Smith JA\")",
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / properties / articles / items / properties / authors / items / required
        Removed value: -[
        -  "name",
        -  "affiliations",
        -  "emails"
        -]
      • changedOutput schema / properties / articles / items / properties / authors / items / type
        Previous value: -"object"New value: +"string"
      • changedOutput schema / properties / articles / items / required
        Previous value: -[
        -  "pmid",
        -  "title",
        -  "authors",
        -  "journal",
        -  "pub_date",
        -  "volume",
        -  "issue",
        -  "pages",
        -  "pub_types",
        -  "doi",
        -  "url"
        -]New value: +[
        +  "pmid",
        +  "title",
        +  "authors",
        +  "author_details",
        +  "journal",
        +  "pub_date",
        +  "volume",
        +  "issue",
        +  "pages",
        +  "pub_types",
        +  "doi",
        +  "url"
        +]
  6. 1 tool update
    • Changedget_summary4 fields changed
      • changedOutput schema / properties / articles / items / properties / authors / description
        Previous value: -"List of author names"New value: +"Per-author name, affiliations (verbatim from efetch XML), and any emails found inside them"
      • addedOutput schema / properties / articles / items / properties / authors / items / properties
        Added value: +{
        +  "affiliations": {
        +    "description": "Verbatim AffiliationInfo/Affiliation strings from efetch XML; empty if the record has none",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "emails": {
        +    "description": "Email addresses found inside this author's affiliation strings by plain regex; empty if none present",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "name": {
        +    "description": "Author name as indexed by esummary (e.g. \"Smith JA\")",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / articles / items / properties / authors / items / required
        Added value: +[
        +  "name",
        +  "affiliations",
        +  "emails"
        +]
      • changedOutput schema / properties / articles / items / properties / authors / items / type
        Previous value: -"string"New value: +"object"
  7. 1 tool update
    • Changedget_summary4 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "ids": "33579999,34567890"
        -  }
        -]New value: +[
        +  {
        +    "ids": [
        +      "33301246",
        +      "32000001"
        +    ]
        +  },
        +  {
        +    "ids": "33579999,34567890"
        +  }
        +]
      • changedInput schema / properties / ids / description
        Previous value: -"Comma-separated PubMed IDs (e.g., \"33579999,34567890\")"New value: +"PubMed IDs, either as an array ([\"33579999\",\"34567890\"] — what search_pubmed returns) or as a comma-separated string (\"33579999,34567890\")."
      • addedInput schema / properties / ids / items
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / ids / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "array"
        +]

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables searching PubMed and Europe PMC, fetching article metadata and full text via PMC, Europe PMC, or Unpaywall, and working with citations, related articles, MeSH terms, and identifier conversion through MCP over stdio or Streamable HTTP.
    12 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Exposes NCBI PubMed as MCP tools for searching literature, fetching abstracts, exploring citation graphs, and finding author publications without requiring an API key.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for NCBI PubMed E-utilities with rate limiting, enabling article search, metadata retrieval, full-text access, BibTeX generation, and bibliography management.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables searching PubMed and Europe PMC, fetching article metadata and full text with fallbacks, resolving citations and IDs, formatting references, and looking up MeSH terms via MCP over STDIO or Streamable HTTP.
    12 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.