Biomedical Research MCP Server
Provides tools for searching, retrieving, and adding biomedical experiment records stored in a local SQLite database.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Biomedical Research MCP ServerSearch experiments for doxorubicin toxicity in cardiac cells"
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.
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 AnswerMCP Server
The MCP server exposes tools and resources for biomedical research workflows.
Tools
Tool | Purpose |
| Calculate stock and diluent volumes using the dilution equation |
| Retrieve an experiment by ID |
| Search experiments using text and structured filters |
| Add a validated experiment record |
| Retrieve document metadata |
| Register a research document |
| Extract and store PDF text and page content |
| Retrieve extracted document content |
| Search extracted research content |
| 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
ProvenanceEvidence 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 CONFIRMEDThis 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_klimitsExperiment 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.pyA 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
uvMCP 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 syncIf the environment has not yet been created:
uv venv
uv syncRunning the MCP Server
The server can be developed and inspected with the MCP development tooling:
uv run mcp dev server.pyThe 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.pyThe 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.pyThe current production-hardening baseline is:
67 tests
OKBefore 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.pyConfiguration
Configuration is controlled through environment variables.
Variable | Purpose | Default |
| MCP server command |
|
| MCP server script |
|
| Default research document |
|
| Number of evidence results |
|
| Maximum agent question length |
|
| Logging level |
|
Example:
set BIOMED_RESEARCH_TOP_K=8
uv run python agent.pyExample 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 provenanceIf 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:
Cleaner package/module structure
Additional automated tests for PDF size and extraction limits
Continuous integration
More comprehensive database initialization
Larger research-document datasets
Optional local embedding/vector retrieval
Improved document provenance
More robust observability
Authentication/authorization for network deployments
Containerized deployment
API/MCP deployment documentation
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 toolsadd_experimentC
Add a new experiment to the database.
| Name | Required | Description | Default |
|---|---|---|---|
| test | No | ||
| organism | No | ||
| cell_type | No | ||
| treatment | No | ||
| experiment_id | Yes | ||
| duration_hours | No | ||
| experiment_name | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| file_name | Yes | ||
| description | No | ||
| document_id | Yes | ||
| document_type | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| stock | Yes | ||
| desired | Yes | ||
| final_volume | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| experiment_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| test | No | ||
| limit | No | ||
| query | No | ||
| organism | No | ||
| cell_type | No | ||
| treatment | No | ||
| duration_hours | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| document_id | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No | ||
| question | Yes | ||
| document_id | No | DOC001 |
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 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.
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.
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.
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.
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.
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.
10 tool updates
v0.1.0- First observed
add_experiment - First observed
add_research_document - First observed
calculate_dilution - First observed
extract_pdf_text - First observed
get_experiment - First observed
get_research_content - First observed
get_research_document - First observed
search_experiments - First observed
search_research_content - First observed
search_research_evidence
TDQS
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.
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.
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.
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
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
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
MCP gateway federating 22 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
PubMed MCP — wraps the NCBI E-utilities API (biomedical literature, free, no auth)
AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP
Related MCP Servers
- FlicenseCqualityDmaintenanceExposes 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-
- AlicenseAqualityAmaintenanceComprehensive MCP server for academic research workflows, enabling paper searching across multiple sources, manuscript processing with citation placeholders, search caching, and citation export.11MIT
- AlicenseBqualityDmaintenanceThis 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.168MIT
- AlicenseNot gradedqualityAmaintenanceEnables 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shaiksameer667ss-prog/biomedical-ai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server