Skip to main content
Glama

eggNOG-MCP

Version Python License: MIT Database: eggNOG 7

中文文档 | English

⚠️ Disclaimer: This is a community-maintained, unofficial MCP server for the eggNOG database. It is not affiliated with, endorsed by, or maintained by the eggNOG team or EMBL. The official eggNOG database is available at https://eggnogdb.org/.

A Model Context Protocol (MCP) server that provides AI assistants with access to the eggNOG 7 database — a comprehensive resource for orthology assignments and functional predictions for comparative genomics.


Table of Contents


Related MCP server: Bio-MCP BLAST

Overview

eggNOG (evolutionary genealogy of genes: Non-supervised Orthologous Groups) is a database of orthology relationships, functional annotations, and phylogenetic trees covering 12,000+ annotated species, 59 million+ protein sequences, and 3.1 million+ orthologous groups.

eggNOG-MCP bridges the eggNOG database and Large Language Models (LLMs) by implementing the Model Context Protocol. Once configured, any MCP-compatible AI assistant (such as Claude Desktop, Cursor, or custom agents) can query eggNOG directly through natural language.

The server communicates with eggNOG's native JSON API (/e7api/) for reliable, structured data access — no HTML scraping required.

What can you do with eggNOG-MCP?

  • 🔬 Look up a protein by its eggNOG ID and retrieve its functional annotation

  • 🧬 Query an orthologous group (OG) to understand evolutionary relationships

  • 📋 List all proteins within an OG, grouped by species

  • 🔗 Retrieve pairwise orthologs for a protein across species

  • 🔍 Search the eggNOG database by protein name, UniProt ID, or family name

  • 📊 Get database statistics (species, proteins, trees, OGs counts)

  • 📥 List all downloadable bulk data files

  • 🏷️ Annotate a protein with KEGG KO terms and GO terms with confidence scores

  • 🧫 Browse all members of a protein family


Features

Feature

Description

Protein Lookup

Retrieve protein family, predicted functions, and OGs for any eggNOG protein ID

OG Query

Look up orthologous group details including evolutionary origin, member counts, and functional annotation

OG Content

List all proteins within an OG, grouped by species

Orthologs

Retrieve pairwise orthologs for a protein across all species

Protein Family

Browse all species and proteins within a protein family cluster

Database Search

Search by protein name, UniProt ID, or family name

Functional Annotation

Get structured KEGG KO and GO term annotations with confidence scores

Database Statistics

Access current eggNOG 7 release statistics

Downloads Index

List all bulk-downloadable data files with URLs and descriptions

Taxon Lookup

Look up taxonomic information by NCBI taxonomy ID

MCP Resources

Expose version info, stats, and downloads as MCP resources

JSON API

Uses eggNOG's native /e7api/ JSON endpoints for reliable data access

Async HTTP

Built on httpx for efficient async HTTP requests

Error Resilient

All tools return structured error messages instead of crashing


Quick Start

# Install
pip install eggnog-mcp

# Run (stdio transport — for use with MCP clients)
eggnog-mcp

Or run directly with Python:

python -m eggnog_mcp.server

Installation

git clone https://github.com/ZengZichao/eggNOG-MCP.git
cd eggNOG-MCP
pip install -e .

Option 2: Install dependencies only

pip install -r requirements.txt

Requirements

  • Python ≥ 3.10

  • mcp ≥ 2.0.0 (Model Context Protocol SDK)

  • httpx ≥ 0.27.0 (async HTTP client)


Configuration

Claude Desktop

Add the following to your claude_desktop_config.json file:

{
  "mcpServers": {
    "eggnog-mcp": {
      "command": "eggnog-mcp",
      "args": []
    }
  }
}

If you installed from source without adding to PATH, use the full path:

{
  "mcpServers": {
    "eggnog-mcp": {
      "command": "python",
      "args": ["-m", "eggnog_mcp.server"],
      "env": {
        "PYTHONPATH": "/path/to/eggNOG-MCP/src"
      }
    }
  }
}

Cursor IDE

Add to your Cursor MCP settings:

{
  "mcpServers": {
    "eggnog-mcp": {
      "command": "eggnog-mcp"
    }
  }
}

Generic MCP Client

The server uses stdio transport by default. Start it with:

eggnog-mcp

The server communicates via stdin/stdout using the MCP protocol.

TLS / Network Issues

If you encounter TLS connection errors when connecting to https://eggnogdb.org, you can modify the client initialization in src/eggnog_mcp/client.py to use HTTP or disable SSL verification:

# Option 1: Use HTTP
_global_client = eggNOGClient(base_url="http://eggnogdb.org")

# Option 2: Disable SSL verification (HTTPS)
_global_client = eggNOGClient(verify_ssl=False)

Available Tools

1. get_protein

Look up detailed information for a protein in the eggNOG database.

Parameter

Type

Required

Description

protein_id

str

Yes

eggNOG protein ID in taxid.seqid format

Example:

protein_id = "9606.ENSP00000269305"

Returns: Protein name, species, taxid, UniProt ID, Pfam domains, KEGG KO terms, orthologous groups list, predicted functions (KEGG KO + GO terms with confidence), selected OG details.


2. get_orthologous_group

Look up information for an orthologous group (OG).

Parameter

Type

Required

Description

og_id

str

Yes

OG ID in family@taxid|level format

Example:

og_id = "P53@33154|A-1"

Returns: OG ID, protein family, evolutionary origin, taxonomic lineage, protein count, species count, functional annotation (KEGG KO + GO slim), all OGs in the same family.


3. get_og_content

Retrieve the list of proteins within an orthologous group.

Parameter

Type

Required

Description

og_id

str

Yes

OG ID in family@taxid|level format

max_species

int

No

Maximum number of species to include (default: 50)

Example:

og_id = "P53@33154|A-1", max_species = 10

Returns: Total species count, total protein count, species list with protein IDs.


4. get_orthologs

Retrieve pairwise orthologs for a protein.

Parameter

Type

Required

Description

protein_id

str

Yes

eggNOG protein ID in taxid.seqid format

max_species

int

No

Maximum number of species to include (default: 50)

Example:

protein_id = "9606.ENSP00000269305", max_species = 10

Returns: Total ortholog species count, orthologs grouped by species with protein IDs.


5. search_eggnog

Search the eggNOG database for proteins or orthologous groups.

Parameter

Type

Required

Description

query

str

Yes

Search query (≥ 3 characters)

Example:

query = "P53"
query = "P04637"
query = "TP53"

Returns: List of matching proteins and OGs with type, ID, label, and URL.


6. annotate_protein

Annotate a protein with functional information (KEGG KO + GO terms).

Parameter

Type

Required

Description

protein_id

str

Yes

eggNOG protein ID in taxid.seqid format

Example:

protein_id = "9606.ENSP00000269305"

Returns: Structured annotation with KEGG KO terms, GO slim terms, KEGG gene symbols, protein family, Pfam domains, orthologous groups, and selected OG details.


7. get_protein_family

Retrieve protein family (cluster) content from eggNOG.

Parameter

Type

Required

Description

family_name

str

Yes

Protein family / cluster name

max_species

int

No

Maximum number of species to include (default: 50)

Example:

family_name = "P53", max_species = 10

Returns: Total species count, total protein count, species list with protein IDs, species summary.


8. get_database_stats

Retrieve summary statistics of the eggNOG 7 database.

Parameters: None

Returns: Annotated species count, protein sequences count, phylogenetic trees count, orthologous groups count.


9. list_downloads

List all downloadable bulk data files.

Parameters: None

Returns: List of files with filenames, URLs, and descriptions (protein sequences, OG info, trees, taxonomic info, etc.).


10. get_taxid_info

Look up taxonomic information for an NCBI taxonomy ID.

Parameter

Type

Required

Description

taxid

int

Yes

NCBI taxonomy ID

Example:

taxid = 9606

Returns: Taxonomic lookup guidance, download URL for the taxid info TSV file, and column format description.


Available Resources

Resource URI

Description

eggnog://version

Server version and database info

eggnog://database/stats

Cached database statistics

eggnog://database/downloads

List of downloadable files


Usage Examples

Example 1: Annotate Human P53

User:     "What is the functional annotation of human P53 in eggNOG?"
Assistant: [calls annotate_protein with protein_id="9606.ENSP00000269305"]

Result includes:

  • Protein family: P53

  • KEGG KO terms: K04451 (TP53, 11.47%), K10148 (TP73, 14.34%), K10149 (TP63, 19.80%)

  • GO terms: GO:0006355 (regulation of transcription, 68.83%), GO:0006351 (transcription, 68.83%)

  • Pfam domains: P53_TAD, TAD2, P53, P53_tetramer

  • 35 orthologous groups spanning 438 species

Example 2: Search for P53

User:     "Search eggNOG for P53"
Assistant: [calls search_eggnog with query="P53"]

Result: 10 matches including proteins (e.g. PPP5_HUMAN) and OGs (e.g. P53@33154|A-1).

Example 3: Query an Orthologous Group

User:     "Tell me about the P53 orthologous group at the Opisthokonta level"
Assistant: [calls get_orthologous_group with og_id="P53@33154|A-1"]

Result: Evolutionary origin (Opisthokonta), 1,081 proteins, 438 species, KEGG KO and GO annotations, full family OG list.

Example 4: List Proteins in an OG

User:     "Show me the proteins in the P53 OG at the Opisthokonta level"
Assistant: [calls get_og_content with og_id="P53@33154|A-1", max_species=5]

Example 5: Get Orthologs

User:     "What are the orthologs of human P53?"
Assistant: [calls get_orthologs with protein_id="9606.ENSP00000269305"]

Example 6: Database Statistics

User:     "How many species are in eggNOG?"
Assistant: [calls get_database_stats]

Result: 12k+ annotated species, 59M+ protein sequences, 1.1M+ phylogenetic trees, 3.1M+ orthologous groups.


Project Structure

eggNOG-MCP/
├── pyproject.toml              # Project configuration & dependencies
├── requirements.txt            # pip requirements
├── LICENSE                     # MIT License
├── .gitignore                  # Git ignore rules
├── README.md                   # English documentation (this file)
├── README_zh.md                # Chinese documentation
├── src/
│   └── eggnog_mcp/
│       ├── __init__.py         # Package initialization
│       ├── version.py          # Version info
│       ├── client.py           # eggNOG API client (async HTTP, JSON API)
│       └── server.py           # MCP server & tool definitions (10 tools)
└── tests/
    └── test_client.py          # Unit tests for the API client

Development

Setup

# Clone and install in development mode
git clone https://github.com/ZengZichao/eggNOG-MCP.git
cd eggNOG-MCP
pip install -e ".[dev]"

Linting

ruff check src/
ruff format src/

Running Tests

# Run the full test suite
pytest tests/ -v

Testing the Server

# Run the server and verify it starts
eggnog-mcp

# Or test with the MCP inspector
npx @modelcontextprotocol/inspector eggnog-mcp

API Endpoints Used

The client communicates with eggNOG's native JSON API:

Endpoint

Description

/e7api/protein/{id}/

Protein details + OGs + functions

/e7api/og/{id}/

Orthologous group details

/e7api/og_content/{id}/

Proteins within an OG

/e7api/clu_content/{name}/

Proteins within a family cluster

/e7api/orthologs/{id}/

Pairwise orthologs for a protein

/e7api/suggest_entries/{query}/

Search / autocomplete

/stats/

Database statistics (HTML)


License

This project is licensed under the MIT License.

The eggNOG database itself is maintained by the eggNOG Team at EMBL. Please refer to https://eggnogdb.org/ for database usage terms and citation requirements.

Note: This is an unofficial, community-maintained project. It is not affiliated with or endorsed by the eggNOG team or EMBL.


Acknowledgements

  • eggNOG Team — For creating and maintaining the eggNOG database. Visit https://eggnogdb.org/ for more information.

  • Anthropic — For the Model Context Protocol specification and SDK.

  • Huerta-Cepas J, et al. — eggNOG 7.0: comparative genomics at the scale of 12,000+ genomes. Please cite the original eggNOG publications when using this tool in research.

Key References

  • Huerta-Cepas, J., et al. (2023). eggNOG 7.0: comparative genomics at the scale of 12,000+ genomes. Briefings in Bioinformatics, 24(1), bbac483.

  • The Model Context Protocol specification: https://modelcontextprotocol.io/


Available Tools

10 tools
annotate_proteinA

Annotate a protein with functional information from eggNOG.

Returns a structured functional annotation for the given protein, including KEGG KO terms, GO slim terms, protein family, Pfam domains, and orthologous groups. This is a higher-level convenience wrapper around get_protein that emphasises the annotation results.

Parameters

protein_id : str The eggNOG protein identifier in the format taxid.seqid. Examples: - 9606.ENSP00000269305 (human P53) - 4932.YJR154W (yeast)

Returns

str JSON string with KEGG KO terms, GO terms, and cross-references.

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose that this is a wrapper delegating to get_protein and lists the annotation categories returned, but it says nothing about read-only safety, authentication, rate limits, or error behavior for an unknown protein_id.

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?

Front-loaded with purpose and return content, then a compact parameter block. Slightly redundant: the 'Parameters' and 'Returns' sections restate the input schema and output schema rather than adding new information, which costs a little space.

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

Completeness4/5

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

For a single-parameter read tool with an existing output schema, the description covers purpose, the identifier format, the wrapper relationship, and return categories. Only minor behavioral detail (safety/permissions, failure on malformed IDs) is absent, which is acceptable given the simplicity.

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

Parameters5/5

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

Schema description coverage is 0% and the schema gives only a bare 'string' title, so the description must compensate — and it does fully: it defines the required 'taxid.seqid' format and supplies two concrete examples (human P53, yeast). An agent can construct a valid identifier from the description alone.

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?

States a specific verb and resource ('Annotate a protein with functional information from eggNOG') and enumerates the annotation content (KEGG KO, GO slim, family, Pfam, orthologous groups). It also distinguishes itself from the sibling 'get_protein' by declaring it is a higher-level convenience wrapper that emphasises annotation results.

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

Usage Guidelines4/5

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

Names the sibling it overlaps with ('get_protein') and implies the selection criterion: use this when you want the annotation results surfaced. It stops short of an explicit when-not or a fuller routing rule among the other siblings (get_orthologs, get_protein_family, get_orthologous_group).

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

get_database_statsA

Retrieve summary statistics of the eggNOG 7 database.

Returns the number of annotated species, protein sequences, phylogenetic trees, and orthologous groups in the current eggNOG release.

Returns

str JSON string with database statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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, yet it says nothing about read-only/side-effect status, authentication, rate limits, or caching. The only behavioral hint is that figures reflect the 'current eggNOG release', which is thin for a tool with zero annotation coverage.

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?

Front-loaded with the core purpose and reasonably short, but the word 'Returns' is used three times across a prose sentence, an enumerated list, and a NumPy-style Returns block, creating redundant restatement of the same return information.

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

Completeness4/5

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

For a zero-argument, read-only statistics tool with an output schema present, the description covers what the tool does and what the payload contains. Given the output schema exists, the explicit Returns block is not strictly needed, and the absence of behavioral/annotation context is the only notable gap.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies; there is no parameter semantics to document or omit.

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?

States a specific verb and resource (retrieve summary statistics of the eggNOG 7 database) and enumerates the exact contents of those statistics (species, sequences, trees, orthologous groups). No sibling tool (get_protein, get_orthologous_group, search_eggnog, etc.) does this, so the tool is unambiguously distinguishable.

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 when-to-use guidance, no prerequisites, and no mention of alternatives or fallbacks. The only usage signal is implied by the verb 'Retrieve', leaving the agent to guess the context in which database-level statistics are wanted.

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

get_og_contentA

Retrieve the list of proteins within an orthologous group.

Returns the species and their protein members for the specified OG. The result is capped at max_species to avoid excessively large responses.

Parameters

og_id : str The orthologous group identifier in family@taxid|level format. Example: P53@33154|A-1 max_species : int, optional Maximum number of species to include (default 50).

Returns

str JSON string with species list, protein counts, and protein IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
og_idYes
max_speciesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 behavioral burden. It usefully discloses that results are capped at max_species to avoid large responses and that the return includes species, protein counts, and protein IDs, but it omits permissions, error behavior, and explicit read-only safety context beyond the implied 'Retrieve'.

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 docstring is structured and front-loads the purpose, cap behavior, and parameter explanations. The Returns section is slightly redundant given the output schema, but the description remains efficient and well organized.

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

Completeness4/5

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

For a two-parameter read tool with no annotations and no schema descriptions, the description provides enough to call it correctly: parameter formats, cap behavior, and a return summary. The main remaining gap is lack of explicit sibling differentiation or usage guidance, and the output schema already covers detailed return shape.

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

Parameters5/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, and it does: og_id is documented with its family@taxid|level format and an example, while max_species is explained as an optional cap with default 50. This adds substantial meaning beyond the bare schema titles.

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 a specific verb and resource: retrieve the list of proteins within an orthologous group. It is easy to distinguish from generic protein or ortholog tools by the phrase 'within an orthologous group,' but it does not explicitly differentiate from siblings such as get_orthologous_group or get_orthologs.

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 explicit guidance on when to use this tool versus alternatives, and no sibling tools are mentioned. Usage is only implied by the purpose statement.

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

get_orthologous_groupA

Look up information for an orthologous group (OG) in eggNOG.

Retrieves the evolutionary origin, protein count, species count, functional annotation (KEGG KO and GO slim terms), and the list of all OGs in the same protein family.

Parameters

og_id : str The orthologous group identifier in the format family@taxid|level. Examples: - P53@33154|A-1 (P53 family, Opisthokonta level) - P53@7742|IM-18 (P53 family, Gnathostomata level)

Returns

str JSON string with OG details including evolutionary origin, counts, and functional annotation.

ParametersJSON Schema
NameRequiredDescriptionDefault
og_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the fundamental read-only nature implicitly ('Look up'), the return type (JSON string), and the content shape. It omits error behavior for malformed og_id, validation rules, and any rate/limit characteristics, leaving real gaps for a lookup tool with zero annotation coverage.

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?

Purpose and content are front-loaded in the first two sentences, and the NumPy-style parameter/returns blocks are scannable. The Returns section restates what an existing output schema already carries, which is mild redundancy, but overall there is little waste.

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

Completeness4/5

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

For a single-parameter lookup with an output schema present, the description covers purpose, input format with examples, and a return summary. The return-format block is largely redundant against the output schema, and error/validation behavior is absent, but nothing essential for calling the tool correctly is missing.

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

Parameters5/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, and it does thoroughly: it specifies the exact format ('family@taxid|level') and gives two concrete labeled examples with taxonomic level semantics (Opisthokonta A-1, Gnathostomata IM-18). This is meaningfully more than the bare 'Og Id' string title 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 names a specific verb and resource ('Look up information for an orthologous group (OG) in eggNOG') and enumerates exactly what is retrieved: evolutionary origin, protein and species counts, KEGG KO/GO slim annotation, and same-family OGs. This lets an agent distinguish it from retrieval siblings like get_og_content or get_protein. However, it never explicitly contrasts itself with those siblings, so the differentiation is inferred from content rather than stated.

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?

Usage is implied by the content ('look up information for an OG'), which signals a detail-fetch against a known OG id. There is no explicit when-to-use versus get_og_content/get_orthologs/get_protein_family guidance and no stated preconditions, so the agent must infer routing from the sibling names alone.

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

get_orthologsB

Retrieve pairwise orthologs for a protein.

Returns the orthologous proteins grouped by species for the given eggNOG protein ID.

Parameters

protein_id : str The eggNOG protein identifier in taxid.seqid format. Example: 9606.ENSP00000269305 max_species : int, optional Maximum number of species to include (default 50).

Returns

str JSON string with orthologs grouped by species.

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_idYes
max_speciesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 does not state whether this is read-only, whether authentication or rate limits apply, or — importantly for max_species — whether results are truncated and how ties are broken. Only the 'grouped by species' return shape is disclosed.

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 numpydoc-style layout is front-loaded and scannable, with purpose first and parameters clearly enumerated. The Returns block is somewhat redundant given the output schema exists, but the whole is short and earns most of its space.

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?

For a simple two-parameter retrieval tool with an output schema, the essential call information (id format, species cap) is present. What is missing is routing guidance versus sibling tools and any statement about truncation behavior or safety profile, leaving modest gaps.

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

Parameters4/5

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

Schema description coverage is 0%, yet the description compensates well: it documents the required protein_id format (``taxid.seqid``) with a concrete example and the optional max_species default. This adds real meaning the bare schema lacks, though it does not explain the consequence of raising or lowering max_species.

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?

States a specific verb and resource ('Retrieve pairwise orthologs for a protein') with the required identifier. It is distinguishable from get_protein and search_eggnog, but it never explicitly names how it differs from the closely related get_orthologous_group, so sibling differentiation is incomplete.

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 when-to-use guidance and no mention of alternatives, despite a sibling (get_orthologous_group) covering the conceptually adjacent task. The agent must infer that this tool is for pairwise orthologs per protein from the purpose statement alone.

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

get_proteinB

Look up detailed information for a protein in the eggNOG database.

Retrieves protein family membership, predicted functions (KEGG KO terms and GO terms with confidence scores), and the list of orthologous groups (OGs) associated with the protein.

Parameters

protein_id : str The eggNOG protein identifier in the format taxid.seqid. Examples: - 9606.ENSP00000269305 (human P53 / TP53) - 9606.ENSP00000330696 (human P2RX7) - 460265.Mnod_3996 (nitrogen fixation protein)

Returns

str JSON string with protein family, function predictions, and OG list.

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does establish that this is a read/lookup operation and discloses the returned content categories (including that function predictions carry confidence scores), which is useful behavioral context. It says nothing about error behavior for invalid IDs, database coverage, or whether the lookup is precise vs. fuzzy.

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?

Front-loaded purpose sentence, then parameters, then returns — cleanly structured and easy to scan. The Returns block is somewhat redundant given an output schema exists, but it is brief and does not bloat the definition.

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

Completeness4/5

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

For a single-parameter read tool, the description is nearly complete: purpose, exact ID format with examples, and return content. An output schema already exists, so the return prose is a bonus rather than a necessity. The only real omission is guidance distinguishing it from lookalike sibling tools.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: it states the identifier format 'taxid.seqid' and provides three concrete, varied examples (human P53, human P2RX7, a bacterial gene). This meaningfully exceeds what the bare string schema conveys, though it omits edge cases like case sensitivity or whether the taxid must exist.

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 gives a specific verb and resource ('Look up detailed information for a protein in the eggNOG database') and enumerates the retrieved content (family membership, KEGG KO/GO predictions with confidence, OG list). This distinguishes it from generic lookup siblings, but it does not explicitly say how it differs from close siblings like get_protein_family or get_orthologs, which overlap in 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 explicit when-to-use guidance, prerequisites, or named alternatives. With nine siblings including get_orthologs, get_protein_family, annotate_protein, and search_eggnog, the agent gets no routing help about which to pick for a given question. Usage is only weakly implied by the lookup phrasing.

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

get_protein_familyB

Retrieve protein family (cluster) content from eggNOG.

Returns the list of species and proteins grouped under the given protein family name (also called a cluster).

Parameters

family_name : str The protein family / cluster name. Examples: P53, P53_tetramer, P53_TAD max_species : int, optional Maximum number of species to include (default 50).

Returns

str JSON string with species list, protein counts, and protein IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
family_nameYes
max_speciesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only retrieval and discloses the default species cap (50), but says nothing about permissions, rate limits, or pagination behavior. Functional but light on behavioral disclosure.

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 purpose is front-loaded in the first sentence and the docstring-style Parameters/Returns sections are scannable and free of filler. The Returns block is partly redundant given an output schema exists, costing a little tightness.

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

Completeness4/5

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

For a two-parameter read tool with an output schema present, the description covers the resource, both parameters, and the default limiting behavior. Only the missing usage/alternative guidance keeps it from being fully self-sufficient.

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

Parameters4/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, and it largely does: it explains family_name is the cluster name and gives concrete examples (P53, P53_tetramer, P53_TAD), and documents max_species with its default of 50. It adds real meaning beyond the bare schema types.

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?

States a specific verb and resource ('Retrieve protein family (cluster) content from eggNOG') and clarifies that a family is also called a cluster, plus what the return contains. It does not explicitly differentiate itself from close siblings like get_orthologous_group or get_protein, so it stops 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 Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternative tools such as get_orthologous_group or get_og_content. The reader must infer the appropriate context from the name and description alone.

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

get_taxid_infoA

Look up taxonomic information for an NCBI taxonomy ID.

Provides guidance on retrieving taxonomic information for a given NCBI taxonomy ID from the eggNOG database. The full taxonomic data is available in the downloadable e7.taxid_info.tsv.gz file.

Parameters

taxid : int NCBI taxonomy ID. Examples: - 9606 (Homo sapiens) - 4932 (Saccharomyces cerevisiae) - 44689 (Danio rerio)

Returns

str JSON string with taxonomic lookup information and download URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
taxidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose that the result is a JSON string containing taxonomic lookup information and a download URL, which is useful behavioral context. It says nothing about permissions, rate limits, or behavior for unknown taxids, leaving real gaps for a tool with zero annotation coverage.

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

Conciseness3/5

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

The first sentence is well front-loaded, but the second sentence largely restates it ("Provides guidance on retrieving taxonomic information..."), and the Parameters/Returns blocks duplicate what the input and output schemas already express. There is avoidable repetition, though the examples earn their place.

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

Completeness4/5

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

With one required parameter, an output schema present, and no annotations, the description covers what an agent needs to invoke the tool: the meaning of taxid, concrete examples, and the shape of the return. Only edge-case behavior and the bulk-download alternative remain underspecified.

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

Parameters4/5

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

Schema description coverage is 0% — the taxid property has no description in the schema — so the description must compensate, and it does: it defines taxid as an int NCBI taxonomy ID and supplies three concrete examples (9606, 4932, 44689). That is meaningfully more than the schema offers, though it doesn't note valid ranges or behavior on invalid IDs.

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 opening line states a specific verb and resource: "Look up taxonomic information for an NCBI taxonomy ID." This is clearly distinguishable from sibling tools like get_protein or get_orthologs, which operate on different resources. However, no sibling is named, so it does not earn 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?

Usage is only implied: the note that "the full taxonomic data is available in the downloadable e7.taxid_info.tsv.gz file" hints at an alternative path (bulk download via list_downloads) without stating when to prefer this tool over that one. There is no explicit when-to-use or when-not-to-use guidance, so it lands at implied usage rather than clear context.

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

list_downloadsA

List downloadable data files from the eggNOG 7 database.

Returns a list of all bulk-downloadable files (protein sequences, OG info, phylogenetic trees, taxonomic info, etc.) with their URLs and descriptions.

Returns

str JSON string with download file information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 full behavioral burden. It discloses what the call returns (files with URLs and descriptions) which is genuinely useful, but says nothing about read-only semantics, authentication, rate limits, or the size of the listing. Adequate but leaves clear gaps for an annotation-free tool.

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?

Purpose is front-loaded in the first sentence and the follow-up sentence adds real detail about returned content. The trailing numpydoc 'Returns' block restates what the output schema already declares, which is minor redundancy but not wasteful enough to hurt much.

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

Completeness4/5

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

For a no-argument listing tool with an output schema present, the description covers the essential purpose and return content. It identifies the database version (eggNOG 7), which is useful context an agent would otherwise lack.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a parameterless tool is 4. No parameter-related misinformation is present.

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 gives a specific verb and resource ('List downloadable data files from the eggNOG 7 database') and enumerates the content categories (protein sequences, OG info, trees, taxonomic info). It is unambiguous and does not overlap any sibling, though it never explicitly names a sibling to differentiate against.

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?

Usage is only implied: an agent can infer this is the tool to call when it needs bulk-download URLs rather than a single record lookup. There is no explicit when-to-use statement, no mention of when NOT to use it, and no reference to alternatives like get_database_stats.

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

search_eggnogA

Search the eggNOG database for proteins or protein families.

Performs a text search across the eggNOG database. The query must be at least 3 characters long. The query can be a protein name (e.g. P53), a UniProt ID (e.g. P04637), or a protein family name.

Parameters

query : str Search query string (minimum 3 characters). Examples: - P53 - P04637 - TP53 - P2RX7

Returns

str JSON string with a list of search results (type, ID, label, URL).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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. It discloses a real behavioral constraint (3-character minimum) and the shape of results, but says nothing about matching semantics (substring vs exact, case sensitivity), result caps, pagination, or that the operation is read-only and side-effect free.

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?

Front-loaded with a one-line statement of what it does, followed by usable detail. The reStructuredText Parameters/Returns blocks duplicate schema information, and the second sentence restates the first, but the overall size is proportionate to a one-parameter tool.

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

Completeness4/5

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

For a single-parameter search tool whose output schema already defines the return structure, the description covers purpose, accepted input forms, and the minimum-length rule. The remaining gap is matching/pagination behavior, which is a modest omission rather than a blocker.

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

Parameters4/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, and it does: the single query parameter is documented with a length constraint and four concrete example values spanning gene names and UniProt IDs. Only the exact matching semantics remain unspecified.

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?

States a specific verb and resource: a text search across the eggNOG database for proteins or protein families. It is distinguishable from retrieval siblings like get_protein or get_orthologous_group, though it never explicitly contrasts itself with them or notes that it matches by name/ID text rather than by exact identifier lookup.

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?

Gives a concrete precondition (query must be at least 3 characters) and enumerates acceptable query forms via examples (protein name, UniProt ID, family name). It does not, however, say when to prefer this over get_protein or get_protein_family, nor what happens on no match — usage is implied rather than routed.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedannotate_protein
    • First observedget_database_stats
    • First observedget_og_content
    • First observedget_orthologous_group
    • First observedget_orthologs
    • First observedget_protein
    • First observedget_protein_family
    • First observedget_taxid_info
    • First observedlist_downloads
    • First observedsearch_eggnog

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target distinct resources (protein, OG, family, taxid, stats, downloads, search), and descriptions give concrete examples. However, annotate_protein is explicitly a 'convenience wrapper around get_protein' returning overlapping data for the same protein_id, and get_og_content vs get_orthologs/get_protein_family all return species/protein lists with similar shapes, creating mild risk of misselection.

Naming Consistency5/5

Consistent snake_case verb_noun pattern throughout (get_*, list_*, search_*, annotate_*). Minor terminology drift between 'orthologous_group' and 'orthologs' but the convention is clear and predictable.

Tool Count5/5

10 tools is well-scoped for a read-only database API, with each tool covering a distinct lookup or listing need. No bloat and nothing obviously trivial.

Completeness4/5

Core lifecycle is well covered: search, protein annotation, OG detail, OG content, orthologs, family, stats, and downloads. Minor gaps remain (no sequence/FASTA retrieval), and get_taxid_info is effectively a stub that only points to a downloadable file rather than returning the taxonomy data.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform NCBI BLAST sequence similarity searches through natural language, supporting nucleotide and protein searches, custom database creation, and multiple output formats.
    10
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides access to the STRING protein-protein interaction database for mapping identifiers, retrieving interaction networks, and performing functional enrichment analysis. It enables users to explore protein partners, pathways, and cross-species homology through natural language interactions.
    9
    1
    ISC
  • A
    license
    C
    quality
    F
    maintenance
    Provides AI-powered access to major biological databases for GWAS and bioinformatics research. Enables natural language queries for protein, gene, variant, pathway, and drug discovery analysis.
    44
    1
    MIT