Evo2 MCP Server
evo2-mcp

evo2-mcp 서버는 Evo 2를 MCP(Model Context Protocol) 서버로 노출하여 유전체 서열 분석을 위한 도구를 제공합니다. MCP 호환 클라이언트는 이 도구들을 사용하여 DNA 서열을 스코어링하고, 임베딩하며, 생성할 수 있습니다.
주요 기능
서열 스코어링: DNA 서열의 로그 확률 계산
서열 임베딩: 중간 모델 레이어에서 학습된 표현 추출
서열 생성: 제어된 샘플링을 통한 새로운 DNA 서열 생성
변이 효과 예측: 변이 우선순위 결정을 위한 SNP 돌연변이 스코어링
다중 모델 체크포인트: 7B, 40B 및 1B 파라미터 모델 지원
Related MCP server: bio-mcp-evo2
시작하기
사전 요구 사항: Python 3.12
Evo2 의존성 설치: 자세한 내용은 설치 가이드를 참조하세요.
conda install -c nvidia cuda-nvcc cuda-cudart-dev conda install -c conda-forge transformer-engine-torch=2.3.0 pip install flash-attn==2.8.0.post2 --no-build-isolation pip install evo2evo2-mcp 설치:
pip install evo2-mcpMCP 서버 활성화:
mcp.json구성 파일에 다음을 추가하세요:{ "mcpServers": { "evo2-mcp": { "command": "python", "args": ["-m", "evo2_mcp.main"] } } }
자세한 설치 지침은 설치 가이드를 참조하세요.
사용법
설치가 완료되면 MCP 호환 클라이언트를 통해 서버에 액세스할 수 있습니다. 사용 가능한 도구와 예제는 도구 문서를 참조하세요.
사용 가능한 도구
score_sequence- DNA 서열 가능성 평가embed_sequence- 특징 표현 추출generate_sequence- 새로운 DNA 서열 생성score_snp- 변이 효과 예측get_embedding_layers- 사용 가능한 임베딩 레이어 목록list_available_checkpoints- 지원되는 모델 체크포인트 표시
자세한 API 참조 및 예제는 도구 문서를 참조하세요.
문서
또한 생물의학 MCP 서버를 위한 커뮤니티 허브인 BioContextAI에서 이 프로젝트를 찾을 수 있습니다.
인용
연구에 evo2-mcp를 사용하는 경우 다음을 인용해 주세요:
@software{evo2_mcp,
author = {Kreuer, Jules},
title = {evo2-mcp: MCP server for Evo 2 genomic sequence operations},
year = {2025},
url = {https://github.com/not-a-feature/evo2-mcp},
version = {0.2.3}
}기반이 되는 Evo 2 모델에 대해서는 원본 Evo 2 논문을 인용해 주시기 바랍니다.
라이선스 및 저작자 표시
이 저장소의 배너 이미지는 Evo 2 프로젝트의 원본 Evo 2 배너를 수정한 버전이며, Apache 2.0 라이선스에 따라 배포됩니다. 이 이미지는 Google Gemini "Nanobana"와 GIMP를 사용하여 수정되었습니다.
Available Tools
6 toolsembed_sequenceA
Return intermediate Evo 2 embeddings for DNA sequence.
Extracts feature representations from a specified layer of the Evo 2 model for a given DNA sequence. The embeddings capture the model's learned representations and can be used for downstream analysis or as features for other tasks.
Args:
sequence: DNA sequence to embed. Should contain standard IUPAC nucleotides (A, C, G, T).
checkpoint: Model checkpoint identifier. If None, uses the default checkpoint.
See list_available_checkpoints() for available options.
layer_name: Name of the model layer from which to extract embeddings.
Common choices include intermediate MLP layers and attention blocks.
Returns: Dictionary containing: - checkpoint: The checkpoint identifier used - sequence: The normalized input sequence - layer_name: The layer from which embeddings were extracted - embedding: 2D list of embedding vectors (shape: [sequence_length, embedding_dim])
Raises: AssertionError: If sequence or layer_name are empty strings.
Example: >>> embeddings = embed_sequence("ATCGATCG") >>> embedding_matrix = embeddings["embedding"] >>> print(f"Embedding shape: {len(embedding_matrix)} tokens")
| Name | Required | Description | Default |
|---|---|---|---|
| sequence | Yes | ||
| checkpoint | No | ||
| layer_name | No | blocks.2.mlp.l3 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses output structure (dict with keys), normalization of the input sequence, raises AssertionError for empty strings, and notes the default checkpoint behavior. It does not state whether the operation is read-only, but the passive 'Return' and 'Extracts' imply pure computation.
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 well-structured with a lead sentence, Args, Returns, Raises, and Example. All sections earn their place; the only slightly redundant sentence about downstream analysis is brief and adds context. No wasted words.
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 fully covers parameters, return values, error conditions, and includes a concrete example. It even references a sibling tool for checkpoint options, making it complete for an agent to invoke the tool 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%, so the description provides essential meaning for all three parameters: sequence validity (IUPAC nucleotides), checkpoint selection (default and alternative listing), and layer_name (common layer choices). This goes far beyond the bare 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 opens with a specific verb+resource: 'Return intermediate Evo 2 embeddings for DNA sequence.' It clearly distinguishes from siblings like score_sequence and generate_sequence by stating it extracts feature representations from a specified layer.
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 for downstream analysis and references list_available_checkpoints() for checkpoint selection, but it does not explicitly state when to use this tool versus alternatives like score_sequence or generate_sequence. There are no exclusions or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sequenceA
Generate DNA sequence continuation using Evo 2.
Generates new DNA sequence tokens conditioned on a given prompt sequence using the Evo 2 language model. The generation process uses nucleus sampling (top-k) for controlled diversity.
Args:
prompt: Starting DNA sequence to condition generation. Should contain standard
IUPAC nucleotides (A, C, G, T, N).
checkpoint: Model checkpoint identifier. If None, uses the default checkpoint.
See list_available_checkpoints() for available options.
n_tokens: Number of new tokens to generate. Must be a positive integer.
temperature: Sampling temperature controlling randomness. Higher values (>1.0) increase
diversity; lower values (<1.0) make generation more deterministic. Must be greater than 0.
top_k: Number of highest probability nucleotides to sample from at each step.
Must be positive. Typical values: 5 (all nucleotides including N), 4 (more constrained).
Returns: Dictionary containing: - checkpoint: The checkpoint identifier used - prompt: The normalized input prompt sequence - generated_sequence: The newly generated DNA sequence - n_tokens: Number of tokens generated - temperature: Temperature value used - top_k: Top-k value used
Raises: AssertionError: If prompt is empty, n_tokens <= 0, temperature <= 0, or top_k <= 0.
Example: >>> result = generate_sequence("ATCGATCG", n_tokens=100, temperature=0.8) >>> full_sequence = result["prompt"] + result["generated_sequence"] >>> print(f"Generated sequence: {full_sequence}")
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No | ||
| prompt | Yes | ||
| n_tokens | No | ||
| checkpoint | No | ||
| temperature | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 details the sampling method (nucleus sampling with top-k), parameter effects, assertion errors for invalid inputs, and the normalization of the prompt. It does not explicitly state that the operation is read-only, but the generation nature implies no 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 well-structured with a clear one-liner purpose followed by detailed Args, Returns, Raises, and Example sections. Every sentence adds value, and the front-loading of the main purpose makes it easy to scan. It is appropriately sized for a complex generation 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?
Despite the lack of annotations, the description provides comprehensive coverage: a clear purpose, detailed parameter semantics, expected return structure, error conditions, and a usage example. The output schema is not shown but the Returns section fully documents the dictionary keys. This is complete enough for an agent to invoke the tool correctly without further context.
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 coverage is 0%, so the description must compensate, and it does thoroughly. Each parameter is explained with constraints, default behavior, and examples (e.g., top_k typical values). The Args section adds significant meaning beyond the raw schema types and defaults.
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 purpose with a specific verb and resource: 'Generate DNA sequence continuation using Evo 2.' It distinguishes from sibling tools by focusing on sequence generation rather than scoring or embedding. The example further clarifies the intended use.
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 for when to use this tool (generating sequence continuations) and references a sibling function `list_available_checkpoints()` for finding valid checkpoints. However, it does not explicitly state when not to use this tool versus alternatives, though the focused purpose makes the primary use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_embedding_layersA
Get available layers for embedding extraction from Evo 2 model.
Returns a list of layer names that can be used to extract sequence embeddings from the specified Evo 2 checkpoint. Different layers encode varying levels of biological abstraction. Larger models tend to have more nuanced representations but require more computational resources. For supervised classification tasks (e.g., variant effect prediction), intermediate layers like Block 20 (40B model) often perform best. For mechanistic interpretability (e.g., SAE training), deeper layers like Layer 26 are commonly used. For probing tasks, top-level layers (e.g., blocks.26 in 7B model) may be optimal.
Args:
checkpoint: Model checkpoint identifier. See list_available_checkpoints() for options.
which: Selection switch. "recommended" returns a curated subset of layers suitable for
common downstream tasks; "all" returns every available layer from the model.
Returns: Dictionary containing: - checkpoint: The checkpoint identifier - layers: List of layer names available for embedding extraction - info: Information about layer selection for different tasks
Example: >>> layers = get_embedding_layers("evo2_7b") >>> print(f"Layers (recommended): {layers['layers']}") >>> layers_all = get_embedding_layers("evo2_7b", which="all") >>> print(f"Total layers: {len(layers_all['layers'])}")
| Name | Required | Description | Default |
|---|---|---|---|
| which | No | recommended | |
| checkpoint | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the behavioral difference between 'recommended' and 'all' selections, describes the return structure, and includes an example. While it doesn't mention potential errors or side effects, it is a read-only lookup and the behavioral detail provided is substantial.
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 well-structured with Args, Returns, and Example sections. It is concise yet informative, with each section adding value. The front-loaded purpose statement is clear, and the detailed layer guidance is relevant and earns its place.
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 tool has two parameters and an output schema, but the description still adds value by explaining return keys, providing an example, and offering layer-selection advice. It is complete enough for an AI agent to understand the tool's purpose, usage, and expected output without additional context.
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 provides thorough explanations for both parameters: checkpoint and which, detailing what 'recommended' and 'all' return. It also gives a concrete example demonstrating usage, adding significant meaning beyond the bare 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 tool's function: 'Get available layers for embedding extraction from Evo 2 model.' It uses a specific verb and resource, and distinguishes itself from siblings like embed_sequence (which likely performs extraction) and list_available_checkpoints (which lists checkpoints).
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, including guidance on which layers to use for different tasks (e.g., intermediate layers for classification, deeper layers for interpretability). It also references list_available_checkpoints() for parameter options. However, it does not explicitly mention when not to use the tool or direct alternatives, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_checkpointsA
List supported Evo 2 checkpoints with descriptions.
Retrieves all available Evo 2 model checkpoints that can be used for sequence scoring, embedding, and generation. Each checkpoint is described with its size and context length capabilities.
Returns: List of dictionaries, each containing: - name: The identifier string for the checkpoint - description: Human-readable description of the model specifications
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency burden. It explicitly discloses the return format ('List of dictionaries, each containing: - name, - description'), and states that it 'Retrieves all available' checkpoints. This goes beyond a simple restatement, though it does not mention potential side effects, auth, or failure modes.
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 front-loaded with a one-sentence summary, followed by a brief explanatory paragraph and a structured Returns block. Every sentence adds meaningful information—there is no fluff or repetition, making it appropriately sized and well-structured.
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?
As a simple list tool with no parameters and an output schema, the description provides complete context: it defines the tool's purpose, what the returned data contains, and how the checkpoints relate to other tasks. There is no missing information that an agent would need to invoke it 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?
The tool has 0 parameters and the input schema is empty with 100% schema description coverage. Per rubric, a 0-parameter tool earns a baseline of 4. The description does not need to explain parameters, and it adds no unnecessary parameter information.
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 begins with 'List supported Evo 2 checkpoints with descriptions,' which uses a specific verb ('List') and identifies the resource ('supported Evo 2 checkpoints'). It further clarifies that these checkpoints are used for 'sequence scoring, embedding, and generation,' distinguishing it from sibling tools that perform those operations.
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 states the purpose is to retrieve checkpoints 'that can be used for sequence scoring, embedding, and generation,' giving clear context for when to use it (before or alongside those downstream tools). It does not explicitly name alternative tools or provide exclusion scenarios, but the context is sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_sequenceA
Compute log probabilities for DNA sequence under Evo 2 model.
Evaluates the likelihood of a DNA sequence under the Evo 2 language model. Returns the model's log probability score for the entire sequence, which can be reduced using either mean or sum aggregation.
Args:
sequence: DNA sequence to score. Should contain standard IUPAC nucleotides (A, C, G, T, N).
checkpoint: Model checkpoint identifier. If None, uses the default checkpoint.
See list_available_checkpoints() for available options.
reduce_method: Method for aggregating per-token scores. Must be either "mean"
(average log probability across all tokens) or "sum" (sum of all log probabilities).
Returns: Dictionary containing: - checkpoint: The checkpoint identifier used - sequence: The normalized input sequence - reduce_method: The reduction method applied - scores: List of computed score values (typically length 1)
Raises: AssertionError: If sequence is empty or reduce_method is not "mean" or "sum".
Example: >>> scores = score_sequence("ATCGATCG") >>> print(f"Score: {scores['scores'][0]}")
| Name | Required | Description | Default |
|---|---|---|---|
| sequence | Yes | ||
| checkpoint | No | ||
| reduce_method | No | mean |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden and mostly delivers: raises AssertionError for invalid inputs, returns a structured dictionary with normalized sequence and scores list, includes example. Slight gaps: log base unspecified, normalization details vague, error cases for invalid checkpoints not disclosed.
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?
Well-structured with Purpose, Args, Returns, Raises, Example. The front-loaded purpose is clear, and each section adds value. Slightly verbose but every part is informative for a non-trivial 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?
Given the output schema exists, the description needn't cover return values, yet it does. It covers all parameter semantics and typical errors. Missing explicit differentiation from score_snp and broader error handling, but overall a complete self-contained description for the core use case.
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 descriptions are absent (0% coverage). Description's Args section thoroughly explains all three parameters, including semantics, defaults, and constraints (e.g., reduce_method must be 'mean'/'sum'). Fully compensates for missing schema descriptions.
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?
Clear and specific: 'Compute log probabilities for DNA sequence under Evo 2 model.' Distinct from siblings like embed_sequence (embeddings) and generate_sequence (generation); the verb+resource precisely identifies the scoring operation.
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?
Provides detailed parameter intent but no guidance on when to prefer this over alternatives. Sibling score_snp likely serves a different variant-scoring purpose but is never mentioned. No when-not-to-use or alternate tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_snpA
Score the effect of a SNP mutation at the center position of a DNA sequence.
Computes log probabilities for both the original sequence and the sequence with the center nucleotide replaced by the alternative allele, then returns the delta. Recommended sequence length: max_context - 1 for best performance.
This tool is useful for variant effect prediction, where the score delta indicates how much the mutation changes the model's likelihood of the sequence. Negative deltas indicate the mutation decreases likelihood; positive deltas increase it.
Args:
sequence: Reference DNA sequence. Must be at least 3 nucleotides long to have a
well-defined center position. Should contain standard IUPAC nucleotides (A, C, G, T, N).
alternative_allele: Alternative nucleotide at the center position. Must be a single
nucleotide (one of A, C, G, T, N) that differs from the reference nucleotide at the center.
checkpoint: Model checkpoint identifier. If None, uses the default checkpoint.
See list_available_checkpoints() for available options.
reduce_method: Method for aggregating per-token scores. Must be either "mean"
(average log probability across all tokens) or "sum" (sum of all log probabilities).
Returns: Dictionary containing: - checkpoint: The checkpoint identifier used - original_sequence: The input reference sequence (uppercase) - mutated_sequence: The sequence with the mutation applied at center position - center_position: Index of the mutated position (0-indexed) - reference_allele: The original nucleotide at the center position - alternative_allele: The alternative nucleotide used - reduce_method: The reduction method applied - original_score: Log probability score of the reference sequence - mutated_score: Log probability score of the mutated sequence - score_delta: Difference (mutated_score - original_score). Indicates mutation effect.
Raises: AssertionError: If sequence length < 3, alternative_allele is not a single valid nucleotide, sequence contains invalid nucleotides, or alternative_allele matches the reference nucleotide.
Example: >>> result = score_snp("ATCGATCG", "A") # Center is T, mutate to A >>> print(f"Score delta: {result['score_delta']}") >>> print(f"Original: {result['original_sequence']}") >>> print(f"Mutated: {result['mutated_sequence']}")
| Name | Required | Description | Default |
|---|---|---|---|
| sequence | Yes | ||
| checkpoint | No | ||
| reduce_method | No | mean | |
| alternative_allele | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of disclosure. It explains the computation (log probabilities for original and mutated sequences), the meaning of the score delta (negative/positive), the exact return structure, and error conditions (AssertionError). It even notes that a sequence must be at least 3 nucleotides long. This is comprehensive and 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 well-structured with clear sections (Args, Returns, Raises, Example). Although lengthy, every sentence adds value: parameter constraints, behavior explanation, interpretation of results, and a practical example. No redundancy or filler text is present.
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 tool's complexity (4 parameters, 2 required) and rich output schema, the description covers all necessary aspects: purpose, parameter details, return fields, error handling, and usage guidance. It even includes a recommended sequence length and an example. There are no obvious gaps in context needed for an agent to select and invoke the tool 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%, so the description must compensate entirely. The 'Args' section explains each parameter in detail: sequence (must be DNA, standard IUPAC), alternative_allele (single nucleotide differing from reference), checkpoint (optional, default), and reduce_method ('mean' or 'sum'). This goes well beyond the bare schema and fully clarifies parameter meaning and constraints.
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: 'Score the effect of a SNP mutation at the center position of a DNA sequence.' It uses a specific verb (score), identifies the resource (SNP mutation), and distinguishes itself from related tools like score_sequence by focusing on center-position mutation analysis.
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 for when to use the tool: 'This tool is useful for variant effect prediction.' It also offers practical guidance such as recommended sequence length and parameter constraints. However, it does not explicitly mention when not to use it or compare it to alternatives like score_sequence, so it misses the full 'when-not/alternatives' criterion.
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.
6 tool updates
v0.2.3- First observed
embed_sequence - First observed
generate_sequence - First observed
get_embedding_layers - First observed
list_available_checkpoints - First observed
score_sequence - First observed
score_snp
TDQS
Scored across 6 tools
Each tool targets a distinct operation: checkpoint listing, layer retrieval, sequence scoring, embedding extraction, sequence generation, and SNP scoring. Even score_sequence and score_snp are clearly differentiated by purpose and input requirements. No overlapping boundaries exist that would cause misselection.
All tools follow a verb_noun pattern in snake_case with clear, domain-specific nouns (list_available_checkpoints, get_embedding_layers, score_sequence, embed_sequence, generate_sequence, score_snp). The verbs accurately reflect the action, and the minor variation between 'list' and 'get' for retrieval is acceptable.
Six tools is a well-scoped set for an Evo 2 model server, covering discovery, feature extraction, scoring, generation, and variant analysis. Each tool earns its place without redundancy or unnecessary bulk.
The tool surface covers the core capabilities of the Evo 2 model: listing checkpoints, getting embedding layers, scoring sequences, extracting embeddings, generating sequences, and scoring SNP effects. No obvious gaps exist for standard use cases, and the inclusion of supporting discovery tools completes the workflow.
Maintenance
Related MCP Connectors
Protein analysis: ESM-2/ESMC embeddings, mutation scoring, landscape scans, ESMFold structure.
Hosted DNA language models: promoter, splice, enhancer, chromatin, expression, annotation
Image, video, music and text generation across 100+ models through one endpoint.
Hosted DNA/RNA/protein tools: primers, oligos, PCR, cloning, CRISPR, alignment, batch & pipelines.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI-powered genomic variant analysis including variant impact prediction, regulatory element discovery, and batch variant scoring. Currently operates in mock mode as a proof-of-concept awaiting the public release of Google DeepMind's AlphaGenome API.24234 npm2MIT

bio-mcp-evo2official
AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to generate, score, and analyze DNA sequences using the evo2 genomic foundation model. It supports multiple execution modes including local GPU, SLURM clusters, and the Nvidia NIM cloud API for tasks like variant effect prediction and sequence embedding.1MIT- FlicenseAqualityFmaintenanceProvides interpretable variant effect predictions for 4.2 million ClinVar variants using the EVEE API. Enables searching, comparing, and analyzing genetic variants with AI-generated mechanistic interpretations and disruption profiles.618-
- FlicenseNot gradedqualityCmaintenanceEnables AI-powered protein structure prediction and variant analysis via Docker, with tools for submitting predictions, batch processing variants, and monitoring jobs.1-