ProteinAtlas MCP Server
Server is built on Node.js and requires Node.js 18 or higher to run the Human Protein Atlas MCP server
Uses npm for package management, installation, and running server commands
Implements TypeScript best practices for server development and contributions
Supports XML as one of the output formats for protein data retrieval
Supports yarn as an alternative package manager for installation
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ProteinAtlas MCP Server get tissue expression for TP53"
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.

Unofficial Human Protein Atlas MCP Server
A comprehensive Model Context Protocol (MCP) server for accessing Human Protein Atlas data, providing information about protein expression, subcellular localization, pathology, and more.
Overview
The Human Protein Atlas MCP Server enables seamless access to the vast repository of protein data from the Human Protein Atlas (https://www.proteinatlas.org). This server provides tools and resources for:
Protein Search and Information: Search for proteins by name, gene symbol, or description
Tissue Expression: Access tissue-specific expression profiles
Subcellular Localization: Retrieve protein localization data
Pathology Data: Access cancer-related protein information
Blood and Brain Expression: Specialized expression data for blood cells and brain regions
Antibody Information: Validation and staining data for antibodies
Batch Processing: Efficient lookup of multiple proteins
Advanced Search: Complex queries with multiple filters
Related MCP server: PDB MCP Server
Features
Core Capabilities
🔍 Comprehensive Search: Find proteins using various identifiers and keywords
🧬 Multi-Modal Data: Access expression, localization, and pathology information
🩸 Specialized Atlases: Blood Atlas and Brain Atlas data integration
📊 Batch Processing: Efficient handling of multiple protein queries
🔬 Research-Grade Data: High-quality, peer-reviewed protein information
⚡ Fast Response: Optimized for quick data retrieval
Data Types Available
Basic Protein Information
Gene symbols and Ensembl IDs
Protein descriptions and classifications
UniProt cross-references
Expression Data
Tissue-specific RNA expression
Blood cell expression profiles
Brain region expression data
Single-cell expression information
Subcellular Localization
Protein localization patterns
Reliability scores
Immunofluorescence data
Pathology Information
Cancer prognostic markers
Disease associations
Therapeutic targets
Antibody Data
Antibody validation information
Staining patterns
Reliability assessments
Installation
Prerequisites
Node.js 18 or higher
npm or yarn package manager
Setup
Clone or download the server code
Install dependencies:
cd proteinatlas-server npm installBuild the server:
npm run buildThe server is now ready to use!
Usage
Command Line
Run the server directly:
npm start
# or
node build/index.jsMCP Client Integration
Add to your MCP client configuration:
{
"mcpServers": {
"proteinatlas": {
"command": "node",
"args": ["/path/to/proteinatlas-server/build/index.js"]
}
}
}Available Tools
Basic Search and Retrieval
search_proteins
Search Human Protein Atlas for proteins by name, gene symbol, or description.
Parameters:
query(required): Search query (gene name, protein name, or keyword)format: Output format (json, tsv) - default: jsoncolumns: Specific columns to include in resultsmaxResults: Maximum number of results (1-10000) - default: 100compress: Whether to compress the response - default: false
Example:
{
"query": "BRCA1",
"format": "json",
"maxResults": 10
}get_protein_info
Get detailed information for a specific protein by gene symbol.
Parameters:
gene(required): Gene symbol (e.g., BRCA1, TP53)format: Output format (json, tsv, xml, trig) - default: json
get_protein_by_ensembl
Get protein information using Ensembl gene ID.
Parameters:
ensemblId(required): Ensembl gene ID (e.g., ENSG00000139618)format: Output format (json, tsv, xml, trig) - default: json
Expression Analysis
get_tissue_expression
Get tissue-specific expression data for a protein.
Parameters:
gene(required): Gene symbolformat: Output format (json, tsv) - default: json
search_by_tissue
Find proteins highly expressed in specific tissues.
Parameters:
tissue(required): Tissue name (e.g., liver, brain, heart)expressionLevel: Expression level filter (high, medium, low, not detected)format: Output format (json, tsv) - default: jsonmaxResults: Maximum number of results (1-10000) - default: 100
get_blood_expression
Get blood cell expression data for a protein.
get_brain_expression
Get brain region expression data for a protein.
Subcellular Localization
get_subcellular_location
Get subcellular localization data for a protein.
search_by_subcellular_location
Find proteins localized to specific subcellular compartments.
Parameters:
location(required): Subcellular location (e.g., nucleus, mitochondria, cytosol)reliability: Reliability filter (approved, enhanced, supported, uncertain)format: Output format (json, tsv) - default: jsonmaxResults: Maximum number of results (1-10000) - default: 100
Pathology and Cancer
get_pathology_data
Get cancer and pathology data for a protein.
search_cancer_markers
Find proteins associated with specific cancers or with prognostic value.
Parameters:
cancer: Cancer type (e.g., breast cancer, lung cancer)prognostic: Prognostic filter (favorable, unfavorable)format: Output format (json, tsv) - default: jsonmaxResults: Maximum number of results (1-10000) - default: 100
Advanced Features
advanced_search
Perform advanced search with multiple filters and criteria.
Parameters:
query: Base search querytissueSpecific: Tissue-specific expression filtersubcellularLocation: Subcellular localization filtercancerPrognostic: Cancer prognostic filterproteinClass: Protein class filterchromosome: Chromosome filterantibodyReliability: Antibody reliability filterformat: Output format (json, tsv) - default: jsoncolumns: Specific columns to include in resultsmaxResults: Maximum number of results (1-10000) - default: 100
batch_protein_lookup
Look up multiple proteins simultaneously.
Parameters:
genes(required): Array of gene symbols (max 100)format: Output format (json, tsv) - default: jsoncolumns: Specific columns to include in results
compare_expression_profiles
Compare expression profiles between multiple proteins.
Parameters:
genes(required): Array of gene symbols to compare (2-10)expressionType: Type of expression data (tissue, brain, blood, single_cell) - default: tissueformat: Output format (json, tsv) - default: json
Available Resources
The server provides several resource templates for direct data access:
Resource Templates
hpa://protein/{gene}: Complete protein atlas data for a gene symbolhpa://ensembl/{ensemblId}: Complete protein atlas data for an Ensembl gene IDhpa://tissue/{gene}: Tissue-specific expression data for a genehpa://subcellular/{gene}: Subcellular localization information for a genehpa://pathology/{gene}: Cancer and pathology data for a genehpa://blood/{gene}: Blood cell expression data for a genehpa://brain/{gene}: Brain region expression data for a genehpa://antibody/{gene}: Antibody validation and staining information for a genehpa://search/{query}: Search results for proteins matching the query
Example Resource Access
// Access tissue expression data for BRCA1
const resource = await client.readResource("hpa://tissue/BRCA1");
// Search for insulin-related proteins
const searchResults = await client.readResource("hpa://search/insulin");Data Sources
This server accesses data from:
Human Protein Atlas: Main protein atlas database
Tissue Atlas: Normal tissue expression data
Blood Atlas: Blood cell expression profiles
Brain Atlas: Brain region expression data
Pathology Atlas: Cancer-related protein data
Cell Atlas: Single-cell expression information
Rate Limiting and Best Practices
The server implements appropriate rate limiting to respect the Human Protein Atlas API
For batch operations, consider breaking large requests into smaller chunks
Use specific column selections to reduce response size when possible
Cache frequently accessed data when appropriate
Error Handling
The server provides comprehensive error handling:
Invalid Parameters: Clear error messages for incorrect input
Network Issues: Retry logic for transient failures
Data Format Errors: Graceful handling of unexpected response formats
Rate Limiting: Appropriate backoff strategies
Examples
Basic Protein Lookup
// Search for BRCA1 protein
const result = await callTool("search_proteins", {
query: "BRCA1",
format: "json",
});Tissue Expression Analysis
// Get tissue expression for multiple genes
const comparison = await callTool("compare_expression_profiles", {
genes: ["BRCA1", "BRCA2", "TP53"],
expressionType: "tissue",
});Cancer Research
// Find breast cancer prognostic markers
const markers = await callTool("search_cancer_markers", {
cancer: "breast cancer",
prognostic: "unfavorable",
maxResults: 50,
});Batch Processing
// Look up multiple proteins at once
const batchResult = await callTool("batch_protein_lookup", {
genes: ["BRCA1", "BRCA2", "TP53", "EGFR", "MYC"],
format: "json",
});Development
Building from Source
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run devTesting
# Run the server
npm start
# Test with MCP client or direct stdio communicationContributing
Contributions are welcome! Please ensure:
Code follows TypeScript best practices
Error handling is comprehensive
Documentation is updated for new features
Tests are included for new functionality
License
MIT License - see LICENSE file for details.
Support
For issues and questions:
Check the Human Protein Atlas documentation: https://www.proteinatlas.org/about/help
Review the MCP specification: https://modelcontextprotocol.io/
Submit issues via the project repository
Acknowledgments
Human Protein Atlas team for providing the comprehensive protein database
Model Context Protocol community for the standardized communication framework
TypeScript and Node.js communities for the development tools
This server provides programmatic access to Human Protein Atlas data for research and educational purposes. Please cite appropriate sources when using this data in publications.
Citation
If you use this project in your research or publications, please cite it as follows:
author = {Moudather Chelbi},
title = {Human Protein Atlas MCP Server},
year = {2025},
howpublished = {https://github.com/Augmented-Nature/ProteinAtlas-MCP-Server/},
note = {Accessed: 2025-06-29}Available Tools
16 toolsadvanced_searchC
Perform advanced search with multiple filters and criteria
Inputs: query, tissueSpecific, subcellularLocation, cancerPrognostic, +6 more.
batch_protein_lookupC
Look up multiple proteins simultaneously
Inputs: genes (required), format, columns.
compare_expression_profilesC
Compare expression profiles between multiple proteins
Inputs: genes (required), expressionType, format.
get_antibody_infoB
Get antibody validation and staining information for a protein
Inputs: gene (required), format.
get_blood_expressionC
Get blood cell expression data for a protein
Inputs: gene (required), format.
get_brain_expressionC
Get brain region expression data for a protein
Inputs: gene (required), format.
get_pathology_dataB
Get cancer and pathology data for a protein
Inputs: gene (required), format.
get_protein_by_ensemblC
Get protein information using Ensembl gene ID
Inputs: ensemblId (required), format.
get_protein_classesC
Get protein classification and functional annotation data
Inputs: gene (required), format.
get_protein_infoB
Get detailed information for a specific protein by gene symbol
Inputs: gene (required), format.
get_subcellular_locationC
Get subcellular localization data for a protein
Inputs: gene (required), format.
get_tissue_expressionC
Get tissue-specific expression data for a protein
Inputs: gene (required), format.
search_by_subcellular_locationC
Find proteins localized to specific subcellular compartments
Inputs: location (required), reliability, format, maxResults.
search_by_tissueC
Find proteins highly expressed in specific tissues
Inputs: tissue (required), expressionLevel, format, maxResults.
search_cancer_markersC
Find proteins associated with specific cancers or with prognostic value
Inputs: cancer, prognostic, format, maxResults.
search_proteinsC
Search Human Protein Atlas for proteins by name, gene symbol, or description
Inputs: query (required), format, columns, maxResults, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, 'get_protein_info' retrieves general details, while 'get_subcellular_location' focuses on localization, and 'search_by_tissue' finds proteins based on tissue expression. The descriptions clearly differentiate between retrieval, search, and comparison operations.
Tool names follow a highly consistent verb_noun pattern throughout, such as 'get_protein_info', 'search_proteins', and 'compare_expression_profiles'. All tools use snake_case with clear, descriptive verbs like 'get', 'search', and 'compare', making the naming predictable and easy to understand.
With 16 tools, the count is well-scoped for a comprehensive protein atlas server. Each tool earns its place by covering distinct aspects like expression data, pathology, searches, and comparisons, without feeling excessive or thin for the domain's complexity.
The tool surface provides complete coverage for the protein atlas domain, including retrieval (e.g., 'get_protein_info'), search (e.g., 'search_proteins'), comparison (e.g., 'compare_expression_profiles'), and specialized data access (e.g., 'get_pathology_data'). There are no obvious gaps, supporting full agent workflows from basic lookups to advanced analyses.
Maintenance
Related MCP Connectors
Human Protein Atlas (HPA) MCP — keyless.
UniProt MCP — protein sequence + function database.
cBioPortal MCP — cancer genomics portal.
Related MCP Servers
- AlicenseCqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server providing advanced access to the UniProt protein database.2621MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that provides access to the Protein Data Bank (PDB) - the worldwide repository of information about the 3D structures of proteins, nucleic acids, and complex assemblies.528MIT
- AlicenseBqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server that provides access to the AlphaFold Protein Structure Database through a rich set of tools and resources for protein structure prediction analysis.1937MIT
- AlicenseBqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server for accessing the STRING protein interaction database. This server provides powerful tools for protein network analysis, functional enrichment, and comparative genomics through the STRING API.64MIT