Skip to main content
Glama

Vertex AI MCP Server

This project implements a Model Context Protocol (MCP) server that provides a comprehensive suite of tools for interacting with Google Cloud's Vertex AI Gemini models, focusing on coding assistance and general query answering.

Security boundary

This server includes filesystem write and terminal-execution tools in addition to model and research tools. Run it with a dedicated low-privilege identity, limit its filesystem and network access, and keep consequential tools behind explicit approval. Do not treat an MCP client confirmation prompt as server-side authorization.

For the implementation tradeoffs this project exposed alongside six other public MCP codebases, see What building seven MCP servers taught me about production MCP. The article uses this repository as public engineering evidence; it does not claim that every production control discussed there is already implemented here.

Related MCP server: MCP with Gemini Integration

Features

  • Provides access to Vertex AI Gemini models via numerous MCP tools.

  • Supports web search grounding (answer_query_websearch) and direct knowledge answering (answer_query_direct).

  • Configurable model ID, temperature, streaming behavior, max output tokens, and retry settings via environment variables.

  • Uses streaming API by default for potentially better responsiveness.

  • Includes basic retry logic for transient API errors.

  • Minimal safety filters applied (BLOCK_NONE) to reduce potential blocking (use with caution).

Tools Provided

Query & Generation (AI Focused)

  • answer_query_websearch: Answers a natural language query using the configured Vertex AI model enhanced with Google Search results.

  • answer_query_direct: Answers a natural language query using only the internal knowledge of the configured Vertex AI model.

  • explain_topic_with_docs: Provides a detailed explanation for a query about a specific software topic by synthesizing information primarily from official documentation found via web search.

  • get_doc_snippets: Provides precise, authoritative code snippets or concise answers for technical queries by searching official documentation.

  • generate_project_guidelines: Generates a structured project guidelines document (Markdown) based on a specified list of technologies (optionally with versions), using web search for best practices.

Research & Analysis Tools

  • code_analysis_with_docs: Analyzes code snippets by comparing them with best practices from official documentation, identifying potential bugs, performance issues, and security vulnerabilities.

  • technical_comparison: Compares multiple technologies, frameworks, or libraries based on specific criteria, providing detailed comparison tables with pros/cons and use cases.

  • architecture_pattern_recommendation: Suggests architecture patterns for specific use cases based on industry best practices, with implementation examples and considerations.

  • dependency_vulnerability_scan: Analyzes project dependencies for known security vulnerabilities, providing detailed information and mitigation strategies.

  • database_schema_analyzer: Reviews database schemas for normalization, indexing, and performance issues, suggesting improvements based on database-specific best practices.

  • security_best_practices_advisor: Provides security recommendations for specific technologies or scenarios, with code examples for implementing secure practices.

  • testing_strategy_generator: Creates comprehensive testing strategies for applications or features, suggesting appropriate testing types with coverage goals.

  • regulatory_compliance_advisor: Provides guidance on regulatory requirements for specific industries (GDPR, HIPAA, etc.), with implementation approaches for compliance.

  • microservice_design_assistant: Helps design microservice architectures for specific domains, with service boundary recommendations and communication patterns.

  • documentation_generator: Creates comprehensive documentation for code, APIs, or systems, following industry best practices for technical documentation.

Filesystem Operations

  • read_file_content: Read the complete contents of one or more files. Provide a single path string or an array of path strings.

  • write_file_content: Create new files or completely overwrite existing files. The 'writes' argument accepts a single object ({path, content}) or an array of such objects.

  • edit_file_content: Makes line-based edits to a text file, returning a diff preview or applying changes.

  • list_directory_contents: Lists files and directories directly within a specified path (non-recursive).

  • get_directory_tree: Gets a recursive tree view of files and directories as JSON.

  • move_file_or_directory: Moves or renames files and directories.

  • search_filesystem: Recursively searches for files/directories matching a name pattern, with optional exclusions.

  • get_filesystem_info: Retrieves detailed metadata (size, dates, type, permissions) about a file or directory.

  • execute_terminal_command: Execute a shell command, optionally specifying cwd and timeout. Returns stdout/stderr.

Combined AI + Filesystem Operations

  • save_generate_project_guidelines: Generates project guidelines based on a tech stack and saves the result to a specified file path.

  • save_doc_snippet: Finds code snippets from documentation and saves the result to a specified file path.

  • save_topic_explanation: Generates a detailed explanation of a topic based on documentation and saves the result to a specified file path.

  • save_answer_query_direct: Answers a query using only internal knowledge and saves the answer to a specified file path.

  • save_answer_query_websearch: Answers a query using web search results and saves the answer to a specified file path.

(Note: Input/output schemas for each tool are defined in their respective files within src/tools/ and exposed via the MCP server.)

Prerequisites

  • Node.js (v18+)

  • Bun (npm install -g bun)

  • Google Cloud Project with Billing enabled.

  • Vertex AI API enabled in the GCP project.

  • Google Cloud Authentication configured in your environment (Application Default Credentials via gcloud auth application-default login is recommended, or a Service Account Key).

Setup & Installation

  1. Clone/Place Project: Ensure the project files are in your desired location.

  2. Install Dependencies:

    bun install
  3. Configure Environment:

    • Create a .env file in the project root (copy .env.example).

    • Set the required and optional environment variables as described in .env.example.

      • Set AI_PROVIDER to either "vertex" or "gemini".

      • If AI_PROVIDER="vertex", GOOGLE_CLOUD_PROJECT is required.

      • If AI_PROVIDER="gemini", GEMINI_API_KEY is required.

  4. Build the Server:

    bun run build

    This compiles the TypeScript code to build/index.js.

Usage (Standalone / NPX)

Once published to npm, you can run this server directly using npx:

# Ensure required environment variables are set (e.g., GOOGLE_CLOUD_PROJECT)
bunx vertex-ai-mcp-server

Alternatively, install it globally:

bun install -g vertex-ai-mcp-server
# Then run:
vertex-ai-mcp-server

Note: Running standalone requires setting necessary environment variables (like GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION, authentication credentials if not using ADC) in your shell environment before executing the command.

Installing via Smithery

To install Vertex AI Server for Claude Desktop automatically via Smithery:

bunx -y @smithery/cli install @shariqriazz/vertex-ai-mcp-server --client claude

Running with Cline

  1. Configure MCP Settings: Add/update the configuration in your Cline MCP settings file (e.g., .roo/mcp.json). You have two primary ways to configure the command:

    Option A: Using Node (Direct Path - Recommended for Development)

    This method uses node to run the compiled script directly. It's useful during development when you have the code cloned locally.

    {
      "mcpServers": {
        "vertex-ai-mcp-server": {
          "command": "node",
          "args": [
            "/full/path/to/your/vertex-ai-mcp-server/build/index.js" // Use absolute path or ensure it's relative to where Cline runs node
          ],
          "env": {
            // --- General AI Configuration ---
            "AI_PROVIDER": "vertex", // "vertex" or "gemini"
            // --- Required (Conditional) ---
            "GOOGLE_CLOUD_PROJECT": "YOUR_GCP_PROJECT_ID", // Required if AI_PROVIDER="vertex"
            // "GEMINI_API_KEY": "YOUR_GEMINI_API_KEY", // Required if AI_PROVIDER="gemini"
            // --- Optional Model Selection ---
            "VERTEX_MODEL_ID": "gemini-2.5-pro-exp-03-25", // If AI_PROVIDER="vertex" (Example override)
            "GEMINI_MODEL_ID": "gemini-2.5-pro-exp-03-25", // If AI_PROVIDER="gemini"
            // --- Optional AI Parameters ---
            "GOOGLE_CLOUD_LOCATION": "us-central1", // Specific to Vertex AI
            "AI_TEMPERATURE": "0.0",
            "AI_USE_STREAMING": "true",
            "AI_MAX_OUTPUT_TOKENS": "65536", // Default from .env.example
            "AI_MAX_RETRIES": "3",
            "AI_RETRY_DELAY_MS": "1000",
            // --- Optional Vertex Authentication ---
            // "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account-key.json" // If using Service Account Key for Vertex
          },
          "disabled": false,
          "alwaysAllow": [
             // Add tool names here if you don't want confirmation prompts
             // e.g., "answer_query_websearch"
          ],
          "timeout": 3600 // Optional: Timeout in seconds
        }
        // Add other servers here...
      }
    }
    • Important: Ensure the args path points correctly to the build/index.js file. Using an absolute path might be more reliable.

    Option B: Using NPX (Requires Package Published to npm)

    This method uses npx to automatically download and run the server package from the npm registry. This is convenient if you don't want to clone the repository.

    {
      "mcpServers": {
        "vertex-ai-mcp-server": {
          "command": "bunx", // Use bunx
          "args": [
            "-y", // Auto-confirm installation
            "vertex-ai-mcp-server" // The npm package name
          ],
          "env": {
            // --- General AI Configuration ---
            "AI_PROVIDER": "vertex", // "vertex" or "gemini"
            // --- Required (Conditional) ---
            "GOOGLE_CLOUD_PROJECT": "YOUR_GCP_PROJECT_ID", // Required if AI_PROVIDER="vertex"
            // "GEMINI_API_KEY": "YOUR_GEMINI_API_KEY", // Required if AI_PROVIDER="gemini"
            // --- Optional Model Selection ---
            "VERTEX_MODEL_ID": "gemini-2.5-pro-exp-03-25", // If AI_PROVIDER="vertex" (Example override)
            "GEMINI_MODEL_ID": "gemini-2.5-pro-exp-03-25", // If AI_PROVIDER="gemini"
            // --- Optional AI Parameters ---
            "GOOGLE_CLOUD_LOCATION": "us-central1", // Specific to Vertex AI
            "AI_TEMPERATURE": "0.0",
            "AI_USE_STREAMING": "true",
            "AI_MAX_OUTPUT_TOKENS": "65536", // Default from .env.example
            "AI_MAX_RETRIES": "3",
            "AI_RETRY_DELAY_MS": "1000",
            // --- Optional Vertex Authentication ---
            // "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/service-account-key.json" // If using Service Account Key for Vertex
          },
          "disabled": false,
          "alwaysAllow": [
             // Add tool names here if you don't want confirmation prompts
             // e.g., "answer_query_websearch"
          ],
          "timeout": 3600 // Optional: Timeout in seconds
        }
        // Add other servers here...
      }
    }
    • Ensure the environment variables in the env block are correctly set, either matching .env or explicitly defined here. Remove comments from the actual JSON file.

  2. Restart/Reload Cline: Cline should detect the configuration change and start the server.

  3. Use Tools: You can now use the extensive list of tools via Cline.

Development

  • Watch Mode: bun run watch

  • Linting: bun run lint

  • Formatting: bun run format

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

20 tools
answer_query_directA

Answers a natural language query using only the internal knowledge of the configured Vertex AI model (gemini-2.5-pro-exp-03-25). Does not use web search. Requires a 'query' string.

Inputs: query (required).

answer_query_websearchB

Answers a natural language query using the configured Vertex AI model (gemini-2.5-pro-exp-03-25) enhanced with Google Search results for up-to-date information. Requires a 'query' string.

Inputs: query (required).

create_directoryA

Create a new directory or ensure a directory exists in the workspace filesystem. Can create multiple nested directories in one operation (like mkdir -p). If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects.

Inputs: path (required).

edit_file_contentA

Make line-based edits to a text file in the workspace filesystem. Each edit attempts to replace an exact match of 'oldText' with 'newText'. If no exact match is found, it attempts a line-by-line match ignoring leading/trailing whitespace. Indentation of the first line is preserved, and relative indentation of subsequent lines is attempted. Returns a git-style diff showing the changes made (or previewed if dryRun is true).

Inputs: edits (required), path (required), dryRun.

explain_topic_with_docsA

Provides a detailed explanation for a query about a specific software topic by synthesizing information primarily from official documentation found via web search. Focuses on comprehensive answers, context, and adherence to documented details. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25) with Google Search. Requires 'topic' and 'query'.

Inputs: query (required), topic (required).

generate_project_guidelinesA

Generates a structured project guidelines document (e.g., Markdown) based on a specified list of technologies and versions (tech stack). Uses web search to find the latest official documentation, style guides, and best practices for each component and synthesizes them into actionable rules and recommendations. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25) with Google Search. Requires 'tech_stack'.

Inputs: tech_stack (required).

get_directory_treeA

Get a recursive tree view of files and directories within the workspace filesystem as a JSON structure. Each entry includes 'name', 'type' (file/directory), and 'children' (an array) for directories. Files have no 'children' array. The output is formatted JSON text. Useful for understanding the complete structure of a project directory.

Inputs: path (required).

get_doc_snippetsA

Provides precise, authoritative code snippets or concise answers for technical queries by searching official documentation. Focuses on delivering exact solutions without unnecessary explanation. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25) with Google Search. Requires 'topic' and 'query'.

Inputs: query (required), topic (required), include_examples, version.

get_filesystem_infoA

Retrieve detailed metadata about a file or directory within the workspace filesystem. Returns comprehensive information including size (bytes), creation time, last modified time, last accessed time, type (file/directory), and permissions (octal string). This tool is perfect for understanding file characteristics without reading the actual content.

Inputs: path (required).

list_directory_contentsA

Get a detailed listing of all files and directories directly within a specified path in the workspace filesystem. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is essential for understanding directory structure and finding specific files within a directory. Does not list recursively.

Inputs: path (required).

move_file_or_directoryA

Move or rename files and directories within the workspace filesystem. Can move items between directories and rename them in a single operation. If the destination path already exists, the operation will likely fail (OS-dependent).

Inputs: destination (required), source (required).

read_file_contentA

Read the complete contents of a file from the workspace filesystem. Handles various text encodings and provides detailed error messages if the file cannot be read. Use this tool when you need to examine the contents of a single file within the workspace.

Inputs: path (required).

read_multiple_files_contentA

Read the contents of multiple files simultaneously from the workspace filesystem. This is more efficient than reading files one by one when you need to analyze or compare multiple files. Each file's content is returned with its path as a reference. Failed reads for individual files won't stop the entire operation.

Inputs: paths (required).

save_answer_query_directA

Answers a natural language query using only the internal knowledge of the configured Vertex AI model (gemini-2.5-pro-exp-03-25), does not use web search, and saves the answer to a file. Requires 'query' and 'output_path'.

Inputs: output_path (required), query (required).

save_answer_query_websearchA

Answers a natural language query using Google Search results and saves the answer to a file. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25). Requires 'query' and 'output_path'.

Inputs: output_path (required), query (required).

save_doc_snippetA

Provides precise code snippets or concise answers for technical queries by searching official documentation and saves the result to a file. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25) with Google Search. Requires 'topic', 'query', and 'output_path'.

Inputs: output_path (required), query (required), topic (required), include_examples, +1 more.

save_generate_project_guidelinesA

Generates comprehensive project guidelines based on a tech stack using web search and saves the result to a specified file path. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25). Requires 'tech_stack' and 'output_path'.

Inputs: output_path (required), tech_stack (required).

save_topic_explanationC

Provides a detailed explanation for a query about a specific software topic using official documentation found via web search and saves the result to a file. Uses the configured Vertex AI model (gemini-2.5-pro-exp-03-25). Requires 'topic', 'query', and 'output_path'.

Inputs: output_path (required), query (required), topic (required).

search_filesystemA

Recursively search for files and directories within the workspace filesystem matching a pattern in their name. Searches through all subdirectories from the starting path. The search is case-insensitive and matches partial names. Returns full paths (relative to workspace) to all matching items. Supports excluding paths using glob patterns.

Inputs: path (required), pattern (required), excludePatterns.

write_file_contentA

Create a new file or completely overwrite an existing file in the workspace filesystem with new content. Use with caution as it will overwrite existing files without warning. Handles text content with proper encoding.

Inputs: content (required), path (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 20 tools

    Disambiguation3/5

    The tool set has clear distinctions between filesystem operations (e.g., create_directory, read_file_content) and AI query tools, but significant ambiguity exists within the AI query category. For example, answer_query_direct, explain_topic_with_docs, and get_doc_snippets all involve answering queries with the AI model, differing mainly in their use of web search or documentation focus, which could confuse an agent about which to select for a given task. The 'save_' variants further overlap with their non-save counterparts, adding redundancy rather than clarity.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun pattern (e.g., create_directory, read_file_content, search_filesystem), which is predictable and readable. However, there are minor deviations: some tools use underscores inconsistently (e.g., get_doc_snippets vs. save_doc_snippet) or have longer names (e.g., explain_topic_with_docs), and the 'save_' prefix is applied inconsistently across AI tools. Overall, the naming is mostly consistent but not perfectly uniform.

    Tool Count3/5

    With 20 tools, the count is borderline high for a server focused on Vertex AI and filesystem operations. While the domain is broad, the tool set feels heavy due to redundant 'save_' variants and overlapping AI query tools. A more streamlined set of 10-15 tools could cover the same functionality without duplication, making this count slightly excessive but not extreme.

    Completeness4/5

    The server covers two main domains: filesystem management and AI-powered querying. For filesystem operations, it provides comprehensive CRUD-like coverage (create, read, edit, move, search, etc.), with no obvious gaps. For AI queries, it offers various modes (direct, web search, documentation-focused) and saving options, though the redundancy might mask minor gaps in specific query types. Overall, the surface is largely complete for its intended purposes.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers