clinical-evidence-mcp
Provides literature search and article retrieval from PubMed, returning deduplicated citations and abstracts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@clinical-evidence-mcpFind recent clinical trials for Alzheimer's disease"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Clinical Evidence MCP
Search medical literature, trial registrations, drug labels, and adverse-event reports from any compatible MCP client.
Clinical Evidence MCP is a source-first Model Context Protocol server. It queries official public APIs at request time and returns structured records with stable identifiers, direct source URLs, and retrieval timestamps.
Hosted endpoint: https://clinical-evidence-mcp.danielk.am/mcp
A bearer token is required. Tokens are issued by the operator, bound to one email account, and never accepted in URLs.
Tools
Tool | Source | Result |
| NCBI PubMed and Europe PMC | Deduplicated citations and abstracts when available |
| Europe PMC | One record by PMID, PMCID, or DOI |
| ClinicalTrials.gov | Trial registrations matching terms and filters |
| ClinicalTrials.gov | One study by NCT identifier |
| openFDA | Current label records matching a drug name |
| openFDA FAERS | Reported reaction counts with safety warnings |
The server also exposes clinical-evidence://sources, a resource describing upstream datasets and their limits.
An optional private source can add four allowlisted research tools: syndicated_source_status, syndicated_research_ask, syndicated_article_get, and syndicated_article_wait. When its private browser proxy is configured, two more tools start and finish an interactive sign-in. This integration is disabled by default. Creating a syndicated research question creates one record in that private upstream account, and the MCP annotation states this side effect.
Related MCP server: fda-approvals-mcp
Connect LibreChat
Add this to librechat.yaml:
mcpServers:
clinical-evidence:
type: streamable-http
url: https://clinical-evidence-mcp.danielk.am/mcp
requiresOAuth: false
startup: false
initTimeout: 15000
timeout: 180000
serverInstructions: true
headers:
Authorization: 'Bearer {{CLINICAL_EVIDENCE_TOKEN}}'
customUserVars:
CLINICAL_EVIDENCE_TOKEN:
title: Clinical Evidence token
description: Enter the personal token issued for your email account.
sensitive: trueRestart LibreChat, save the token under MCP Settings, then reinitialise the connector. Each LibreChat user can have a separate token. See LibreChat's MCP documentation for UI and YAML setup.
Connect Claude
Claude's static request-header support for custom connectors has staged availability. If Request headers is available for your account:
Open Settings, then Connectors, and add a custom connector.
Enter
https://clinical-evidence-mcp.danielk.am/mcp.Add the request header
Authorizationwith the full valueBearer cemcp_....
If Request headers is absent, use LibreChat or another bearer-header client. Per-user Claude sign-in requires an OAuth 2.1 authorization service, which is outside this release.
Run locally
Requirements: Node.js 22 or later.
npm ci
npm run build
cp .env.example .env
DATA_DIR=./data npm run cli -- token create --email clinician@example.com --label local
DATA_DIR=./data npm startThe token creation command prints the secret once. Store it in a password manager.
Test an initialisation request from a terminal:
curl -sS http://127.0.0.1:3946/mcp \
-H 'Authorization: Bearer cemcp_REPLACE_ME' \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'Manage tokens from the terminal
npm run cli -- token create --email clinician@example.com --label librechat
npm run cli -- token list
npm run cli -- token revoke tok_REPLACE_MEWith Docker Compose, prefix those commands with:
docker compose exec clinical-evidence-mcp node dist/cli.jsThe registry stores SHA-256 token digests, immutable account IDs, normalised email addresses, labels, and revocation timestamps in /data/tokens.json. Raw secrets are not stored. Protect /data, backups, and terminal output as sensitive operator data.
Deploy
The included Compose file expects:
A Traefik proxy on an external Docker network named
coolify.DNS for
clinical-evidence-mcp.danielk.ampointing at the host.A server-only
.envfile in/srv/clinical-evidence-mcp.
The deployment helper copies the working tree to dk-sin1, builds the pinned container, and checks the public health endpoint:
scripts/deploy-dk-sin1.shNo host port is published. Traefik terminates HTTPS and forwards traffic over the Docker network.
Optional private source bridge
The public server contains a vendor-neutral bridge contract. Configure every SYNDICATED_SOURCE_* variable together to enable it for specific account IDs.
The private bridge must:
remain on an internal Docker network with no host port or Traefik route;
accept a separate bearer secret;
return privacy-reduced JSON from
/v1/auth-status,/v1/ask,/v1/article/:id, and/v1/article/:id/wait;avoid exposing history, account data, raw payloads, cookies, browser profiles, or patient identifiers;
label question creation as a remote side effect.
Interactive private-source sign-in
Set SYNDICATED_SOURCE_LOGIN_PROXY_URL to the private bridge's internal noVNC URL, normally http://clinical-evidence-openevidence:6080. The bridge and port stay on clinical-evidence-private; the existing public service proxies only a currently authorised login session.
syndicated_source_login_start first closes any old browser session, starts one temporary browser, and returns MCP URL elicitation. The public URL carries a 32-byte nonce in its fragment, so the secret is not sent in the HTTP request or recorded by Traefik. The browser exchanges it once for a random HttpOnly; Secure; SameSite=Strict cookie. HTTP assets and the WebSocket require that cookie. The raw nonce lives for two minutes; the full browser session lives for at most 15 minutes.
Clients implementing MCP URL elicitation open the page from error code -32042. Clients that do not support it can call the same tool with delivery=link. Credentials are entered only in Chromium and never pass through MCP. After sign-in, call syndicated_source_login_finish to revoke browser access, stop Chromium, flush the private profile, and verify authentication.
Vendor terms and API permission still apply. Private deployment does not override them.
Configuration
Variable | Default | Purpose |
|
| Bind address |
|
| Internal HTTP port |
|
| Token registry directory |
| local URL | Public origin, HTTPS required outside loopback |
|
| Comma-separated browser Origin allowlist |
|
| Per-account request limit |
|
| Public provider request timeout |
| unset | Optional NCBI client contact |
| unset | Optional NCBI API key |
| unset | Private provider label |
| unset | Internal bridge URL |
| unset | Bridge bearer secret |
| unset | Comma-separated MCP account allowlist |
|
| Private provider request timeout |
| unset | Internal noVNC URL enabling temporary account-gated sign-in |
Safety and data limits
Do not submit names, contact details, medical record numbers, dates of birth, or other patient identifiers. The input check catches common identifier patterns, but it is not a substitute for deidentification at the source.
This service does not diagnose, prescribe, provide emergency advice, or replace clinical judgement. Source records can be incomplete, delayed, corrected, or withdrawn.
ClinicalTrials.gov records are submitted by sponsors and investigators. Registration does not mean a study has been evaluated or approved by the U.S. government.
FAERS reports are voluntary and incomplete. Counts do not establish causation, incidence, prevalence, or comparative risk. openFDA notes that its FAERS dataset is updated quarterly and may lag by three months or more.
Publication abstracts can remain subject to publisher or author copyright. This server fetches them on demand and does not build a persistent publication corpus.
Upstream documentation
Verify
npm run verify
npm run smoke:providers
npm audit --omit=dev
docker compose --env-file .env.example config --quiet
git diff --checkLicence
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides access to the official FDA DailyMed database for comprehensive drug information, including drug labels, NDC codes, RxNorm mappings, pharmacologic classifications, and FDA application numbers through natural language queries.Last updated283MIT
- Flicense-qualityBmaintenanceEnables querying FDA drug approvals, device clearances (510(k)), recalls, and adverse events via the openFDA API, providing tools for clinical and pharmaceutical research.Last updated1
- Flicense-qualityCmaintenanceEnables searching clinical trials, PubMed, Open Targets, and openFDA data, with optional Vertex AI grounding for regulatory context.Last updated
- Alicense-qualityDmaintenanceEnables LLMs to search FDA drug labels and adverse event data via the OpenFDA API, supporting natural language queries for drug safety information.Last updatedMIT
Related MCP Connectors
Citable retrieval across papers, books, patents, Wikipedia, and live social sources.
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Search public open-source code, documentation, metadata, vulnerabilities, changelogs, and examples.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/danielk-am/clinical-evidence-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server