covidence-mcp
Click on "Deploy 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., "@covidence-mcpScreen the next 15 studies in review 12345"
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.
covidence-mcp
An MCP connector that lets Claude screen studies in Covidence using its own intelligence — no brittle CSS selectors, no hardcoded click paths.
How it works
Instead of a static Playwright script, Claude navigates Covidence directly using Claude in Chrome. It reads the live page, finds the right buttons by understanding what it sees, and casts votes — the same way a human would. When Covidence updates their UI, nothing breaks.
The MCP server itself is intentionally thin: it stores your inclusion/exclusion criteria per review and keeps a session vote log. All actual browser interaction is handled by Claude.
You ──► Claude ──► covidence_screen (MCP)
│
▼
Returns screening prompt
│
▼
Claude navigates Chrome directly
(read_page → reason → find → click)
│
▼
Votes cast in CovidenceRelated MCP server: browser_mcp
Setup
There are two ways to connect, depending on whether you're using Claude Desktop or the claude.ai web app.
Option A — Claude Desktop (local)
Requirements: Node.js ≥ 18, Claude Desktop app
git clone <this repo>
cd covidence-mcp
npm install
npm run buildAdd to your Claude Desktop config:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"covidence": {
"command": "node",
"args": ["/absolute/path/to/covidence-mcp/dist/index.js"]
}
}
}Restart Claude Desktop. Done.
Option B — claude.ai web (remote hosting)
Claude.ai supports remote MCP servers over SSE. You deploy this server somewhere public and give Claude the URL — no desktop app required.
Requirements: A free account on Railway, Render, or any host that can run Node.js
1. Deploy to Railway (easiest)
Or manually:
# Push this folder to a GitHub repo, then:
# 1. Create a new Railway project from that repo
# 2. Railway auto-detects Node.js and runs `npm run build && npm start`
# 3. Set the PORT environment variable (Railway sets this automatically)The server switches to HTTP mode automatically when PORT is set. Your public URL will look like:
https://covidence-mcp-production.up.railway.app2. Connect to claude.ai
Go to claude.ai → Settings → Integrations
Click Add custom connector
Enter your server URL:
https://your-deployment.up.railway.app/sseSave — Claude will confirm the connection
Deploy to Render (alternative)
Create a new Web Service from your GitHub repo
Build command:
npm install && npm run buildStart command:
node dist/index.jsRender sets
PORTautomatically
Deploy to Fly.io (alternative)
fly launch
fly deployThen connect https://your-app.fly.dev/sse in Claude's integrations settings.
Usage
Once connected (either way), the workflow is the same.
First time — tell Claude your login and criteria:
Log in to Covidence with researcher@university.edu, then save these criteria for review 12345:
Include: RCTs and quasi-experimental studies in adults with type 2 diabetes.
Exclude: animal studies, systematic reviews, non-English publications, studies before 2000.Screen a batch:
Screen the next 20 studies in review 12345.Claude calls covidence_screen, opens Covidence in Chrome, reads a batch of abstracts, applies your criteria, and votes on all of them.
Check progress:
How many studies have we screened today?Tools
Tool | What it does |
| Starts a session and returns Chrome navigation steps for login |
| Saves inclusion/exclusion criteria for a review ID |
| Builds a full screening prompt — Claude uses this to drive Chrome |
| Records a vote in the session log |
| Returns all votes cast this session with totals |
| Returns plain-English navigation steps for any specific action |
License
MIT
Available Tools
6 toolscovidence_get_session_logA
Return a summary of all votes cast in the current session.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | If true, clears the log after returning it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing side effects. It presents a read-only style 'Return' behavior but does not disclose that setting clear=true clears the log after returning it; that only appears in the schema. This is a significant transparency gap, though not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It directly states the action and the object, making it easy to scan and quick to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description plus the fully documented schema is mostly complete: the purpose is clear and the clear side effect is described in the schema. The main gap is the lack of any detail about the returned summary's shape, but 'summary' is adequate for a basic retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the sole parameter, clear, is fully documented in the schema with 'If true, clears the log after returning it.' The description adds no parameter semantics beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and a specific resource ('summary of all votes cast in the current session'). This clearly distinguishes the tool from siblings like covidence_log_vote or covidence_screen.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for retrieving a session vote summary, but it gives no explicit guidance about when to use it versus alternatives like covidence_log_vote, nor does it mention prerequisites such as being logged in. Usage context is inferable but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
covidence_loginA
Start a Covidence session. Returns step-by-step instructions for Claude to navigate the login page using Chrome tools. The user's password is never passed through this server.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Covidence account email |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It transparently states that the tool returns navigation instructions rather than performing the login itself, and that the user's password is never passed through the server. This is meaningful behavior beyond the schema, though it could further disclose session persistence or behavior on already-logged-in states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action is front-loaded, and the security-relevant detail about the password is included concisely. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description provides enough context: what the tool does, what it returns, and a critical security boundary. An agent can invoke it correctly and understand the expected result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the email parameter is already documented. The description adds slight context by implying only the email is needed and that the password is handled externally, but it does not materially expand parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Start a Covidence session') and clearly differentiates this tool from the sibling screening/criteria/navigation tools. It also clarifies the tool's output is step-by-step login instructions, not an actual authenticated session, removing ambiguity about its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is the entry point for a Covidence session and should be used when login is needed. It does not explicitly name when-not-to-use it or mention alternatives, but the context is clear enough for an agent to select it ahead of the screening and voting siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
covidence_log_voteA
Record a vote in the session log after Claude has cast it in Chrome. Used to track progress across a session.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | Yes | The vote cast | |
| study_id | Yes | Citation/study ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only says 'Record a vote' and 'Used to track progress,' but it does not disclose whether votes are appended, overwritten, whether duplicate votes are allowed, or what happens on error. This leaves an agent uncertain about repeated calls or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the first front-loads the action and the second gives purpose. There is no wasted wording or redundant restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter logging tool, the description covers what it does and when to use it. Since there is no output schema and no annotations, a bit more detail about duplicate handling or return value would make it fully complete, but the essential information for invocation is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters already have descriptions. The tool description adds no parameter-specific meaning beyond 'vote' and 'session log,' so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Record a vote in the session log.' This clearly differentiates it from siblings like covidence_screen and covidence_get_session_log. The additional phrase 'after Claude has cast it in Chrome' disambiguates the intended workflow context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear condition for use: 'after Claude has cast it in Chrome.' This tells the agent when in the workflow the tool should be invoked. It does not explicitly mention alternatives or exclusions, but the context is specific enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
covidence_screenA
Run a screening session. Returns a complete prompt for Claude to use when navigating Covidence in Chrome — covering navigation, reading abstracts, applying criteria, and casting votes. Claude executes this using Chrome tools.
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes | Covidence review ID | |
| batch_size | No | Number of studies to screen in this batch (default 20) | |
| criteria_override | No | Optional: override stored criteria for this session only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does clarify that the tool returns a prompt that Claude executes via Chrome tools rather than performing actions directly. Still, it does not disclose prerequisites such as login state, whether the prompt will cause real votes to be cast, or how failures are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose ('Run a screening session'), then efficiently describe the return value, scope, and execution model. There is no filler or redundancy; each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool returns and how Claude should execute it, which is essential since there is no output schema. However, it omits context about prerequisites, such as needing covidence_login first, and does not address how the returned prompt relates to stored criteria or the criteria_override parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented. The description adds no extra meaning about review_id, batch_size, or criteria_override beyond what the schema states, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run a screening session') and the concrete deliverable: a complete prompt for Claude to navigate Covidence in Chrome, covering navigation, reading abstracts, applying criteria, and casting votes. This distinguishes it from sibling tools like covidence_nav or covidence_log_vote, which handle individual steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for whole-session screening rather than individual steps by listing navigation, abstract reading, criteria application, and voting together. However, it never explicitly says when to choose this over covidence_nav, covidence_set_criteria, or covidence_log_vote, nor does it mention prerequisites like being logged in.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
covidence_set_criteriaA
Store inclusion/exclusion criteria for a specific review. Claude will apply these automatically during screening sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| criteria | Yes | Full inclusion/exclusion criteria as plain text. Example: "Include: RCTs in adults with type 2 diabetes. Exclude: animal studies, reviews, non-English." | |
| review_id | Yes | Covidence review ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It reveals that criteria are persisted ('Store') and that Claude will automatically apply them during screening, which are useful behavioral traits. However, it does not disclose whether calling the tool overwrites previous criteria, whether authentication is required, or any other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It leads with the core action, then gives the important behavioral consequence, making it easy for an agent to parse quickly and act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter, the description is sufficiently complete: it states what object is operated on, what data is stored, and the downstream effect. It leaves authentication and overwrite behavior unstated, but those are minor for this straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters fully, including an example for the criteria string, giving 100% schema description coverage. The description adds no parameter-level detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Store') with a clear object ('inclusion/exclusion criteria for a specific review'), and adds that Claude will apply them automatically during screening, which clarifies the tool's role. It does not explicitly differentiate from siblings like covidence_screen, but the described behavior makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by noting that criteria will be applied automatically during screening sessions, implying this tool should be used before or in support of screening. It does not explicitly state when not to use it or name alternatives, but the context is sufficient to guide a correct call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v2.0.0- First observed
covidence_get_session_log - First observed
covidence_log_vote - First observed
covidence_login - First observed
covidence_nav - First observed
covidence_screen - First observed
covidence_set_criteria
TDQS
Scored across 6 tools
Tool boundaries are muddled because covidence_login duplicates the login action in covidence_nav, and covidence_screen returns a full prompt that covers the same reading/voting instructions available via covidence_nav. The remaining tools are distinct, but these overlapping pairs make selection ambiguous.
The consistent covidence_ prefix and snake_case help, but the forms are mixed: login and screen are bare verbs, nav is an abbreviation, while set_criteria, log_vote, and get_session_log follow a verb_noun pattern. This is readable but not a uniform naming convention.
With six tools, the server is well-scoped for its niche purpose of guiding Covidence screening sessions. The count is neither bloated nor too thin, and each tool contributes to the core workflow.
The core screening loop—login, set criteria, screen, log votes, and view the session log—is covered, with nav supplying supporting instructions for Chrome-driven actions. Minor gaps like no explicit criteria retrieval or session-end tool are workable but prevent a perfect score.
Maintenance
Related MCP Connectors
Real Chrome for agents: start a browser, read pages as numbered markdown, click, type, hand off.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Related MCP Servers
- AlicenseAqualityDmaintenanceAttaches to your existing Chrome browser to allow Claude to see the active tab, interact via accessibility tree, and detect handoff triggers like 2FA and captchas.10MIT
- FlicenseNot gradedqualityBmaintenanceEnables Claude to navigate, screenshot, read console/network, and crawl links in HTML documentation via a co-located headless Chromium and VSCode webview pane.11 npm-
- FlicenseNot gradedqualityCmaintenanceProvides a direct bridge between Claude and an authenticated Chrome session, enabling fetch requests with session cookies and JavaScript execution within live web pages.-
- FlicenseAqualityCmaintenanceGives Claude control of a real, headed Chromium browser via Playwright, enabling web navigation, clicking, typing, screenshots, and JavaScript evaluation.8-