Skip to main content
Glama
samrathp29
by samrathp29

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 Covidence

Related 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 build

Add 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)

Deploy on Railway

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.app

2. Connect to claude.ai

  1. Go to claude.ai → Settings → Integrations

  2. Click Add custom connector

  3. Enter your server URL: https://your-deployment.up.railway.app/sse

  4. Save — Claude will confirm the connection

Deploy to Render (alternative)

  1. Create a new Web Service from your GitHub repo

  2. Build command: npm install && npm run build

  3. Start command: node dist/index.js

  4. Render sets PORT automatically

Deploy to Fly.io (alternative)

fly launch
fly deploy

Then 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

covidence_login

Starts a session and returns Chrome navigation steps for login

covidence_set_criteria

Saves inclusion/exclusion criteria for a review ID

covidence_screen

Builds a full screening prompt — Claude uses this to drive Chrome

covidence_log_vote

Records a vote in the session log

covidence_get_session_log

Returns all votes cast this session with totals

covidence_nav

Returns plain-English navigation steps for any specific action


License

MIT

Available Tools

6 tools
covidence_get_session_logA

Return a summary of all votes cast in the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoIf true, clears the log after returning it

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesCovidence account email

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
decisionYesThe vote cast
study_idYesCitation/study ID

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_navA

Get plain-English navigation instructions for a specific Covidence action. Claude uses these instructions to drive Chrome tools. Actions: login, list_reviews, go_to_screening, read_study, read_batch, cast_vote, get_progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
decisionNoRequired for cast_vote
review_idNoRequired for review-specific actions
batch_sizeNoRequired for read_batch (default 20)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the key trait — the tool returns instructions rather than performing side effects — which is important because its action names (login, cast_vote) could imply direct execution. However, it says nothing about prerequisites (e.g., needing to be logged in first), whether instructions vary based on parameter combinations, or what form the output takes beyond 'plain-English.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: the first states the core purpose, the second provides the consumer context and the action list. The action enumeration slightly duplicates the schema enum, but it is useful for quick scanning and earns its place. No filler or vague abstraction like 'navigate Covidence workflows.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple instruction-retrieval tool, the description is reasonably complete: it identifies the output type (plain-English navigation instructions), the consumer (Claude driving Chrome), and the full action catalog. No output schema exists, so the description's mention of the return format is sufficient. Remaining gaps — which actions depend on which optional parameters — are adequately covered by the input schema itself.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the schema already documents decision, review_id, and batch_size with their per-action requirements. The description adds value primarily by enumerating valid actions in prose, which reinforces the action enum but adds little beyond it. It does not clarify relationships such as which actions require review_id versus which ignore it — the schema's brief 'Required for...' notes carry that weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get plain-English navigation instructions for a specific Covidence action') and lists the full action set. The phrase 'Claude uses these instructions to drive Chrome tools' distinguishes it from sibling tools like covidence_login and covidence_log_vote, which appear to perform actions directly rather than provide navigation guidance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the usage context ('Claude uses these instructions to drive Chrome tools') — an agent can infer this is a pre-step before driving the browser. However, it never explicitly contrasts with the sibling action tools or states when to call this instead of covidence_login or covidence_log_vote. No exclusions or alternatives are named, so the routing logic is left to inference.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
review_idYesCovidence review ID
batch_sizeNoNumber of studies to screen in this batch (default 20)
criteria_overrideNoOptional: override stored criteria for this session only

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
criteriaYesFull inclusion/exclusion criteria as plain text. Example: "Include: RCTs in adults with type 2 diabetes. Exclude: animal studies, reviews, non-English."
review_idYesCovidence review ID

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 6 tool updatesv2.0.0
    • First observedcovidence_get_session_log
    • First observedcovidence_log_vote
    • First observedcovidence_login
    • First observedcovidence_nav
    • First observedcovidence_screen
    • First observedcovidence_set_criteria

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation2/5

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.

Naming Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides a direct bridge between Claude and an authenticated Chrome session, enabling fetch requests with session cookies and JavaScript execution within live web pages.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Gives Claude control of a real, headed Chromium browser via Playwright, enabling web navigation, clicking, typing, screenshots, and JavaScript evaluation.
    8
    -