mcp-server-bioscience
This bioscience MCP server connects AI agents to authoritative biomedical databases for real-time data access. Capabilities include:
Literature Search: Query PubMed and Europe PMC for biomedical literature and abstracts.
Protein Structure: Fetch AlphaFold 3D structure metadata and pLDDT confidence scores via UniProt ID.
Gene Info: Look up gene details and genomic coordinates from Ensembl by gene symbol and species.
Drug/Molecule Search: Search ChEMBL for molecules and drugs by name or ID.
Clinical Trials: Query ClinicalTrials.gov by disease, drug, phase, or status.
Enables searching and retrieving biomedical literature from PubMed, including papers relevant to disease and gene research.
๐งฌ SciAgent (mcp-server-bioscience)
SciAgent (BioScience MCP Server) is a high-performance, security-focused Model Context Protocol (MCP) server that empowers AI Agents with cutting-edge biological, medical, and scientific capabilities.
By connecting your AI Assistant (Claude Desktop, Cursor, Claude Code, Aider, etc.) to SciAgent, you eliminate AI hallucinations regarding scientific facts and instantly grant it the ability to interact with real-world, authoritative scientific databases.
๐ Core Capabilities
๐ Academic Literature Mining: Direct access to PubMed and Europe PMC for the latest peer-reviewed papers.
๐ฅ Clinical Trials Data: Query global clinical trial data from ClinicalTrials.gov by disease, drug, phase, or status.
๐งฌ Genomic Data Analysis: Query genetic variants, gene coordinates, and metadata from Ensembl and dbSNP.
๐งช Drug Discovery: Fetch molecule properties and drug targets from ChEMBL.
๐ฌ Structural Biology: Retrieve and analyze 3D protein structures directly from AlphaFold and UniProt.
Related MCP server: grant-mcp
๐๏ธ Architecture
graph LR
A[AI Agent<br/>Claude/Cursor] <-->|Model Context Protocol| B((SciAgent<br/>MCP Server))
B <--> C[(PubMed)]
B <--> D[(AlphaFold)]
B <--> E[(ChEMBL)]
B <--> F[(Ensembl)]
style B fill:#2b5c8f,stroke:#fff,stroke-width:2px,color:#fff๐ก๏ธ Built for AI Safety (Codex Security Ready)
When AI processes third-party biological data (such as parsing massive PDB files or reading unverified scientific texts), it is highly susceptible to Prompt Injection and Context Overflow.
SciAgent is engineered with a security-first approach:
Sanitizer Middleware: Strictly validates API responses.
Context Management: Truncates and summarizes massive biological payloads before handing data back to the LLM.
๐ Quick Start
1. Installation
This package requires uv or pip. We highly recommend using uv for maximum speed.
# Clone the repository
git clone https://github.com/wangshuaifbj-collab/mcp-server-bioscience.git
cd mcp-server-bioscience
# Install
uv pip install -e .(Ensure that the mcp-bioscience executable is added to your system's PATH after installation).
2. Connect to Your AI
For Claude Desktop
Add the following configuration to your claude_desktop_config.json:
{
"mcpServers": {
"bioscience": {
"command": "mcp-bioscience"
}
}
}For Cursor
Go to
Settings->Features->MCPClick
+ Add New MCP ServerChoose
commandtypeSet Name:
bioscienceSet Command:
mcp-bioscience
For Claude Code
Run the following command in your terminal to easily add the server:
claude mcp add bioscience -- mcp-bioscience๐ฌ Example Use Case
You: "Can you find the latest papers on the mechanism of Imatinib and show me its primary protein target structure?"
Claude (powered by SciAgent):
Calls
search_literature(PubMed) to find the latest Imatinib papers.Calls
get_gene_infoto identify BCR-ABL1.Calls
get_protein_structure(AlphaFold) to return the structural confidence metrics of the target.Provides you with a comprehensive, fully-cited response without hallucinations!
๐ค Contributing
We welcome contributions! Whether it's adding a new database (like KEGG or GEO) or improving the existing parsers, please feel free to open a Pull Request. This project aims to be the standard bioinformatics toolkit for the global Agent ecosystem.
Available Tools
4 toolsget_chembl_moleculeA
Search the ChEMBL database for molecules and drugs by name or SMILES.
Args: query: The compound name (e.g., "aspirin") or ID.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | 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 only states it performs a search, but does not describe return behavior, potential multiplicity, rate limits, or read-only nature. This lack of detail leaves the agent uncertain about side effects and result scope.
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 brief and well-structured, with a single-sentence purpose followed by a clear Args section. Every word earns its place, and the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter search tool with an output schema present, the description is mostly sufficient but has gaps: it does not specify what kind of results are returned (though the output schema may cover this), and it contains a slight inconsistency between 'SMILES' in the main description and 'ID' in the Args section, which could confuse the agent.
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 defines the 'query' field as a string, and there are no schema descriptions (0% coverage). The description compensates by stating the query can be a compound name (with example 'aspirin') or ID, and the main description also mentions SMILES, adding practical meaning beyond the raw 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 ('Search'), the resource ('ChEMBL database'), and the object ('molecules and drugs'), with accepted input types ('name or SMILES'). It distinctly differentiates from sibling tools by targeting molecule/drug data rather than literature, protein structures, or gene info.
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 clear context that this tool is for finding molecule/drug information via ChEMBL, which implicitly tells the agent when to use it versus sibling tools. However, it does not explicitly mention alternatives or exclusion cases, stopping short of the highest rating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gene_infoA
Look up gene details and genomic coordinates from Ensembl.
Args: gene_symbol: The gene name (e.g., "BRCA1"). species: The species name (default: "human").
| Name | Required | Description | Default |
|---|---|---|---|
| species | No | human | |
| gene_symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It states the source (Ensembl) and that it retrieves gene details and coordinates, implying a read-only operation, but it does not disclose potential issues like rate limits, authentication, or behavior for invalid gene symbols. The presence of an output schema covers return format, but other behavioral traits remain unspecified.
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 brief and stays on point: one sentence for purpose and a short list of parameters. All text serves a purpose with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with two parameters and an output schema, the description covers the essential function and parameter meanings. It does not address usage alternatives or edge cases, but given the low complexity and abundant schema information, it is adequately complete.
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 only types and defaults with no descriptions, so the description must compensate. It explains both parameters: gene_symbol is the gene name with an example, and species is the species name with a default. This adds meaningful context beyond the schema, though species could use an example or valid values.
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 tool's function with a specific verb ('look up') and a resource ('Ensembl'), and mentions both gene details and genomic coordinates. This distinguishes it from sibling tools that focus on literature, protein structure, and ChEMBL molecules.
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 explicitly state when to use this tool versus its siblings, but the purpose is distinct and inferable from the name and description. No exclusions are provided, so the usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_protein_structureA
Fetch AlphaFold 3D protein structure metadata and pLDDT confidence scores.
Args: uniprot_id: The UniProt accession ID (e.g., "P00533" for EGFR).
| Name | Required | Description | Default |
|---|---|---|---|
| uniprot_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool fetches metadata and pLDDT scores, implying a read-only operation, but does not mention error behavior, prerequisites, or any side effects. It adds some behavioral context but lacks depth.
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: one purpose sentence and one annotated parameter block. No filler or redundant content, making it easily scannable for an agent.
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 simplicity (single parameter), the presence of an output schema, and the clear purpose statement, the description is complete. It does not need to describe return values since the output schema likely covers that, and the input is fully specified.
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 input schema has 0% description coverage, but the description compensates with an 'Args' section that explains uniprot_id as a UniProt accession ID and provides a concrete example ('P00533' for EGFR). This fully clarifies the parameter's meaning and format.
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 tool's function with a specific verb and resource: 'Fetch AlphaFold 3D protein structure metadata and pLDDT confidence scores.' This is distinct from sibling tools like search_literature or get_gene_info, as it focuses on structure data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when protein structure data is needed, but does not explicitly state when to use this tool over alternatives or mention any exclusions. It provides no guidance on complementary or alternative tools, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_literatureA
Search PubMed for biomedical literature and fetch abstracts. Useful for finding the latest research on diseases, drugs, or genes.
Args: query: Search keywords (e.g., "KRAS lung cancer"). max_results: Maximum number of papers to return.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 transparently states that the tool searches PubMed and fetches abstracts, covering the core behavior. However, it does not mention whether the tool is read-only, any rate limits, or limitations like only returning metadata rather than full text. This is adequate but leaves some gaps.
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 concise and well-structured. It opens with a one-sentence purpose, followed by a brief usage tip, and then a clear two-item argument list. Every sentence earns its place without unnecessary fluff.
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 simplicity of the tool (two parameters) and the presence of an output schema, the description is nearly complete. It states the source (PubMed), the purpose (search literature), and the return type (abstracts). It could be improved by noting that it is limited to PubMed and does not fetch full articles, but overall it is sufficient for a basic search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that explains both parameters: query with an example ('KRAS lung cancer') and max_results as 'Maximum number of papers to return.' This compensates for the schema's lack of property descriptions (0% coverage) and provides additional meaning beyond names and the default value.
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 tool's function with a specific verb and resource: 'Search PubMed for biomedical literature and fetch abstracts.' It distinguishes itself from sibling tools (which focus on protein structures, genes, and molecules) by explicitly mentioning biomedical literature search.
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 clear usage context by stating it is 'Useful for finding the latest research on diseases, drugs, or genes.' While it does not explicitly mention when not to use it or list alternatives, the sibling tools are clearly focused on different domains, making the appropriate use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct bioscience database: PubMed for literature, AlphaFold for protein structure, Ensembl for gene info, and ChEMBL for molecules. There is no overlap in purpose or resource.
All tool names follow a consistent verb_noun pattern: search_literature, get_protein_structure, get_gene_info, get_chembl_molecule. The verbs 'search' and 'get' are used predictably based on the action performed.
With just 4 tools, the server is carefully scoped to cover the most common bioscience queries. This is within the ideal range and each tool earns its place.
The set covers literature search, gene lookup, protein structure, and molecule search, providing a solid foundation for bioscience research. Missing features like variant or pathway lookup are minor gaps rather than critical dead ends.
Maintenance
Related MCP Connectors
Auditable MCP server for PubMed, Europe PMC, ClinicalTrials.gov, and bioRxiv/medRxiv queries
cBioPortal MCP โ cancer genomics portal.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn advanced integrated MCP server platform that combines 600+ tools and multiple biomedical databases to enable comprehensive information retrieval across molecules, proteins, genes, and diseases for accelerating therapeutic research.38
- AlicenseBqualityDmaintenanceMCP server for searching research grants across NSF (US), ERC (EU), and KRF/NRF (Korea) via a unified interface. NIH excludedโcovered by existing connectors.317MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for PubMed search and literature summarization52MIT
- AlicenseAqualityBmaintenancePre-clinical drug discovery intelligence MCP server providing 44 tools to query 800+ drug targets, 12K+ compounds, 46K+ papers, 18K+ clinical trials, and 16K+ patents.44Apache 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/wangshuaifbj-collab/mcp-server-bioscience'
If you have feedback or need assistance with the MCP directory API, please join our Discord server