consult_gemini
Send queries directly to Gemini CLI via the MCP server to retrieve AI-generated responses. Execute prompts in a specified directory for streamlined, straightforward interactions.
Instructions
Send a query directly to Gemini CLI.
This is the core function - a direct bridge between Claude and Gemini.
No caching, no sessions, no complexity. Just execute and return.
Args:
query: The question or prompt to send to Gemini
directory: Working directory (required)
model: Optional model name (flash, pro, etc.)
Returns:
Gemini's response
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| directory | Yes | ||
| model | No | ||
| query | Yes |
Implementation Reference
- src/mcp_server.py:356-374 (handler)MCP tool handler for "consult_gemini". Registers the tool via @mcp.tool() decorator and implements the core dispatch to the execution helper.@mcp.tool() def consult_gemini( query: str, directory: str, model: str | None = None, timeout_seconds: int | None = None, ) -> str: """Send a query directly to the Gemini CLI. Args: query: Prompt text forwarded verbatim to the CLI. directory: Working directory used for command execution. model: Optional model alias (``flash``, ``pro``) or full Gemini model id. timeout_seconds: Optional per-call timeout override in seconds. Returns: Gemini's response text or an explanatory error string. """ return execute_gemini_simple(query, directory, model, timeout_seconds)
- src/mcp_server.py:225-274 (helper)Core helper function implementing the Gemini CLI execution for simple queries: checks prerequisites, builds and runs subprocess with stdin query input, handles timeouts and errors.def execute_gemini_simple( query: str, directory: str = ".", model: Optional[str] = None, timeout_seconds: Optional[int] = None, ) -> str: """ Execute gemini CLI command for simple queries without file attachments. Args: query: The prompt to send to Gemini directory: Working directory for the command model: Optional model name (flash, pro, etc.) Returns: CLI output or error message """ # Check if gemini CLI is available if not shutil.which("gemini"): return "Error: Gemini CLI not found. Install with: npm install -g @google/gemini-cli" # Validate directory if not os.path.isdir(directory): return f"Error: Directory does not exist: {directory}" # Build command - use stdin for input to avoid hanging selected_model = _normalize_model_name(model) cmd = ["gemini", "-m", selected_model] # Execute CLI command - simple timeout, no retries timeout = _coerce_timeout(timeout_seconds) try: result = subprocess.run( cmd, cwd=directory, capture_output=True, text=True, timeout=timeout, input=query ) if result.returncode == 0: return result.stdout.strip() if result.stdout.strip() else "No output from Gemini CLI" else: return f"Gemini CLI Error: {result.stderr.strip()}" except subprocess.TimeoutExpired: return f"Error: Gemini CLI command timed out after {timeout} seconds" except Exception as e: return f"Error executing Gemini CLI: {str(e)}"