Skip to main content
Glama
shaiksameer667ss-prog

Biomedical Research MCP Server

Biomedical Research MCP Server

A biomedical research assistant built around the Model Context Protocol (MCP).

The project combines structured biomedical experiment data, research-document ingestion, local evidence retrieval, validation, provenance tracking, and scientific utility tools into an MCP-based workflow.

Overview

The server provides tools for:

  • Searching biomedical experiments stored in SQLite

  • Retrieving individual experiments

  • Adding experiment records

  • Registering research documents

  • Extracting text from PDF research documents

  • Searching extracted research content

  • Retrieving mechanism-focused research evidence

  • Performing dilution calculations

  • Combining multiple tools to answer research questions

  • Checking whether retrieved evidence is aligned with the requested experimental context

  • Reporting evidence provenance and strength

The current retrieval system is fully local and does not require a paid external embedding API.

Related MCP server: scholar-toolkit-mcp

Architecture

                         User Question
                              |
                              v
                       +--------------+
                       | Python Agent |
                       +------+-------+
                              |
                         Tool Planning
                              |
             +----------------+----------------+
             |                |                |
             v                v                v
      Experiment Search   Research RAG    Document Tools
             |                |                |
             v                v                v
         SQLite DB       PDF Content       documents/
                              |
                              v
                     Evidence Extraction
                              |
                              v
                    Cross-Tool Validation
                              |
                              v
                       Provenance Layer
                              |
                              v
                         Final Answer

MCP Server

The MCP server exposes tools and resources for biomedical research workflows.

Tools

Tool

Purpose

calculate_dilution

Calculate stock and diluent volumes using the dilution equation

get_experiment

Retrieve an experiment by ID

search_experiments

Search experiments using text and structured filters

add_experiment

Add a validated experiment record

get_research_document

Retrieve document metadata

add_research_document

Register a research document

extract_pdf_text

Extract and store PDF text and page content

get_research_content

Retrieve extracted document content

search_research_content

Search extracted research content

search_research_evidence

Retrieve mechanism-focused evidence for a research question

Resources

The server exposes research data through MCP resources including:

research://experiments
research://experiments/{experiment_id}

research://documents
research://documents/{document_id}
research://documents/{document_id}/content
research://documents/{document_id}/pages/{page_number}

Research Retrieval Pipeline

The research workflow is designed to avoid treating every text match as scientific evidence.

Research Question
       |
       v
Query expansion
       |
       v
Concept / mechanism detection
       |
       v
Page retrieval
       |
       v
Sentence-level evidence scoring
       |
       v
Topic relevance validation
       |
       v
Mechanism-specific filtering
       |
       v
Evidence strength classification
       |
       v
Provenance

Evidence can be classified as:

  • DIRECT — the requested topic and mechanism are explicitly supported by the evidence sentence.

  • SUPPORTING — the mechanism is explicit, while part of the topic linkage comes from page context.

  • WEAK/INDIRECT — the mechanism is explicit but the requested topic linkage is limited.

The system also reports the document, page, evidence sentence, mechanism, and retrieval/topic scores.

Cross-Tool Validation

When a question requires both experiment data and research evidence, the agent checks alignment across dimensions such as:

  • Treatment

  • Cell model

  • Duration

  • Mechanism

For example, an experiment involving doxorubicin should not silently be combined with evidence that only concerns copper nanoparticles.

The validation layer can distinguish:

MATCH
PARTIALLY ALIGNED
NOT ALIGNED
NOT CONFIRMED

This is a transparent consistency check, not independent scientific validation.

Security and Production Hardening

The server includes several defensive controls:

  • Input validation

  • Question length limits

  • Tool argument length limits

  • Search result limits

  • Evidence top_k limits

  • Experiment field limits

  • Document title/description limits

  • Document ID validation

  • PDF filename validation

  • PDF type validation

  • Path traversal protection

  • Absolute-path rejection

  • Document-directory containment checks

  • File-size limits

  • Extracted-text limits

  • Page-text limits

  • SQLite identifier allowlisting

  • Parameterized SQL values

  • Generic public error messages

  • Internal error logging

  • Configuration through environment variables

Project Structure

The current working layout intentionally keeps application modules at the project root so the existing test suite and MCP development workflow remain simple.

biomedical-ai-mcp/
|
|-- server.py
|-- agent.py
|-- retrieval.py
|-- config.py
|-- run_all_tests.py
|
|-- biomedical.db
|
|-- documents/
|   `-- copper_nanoparticle_study.pdf
|
|-- test_agent_alignment.py
|-- test_production_hardening.py
|-- test_config.py
|-- test_config_integration.py
|-- test_security.py
|-- test_security_mcp.py
|-- test_sql_security.py
|-- test_error_safety.py
`-- test_tool_limits.py

A future refactor can move tests into a dedicated tests/ package after import paths and CI configuration are updated.

Requirements

Recommended environment:

  • Windows

  • Python 3.14

  • uv

  • MCP Python SDK 2.x

  • SQLite

  • Node.js only if using optional Claude Code tooling

The project does not require a paid LLM or paid embedding API for its current local retrieval workflow.

Installation

From the project directory:

uv sync

If the environment has not yet been created:

uv venv
uv sync

Running the MCP Server

The server can be developed and inspected with the MCP development tooling:

uv run mcp dev server.py

The MCP Inspector should connect to the server and expose the available tools and resources.

For stdio execution, the server uses the MCP SDK's asynchronous stdio runner.

Running the Agent

Run the Python research agent with:

uv run python agent.py

The agent accepts research questions and plans the appropriate MCP tool calls.

Example questions:

Which experiments used liver cells?

Which experiment tested doxorubicin on liver cells for two days?

What mechanisms are involved in copper nanoparticle toxicity?

Which experiment tested doxorubicin on liver cells for two days, and what does the research document say about the mechanisms of toxicity?

For combined questions, the agent can execute multiple tools and then perform cross-tool relevance checks before presenting the result.

Running Tests

Run the complete automated test suite:

uv run python run_all_tests.py

The current production-hardening baseline is:

67 tests
OK

Before committing future changes, the full test suite should continue to pass.

A syntax check can also be run with:

uv run python -m py_compile server.py

Configuration

Configuration is controlled through environment variables.

Variable

Purpose

Default

BIOMED_MCP_SERVER_COMMAND

MCP server command

python

BIOMED_MCP_SERVER_SCRIPT

MCP server script

server.py

BIOMED_DEFAULT_DOCUMENT_ID

Default research document

DOC001

BIOMED_RESEARCH_TOP_K

Number of evidence results

5

BIOMED_MAX_QUESTION_LENGTH

Maximum agent question length

2000

BIOMED_LOG_LEVEL

Logging level

INFO

Example:

set BIOMED_RESEARCH_TOP_K=8
uv run python agent.py

Example Research Workflow

A multi-tool research question can follow this pattern:

User question
     |
     v
Agent identifies required tools
     |
     +--> search_experiments
     |
     +--> search_research_evidence
     |
     v
Compare experiment and evidence context
     |
     v
Check treatment/cell model/duration/mechanism alignment
     |
     v
Return findings with evidence provenance

If the evidence is about a different treatment from the experiment, the agent reports the mismatch instead of presenting unrelated evidence as if it supported the experiment.

Current Research Dataset

The example database includes experiments such as:

  • Cytotoxicity study using copper nanoparticles on skin cells

  • Antimicrobial susceptibility study using bacterial culture

  • Drug cytotoxicity study using doxorubicin on liver cells

The example research document is a review concerning manufactured copper nanoparticles and their toxicological mechanisms.

Limitations

This is a portfolio and research-assistance project, not a clinical decision-support system.

Important limitations include:

  • Local retrieval is not equivalent to a production vector database.

  • Evidence retrieval does not establish causality.

  • Topic alignment is not independent scientific verification.

  • The example dataset is small.

  • The current system does not replace expert literature review.

  • Scientific conclusions depend on the source documents available to the system.

Future Improvements

Planned production-oriented improvements include:

  1. Cleaner package/module structure

  2. Additional automated tests for PDF size and extraction limits

  3. Continuous integration

  4. More comprehensive database initialization

  5. Larger research-document datasets

  6. Optional local embedding/vector retrieval

  7. Improved document provenance

  8. More robust observability

  9. Authentication/authorization for network deployments

  10. Containerized deployment

  11. API/MCP deployment documentation

  12. Evaluation datasets for retrieval quality

Portfolio Value

This project demonstrates practical experience with:

  • Python

  • MCP

  • AI agent tool planning

  • Retrieval-augmented research workflows

  • Biomedical informatics

  • SQLite

  • PDF processing

  • Information retrieval

  • Evidence extraction

  • Data validation

  • Cross-tool reasoning

  • Security hardening

  • Configuration management

  • Automated testing

  • Software engineering practices

License

This project is intended as a portfolio/educational software project. See LICENSE for the current license terms.

Available Tools

10 tools
add_experimentC

Add a new experiment to the database.

ParametersJSON Schema
NameRequiredDescriptionDefault
testNo
organismNo
cell_typeNo
treatmentNo
experiment_idYes
duration_hoursNo
experiment_nameYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states only that an experiment is added, but does not mention duplicate handling, required concept relationships, side effects, idempotency, or any validation behavior. This is insufficient for a mutation tool.

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 or repetition. It communicates the core action and resource immediately, which is appropriate for a short purpose statement.

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

Completeness1/5

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

For a 7-parameter creation tool with no output schema, no annotations, and no parameter documentation, this description is far too sparse. An agent cannot determine what data is needed, what the response will be, or how failures are handled, making the tool risky to invoke correctly.

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

Parameters1/5

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

Schema description coverage is 0% across 7 parameters, and the description provides no parameter-level meaning beyond 'experiment'. Required versus optional fields, the role of fields like test, organism, cell_type, treatment, and duration_hours, and how they relate to the experiment are entirely unexplained.

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 ('Add') and resource ('experiment to the database'), clearly indicating a creation operation. It distinguishes itself from sibling tools like get_experiment, search_experiments, and add_research_document by naming the experiment resource explicitly.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as add_research_document or update/search tools. The 'Add' phrasing implies creation, but there are no stated conditions, prerequisites, or exclusions to help an agent select it confidently.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_research_documentC

Add research document metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
file_nameYes
descriptionNo
document_idYes
document_typeNoPDF

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the burden of behavioral disclosure. It only says 'Add research document metadata' without explaining whether this creates a new record, updates an existing one, requires an existing experiment, or has 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.

Conciseness4/5

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

The description is a single short sentence with no filler or wordiness. It is front-loaded with the action and resource, though it is arguably too terse to fully support tool selection and invocation.

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

Completeness1/5

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

Given no annotations, no output schema, and 0% parameter coverage, the description leaves the agent with many unknowns: what 'metadata' includes, what the document_id refers to, what document_type values are valid, and what happens after calling the tool. This is inadequate for correct invocation in non-obvious contexts.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any parameters or their meanings. The tool has five parameters, three required, and the description adds no semantic value beyond the property names already present in the schema.

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 states a specific action ('Add') and resource ('research document metadata'), making the tool's core function clear. It does not explicitly differentiate from sibling tools like get_research_document or add_experiment, but 'document metadata' does imply a metadata-only scope.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as get_research_document or extract_pdf_text. No context is given about prerequisites, typical use cases, or situations where a sibling tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_dilutionC

Calculate dilution using C1V1 = C2V2.

ParametersJSON Schema
NameRequiredDescriptionDefault
stockYes
desiredYes
final_volumeYes

TDQS

C2.4/5.0
Behavior2/5

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

There are no annotations describing side effects, safety, or read-only/destructive nature. The verb 'calculate' implies a pure computation with no side effects, but this is not explicitly stated, so the agent cannot be certain that no data modifications occur. The description does not disclose any behavioral aspects beyond the calculation itself.

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?

The description is extremely concise, consisting of a single sentence, which adheres to the principle of brevity. However, it lacks any structural organization (e.g., bullet points or sections) and is so terse that it omits critical details, making it less effective than a slightly longer but more structured description.

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

Completeness1/5

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

The description is severely incomplete for an agent to use the tool correctly. It does not explain the formula's application, the meaning of each parameter, what output to expect, or any edge cases (e.g., division by zero). With no output schema and ambiguous parameters, an agent would be unable to determine the correct inputs or interpret the result, rendering the tool effectively unusable without external knowledge.

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

Parameters1/5

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

The schema provides no descriptions for parameters, and the names 'stock', 'desired', and 'final_volume' are ambiguous in the context of the formula. It is unclear whether 'stock' refers to concentration or volume, and which parameter is the unknown being calculated. The lack of any explanation makes it impossible to correctly interpret the parameters without additional knowledge.

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 clearly states the action ('Calculate') and the subject ('dilution') with the formula C1V1 = C2V2, making the primary purpose evident. However, it does not specify what result is produced (e.g., the missing volume), so the output is not fully clear, preventing a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like search_experiments or add_research_document. The description gives no context about typical scenarios (e.g., preparing a solution) or how it relates to sibling tools, leaving the agent to infer its applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_pdf_textB

Extract text from a PDF and save it into research_content and research_pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of disclosing side effects. It does state that the tool writes into two specific stores, which is helpful. However, it does not say whether the operation overwrites existing content, creates duplicates, requires special permissions, or behaves on failure.

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?

A single, front-loaded sentence states the action first and the storage target second. There is no redundant text or filler; every part of the sentence is informative.

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

Completeness2/5

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

This is a mutation tool with no annotations and no output schema, so the return/verification behavior is unspecified. It also lacks details on what happens if the document_id is invalid or the PDF cannot be parsed. The side-effecting behavior is identified, but an agent still cannot predict the result or how to confirm success.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the sole required parameter document_id. The parameter is reasonably inferable from its name/title, but the description adds no value beyond the schema, so it only partially compensates.

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 states a specific action (extract text from a PDF) and the resulting side effect (saving into research_content and research_pages). It distinguishes itself from get/search/list siblings by describing an ingest operation, though it does not explicitly name sibling alternatives, so it falls just short of a 5.

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 intended use case is implied: call this when a PDF's text needs to be extracted and persisted for later research. However, there is no explicit when-to-use guidance, no prerequisites, and no mention of when a sibling such as add_research_document would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_experimentB

Retrieve one experiment by experiment ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
experiment_idYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations to fall back on, the description carries the full burden of disclosing behavior. It only states 'Retrieve', which implies a read-only operation, but does not mention any side effects, error conditions, or return 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?

The description is a single, concise sentence with no redundant or extraneous information. It gets straight to the point.

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 is adequate for a simple retrieval operation but omits details that would make it fully complete, such as what the response looks like (since there is no output schema) or any potential errors. It is not severely lacking, but it leaves some gaps.

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

Parameters2/5

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

The schema only provides the parameter name 'experiment_id' and its type. The description does not add any additional meaning about what constitutes a valid ID, how to obtain it, or any constraints, leaving the parameter semantics entirely to 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 clearly states the action ('Retrieve') and the target ('one experiment'), with a specific identifier (experiment ID). It is unambiguous and directly conveys the tool's purpose.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives like 'search_experiments'. It lacks explicit context about choosing this tool for direct ID-based lookup rather than searching.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_research_contentC

Retrieve extracted research document content.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read operation and that content is 'extracted,' but it does not explain return format, whether raw or structured content is returned, or any limitations. This is minimal transparency.

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?

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a simple retrieval tool, though it lacks additional useful context.

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

Completeness2/5

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

Given the absence of annotations, output schema, and usage guidance, the description is not complete enough for an agent to confidently select and invoke this tool. It does not clarify the relationship to get_research_document or search_research_content, nor what 'extracted' content means in practice.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate for the single parameter, document_id. It does not describe what the document ID represents, how to obtain it, or any format expectations. The parameter name and title provide some self-evident meaning, but the description adds nothing beyond the schema.

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 states a clear verb and resource: 'Retrieve extracted research document content.' It is reasonably specific about the operation and object, though it does not explicitly differentiate from sibling tools like get_research_document or search_research_content.

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

Usage Guidelines2/5

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

No usage context is provided. The description does not say when to use this tool instead of get_research_document, search_research_content, or extract_pdf_text, and there are no exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_research_documentB

Retrieve research document metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. 'Retrieve research document metadata' implies a read-only metadata lookup, but it does not disclose what metadata fields are returned, behavior for missing documents, or error conditions. It is minimally transparent.

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 concise sentence with no filler. It states the action and object directly and is appropriately sized for a simple retrieval tool.

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

Completeness2/5

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

While the tool is simple, the absence of annotations, output schema, and usage guidance makes the description incomplete. An agent does not know what metadata is returned, how to distinguish this from get_research_content, or how to handle potential failures.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for explaining the parameter. It does not mention document_id format, type, meaning, or any constraints. The parameter name and title are self-explanatory to a degree, but the description adds no clarification.

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, 'Retrieve', with a clear resource, 'research document metadata.' It distinguishes itself from sibling get_research_content by specifying metadata rather than content, though it does not explicitly name that alternative.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus siblings like get_research_content, search_research_content, or get_experiment. There is no mention of prerequisites, fallback tools, or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_experimentsC

Search experiments using:

  • general text query

  • cell type

  • treatment

  • organism

  • test

  • duration in hours

ParametersJSON Schema
NameRequiredDescriptionDefault
testNo
limitNo
queryNo
organismNo
cell_typeNo
treatmentNo
duration_hoursNo

TDQS

C2.9/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 full burden of behavioral disclosure. It only lists search dimensions and does not explain result behavior, whether filters are ANDed, whether query is a full-text search, pagination, default limits, or any side effects. This is a meaningful gap for a tool with no annotation support.

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 appropriately sized and structured as a scannable bullet list. Every line adds a distinct filter option and there is no redundant or filler content.

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

Completeness2/5

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

For a tool with 7 parameters, no output schema, and no annotations, the description is incomplete. It lacks guidance on query semantics, filtering behavior, the purpose of the limit parameter, and how results are returned or sorted. An agent would need additional inference or trial-and-error to use the tool reliably.

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 0%, so the description must compensate. It does add value by listing six of the seven parameters and clarifying 'general text query' as the query parameter and 'duration in hours' as the duration filter. However, it omits the 'limit' parameter entirely and does not explain how multiple filters interact or what the default behavior is.

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 clearly states the verb 'Search' and the resource 'experiments', and enumerates the filterable fields such as cell type, treatment, organism, test, and duration in hours. However, it does not explicitly differentiate itself from sibling search tools like search_research_content or search_research_evidence, so it is clear but lacks sibling differentiation.

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

Usage Guidelines2/5

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

The description gives no guidance about when to use this tool versus alternatives such as get_experiment or search_research_content. It does not mention whether filters combine, how to scope a search, or when the other search tools would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_research_contentC

Search extracted research pages using SQL text matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
document_idNo

TDQS

C2.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It reveals the underlying mechanism ('SQL text matching') but does not mention return behavior, pagination, result ordering, limitations, or whether the operation is read-only or has 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.

Conciseness4/5

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

The description is very short and front-loaded, with no filler or redundancy. The main action and target are stated immediately, though the brevity leaves substantial gaps in other dimensions.

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

Completeness2/5

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

For a tool with three parameters, no output schema, and no annotations, this description is too sparse to fully guide an agent. The agent is left uncertain about what inputs mean, what the result will look like, and how this search differs from search_research_evidence or search_experiments.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the missing parameter documentation, but it does not. 'Search' implies the role of the query parameter, but limit and document_id are not explained at all, and the description adds no detail about how they affect the search.

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 states a specific verb ('Search'), a clear resource ('extracted research pages'), and the method ('SQL text matching'). It is not a tautology and gives the agent a concrete idea of what the tool does, though it does not explicitly distinguish itself from siblings like search_research_evidence or search_experiments.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus the sibling tools. The description simply states what it does, without saying when it is preferred, when it should be avoided, or what alternative should be used for different search needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_research_evidenceC

Retrieve relevant biomedical evidence using the local retrieval system.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_kNo
questionYes
document_idNoDOC001

TDQS

C2.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 full behavioral burden. It only indicates a non-mutating local retrieval operation but does not disclose ranking behavior, return format, scope limits, pagination, or failure behavior.

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?

The description is one short sentence with no filler and leads with the action verb. It is efficient, though brevity comes at the cost of useful contextual information.

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

Completeness2/5

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

With three parameters, zero schema descriptions, no output schema, and no annotations, the description is too thin for an agent to call the tool confidently. The ambiguity against similar sibling tools adds to the incompleteness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention question, top_k, or document_id. The agent is left without any explanation of the required argument or the defaults, beyond raw parameter names.

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 states a clear action ('retrieve') and a resource ('biomedical evidence') with a mechanism ('local retrieval system'). However, it does not distinguish this tool from sibling search_research_content or get_research_content, and 'evidence' remains somewhat loosely scoped.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as search_research_content or search_experiments. No usage conditions, exclusions, or selection criteria are provided.

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. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedadd_experiment
    • First observedadd_research_document
    • First observedcalculate_dilution
    • First observedextract_pdf_text
    • First observedget_experiment
    • First observedget_research_content
    • First observedget_research_document
    • First observedsearch_experiments
    • First observedsearch_research_content
    • First observedsearch_research_evidence

TDQS

B3.1/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: experiment operations, document metadata, extracted content, evidence search, and calculation are separated by domain object. The only mild ambiguity is between search_research_content and search_research_evidence, but their descriptions indicate different search mechanisms.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern using get, add, search, extract, and calculate. The naming is predictable and makes the action and target clear across the entire set.

Tool Count5/5

Ten tools is well within the ideal range for a domain-specific server. Each tool covers a distinct aspect of experiment management, research document handling, content extraction, evidence retrieval, or calculation without unnecessary overlap.

Completeness3/5

The server supports creating, retrieving, and searching experiments and research documents, plus PDF content extraction and evidence lookup, which covers primary workflows. However, there are no update or delete operations for experiments or documents, and research document metadata cannot be searched directly, leaving notable lifecycle gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    Exposes a local biomedical literature pipeline as MCP tools for automated research workflows. Enables literature search, open-access paper retrieval, and draft generation for biomedical and pathology domains through standard MCP clients.
    6
    -
  • A
    license
    A
    quality
    A
    maintenance
    Comprehensive MCP server for academic research workflows, enabling paper searching across multiple sources, manuscript processing with citation placeholders, search caching, and citation export.
    11
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    This MCP server provides 16 intelligent tools for searching, retrieving, and linking biomedical literature from PubMed and PMC. It enables LLM applications to perform complex queries, batch processing, and cross-database linking.
    16
    8
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI-assisted scientific research workflow management through MCP, including project creation, ideation, experiment execution, and artifact handling, with integration for ChatGPT, Codex, and Claude Code.
    Apache 2.0

Latest Blog Posts

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/shaiksameer667ss-prog/biomedical-ai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server