adapt_query
Transform a query from one programming language to another using tree-sitter-based code analysis. Ideal for adapting code queries across different languages with accurate context management.
Instructions
Adapt a query from one language to another.
Args:
query: Original query string
from_language: Source language
to_language: Target language
Returns:
Adapted query
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| from_language | Yes | ||
| query | Yes | ||
| to_language | Yes |
Implementation Reference
- MCP tool handler and registration for 'adapt_query'. This decorated function executes the tool logic by importing and calling the helper adapt_query_for_language from query_builder, returning a dictionary with original and adapted query.@mcp_server.tool() def adapt_query(query: str, from_language: str, to_language: str) -> Dict[str, str]: """Adapt a query from one language to another. Args: query: Original query string from_language: Source language to_language: Target language Returns: Adapted query """ from ..tools.query_builder import adapt_query_for_language adapted = adapt_query_for_language(query, from_language, to_language) return { "original_language": from_language, "target_language": to_language, "original_query": query, "adapted_query": adapted, }
- Core helper function that performs the actual query adaptation using a dictionary of node type translations between languages, applying simple string replacements.def adapt_query_for_language(query: str, from_language: str, to_language: str) -> str: """ Try to adapt a query from one language to another. Args: query: Original query from_language: Source language to_language: Target language Returns: Adapted query string Note: This is a simplified implementation that assumes similar node types. A real implementation would need language-specific translations. """ translations = { # Python -> JavaScript ("python", "javascript"): { "function_definition": "function_declaration", "class_definition": "class_declaration", "block": "statement_block", "parameters": "formal_parameters", "argument_list": "arguments", "import_statement": "import_statement", "call": "call_expression", }, # JavaScript -> Python ("javascript", "python"): { "function_declaration": "function_definition", "class_declaration": "class_definition", "statement_block": "block", "formal_parameters": "parameters", "arguments": "argument_list", "call_expression": "call", }, # Add more language pairs... } pair = (from_language, to_language) if pair in translations: trans_dict = translations[pair] for src, dst in trans_dict.items(): # Simple string replacement query = query.replace(f"({src}", f"({dst}") return query
- Wrapper helper function in query_builder that calls adapt_query_for_language and formats the response dictionary, similar to the tool handler.def adapt_query(query: str, from_language: str, to_language: str) -> Dict[str, str]: """ Adapt a query from one language to another. Args: query: Original query string from_language: Source language to_language: Target language Returns: Dictionary with adapted query and metadata """ adapted = adapt_query_for_language(query, from_language, to_language) return { "original_language": from_language, "target_language": to_language, "original_query": query, "adapted_query": adapted, }