Skip to main content
Glama

agy-mcp-server

CI License: MIT Node.js MCP Platform

Languages: English | Português

An MCP server that exposes the Antigravity CLI (agy) to MCP clients such as OpenCode. It provides structured tools for planning, code review, test validation, generic prompts, and literal CLI commands.

The server is intentionally restricted to Google Gemini models and defaults to gemini-3.7-flash-medium.

Important: This project requires the official agy CLI to be installed and authenticated. It does not provide or redistribute Antigravity credentials or the CLI itself.

Features

  • MCP server over stdio for local clients

  • agy_plan for architecture and implementation plans

  • agy_review for technical and security-oriented code review

  • agy_validate_tests for test quality and coverage analysis

  • agy_exec for general-purpose Antigravity prompts

  • agy_command for literal slash commands such as /usage

  • Strict allowlist for Google Gemini models

  • Safe argument passing through spawn, without shell interpolation

  • Configurable project context through directory

  • Five-minute execution timeout with graceful termination and force-kill fallback

  • English tool descriptions and error messages

Related MCP server: agyforclaude

Requirements

  • Node.js 20 or later

  • npm

  • The agy CLI installed and authenticated

  • An MCP-compatible client

By default, the server looks for agy at ~/.local/bin/agy. Set AGY_BIN_PATH when it is installed elsewhere.

Installation

git clone https://github.com/moisesfilho/agy-mcp-server.git
cd agy-mcp-server
npm ci
npm run build

OpenCode Configuration

Add the following entry to ~/.config/opencode/opencode.json:

{
  "mcp": {
    "agy-proxy": {
      "type": "local",
      "command": [
        "node",
        "/absolute/path/to/agy-mcp-server/dist/index.js"
      ]
    }
  }
}

For a local installation in the standard project directory, use:

{
  "mcp": {
    "agy-proxy": {
      "type": "local",
      "command": [
        "node",
        "/home/moises/Projetos/agy-mcp-server/dist/index.js"
      ]
    }
  }
}

Restart the MCP client after changing its configuration.

Available Models

Every tool accepts an optional model argument. Only the following models are accepted:

Model

Default

gemini-3.7-flash-medium

Yes

gemini-3.7-flash-high

No

gemini-3.7-flash-low

No

gemini-3.8-flash-high

No

gemini-3.8-flash-medium

No

gemini-3.8-flash-low

No

gemini-3.6-flash-high

No

gemini-3.6-flash-medium

No

gemini-3.6-flash-low

No

gemini-3.1-pro-high

No

gemini-3.1-pro-low

No

The model suffix controls the reasoning effort. The server does not send a separate --effort flag because the agy CLI rejects conflicting combinations.

Usage

Ask the MCP client to use a tool. Examples:

Create a plan

Use agy_plan to create an implementation plan for adding PostgreSQL caching to this project.

Tool arguments:

{
  "prompt": "Create an implementation plan for adding PostgreSQL caching.",
  "directory": "/home/moises/Projetos/my-project",
  "model": "gemini-3.7-flash-medium"
}

Review code

Use agy_review to inspect the current changes for security issues and regressions.

Validate tests

Use agy_validate_tests to identify missing edge cases in the current test suite.

Run a direct CLI command

Use agy_command when the input must reach agy literally, without an LLM interpreting it:

{
  "command": "/usage"
}

This is equivalent to:

agy -p /usage --output-format text

Other slash commands can be sent in the same way, provided they are supported by the installed agy version.

Run a general prompt

{
  "prompt": "Analyze the current architecture and identify the three largest reliability risks.",
  "mode": "plan",
  "directory": "/home/moises/Projetos/my-project",
  "model": "gemini-3.7-flash-high"
}

Configuration

Variable

Default

Description

AGY_BIN_PATH

~/.local/bin/agy

Absolute path to the agy executable

The server does not store credentials. Authentication is handled by the local agy installation and its own configuration.

Security Notes

  • The server passes arguments directly to the child process and does not invoke a shell.

  • agy is started with --dangerously-skip-permissions, as required for unattended MCP calls. Review prompts and workspace permissions before using agy_exec with edit-capable modes.

  • Directory paths are supplied as process arguments and used as the child working directory.

  • Model validation rejects non-Gemini model names before starting agy.

  • Do not commit agy credentials, local configuration files, or environment secrets.

Project Structure

src/
├── config.ts                 # Binary resolution and Gemini allowlist
├── index.ts                  # MCP stdio server entry point
├── runner.ts                 # agy process lifecycle and timeout handling
└── tools/
    ├── command.ts            # Literal slash commands
    ├── exec.ts               # Generic prompts
    ├── plan.ts               # Technical planning
    ├── review.ts             # Code review
    └── validate-tests.ts     # Test analysis

Development

npm install
npm run typecheck
npm run build
npm start

The server communicates through stdin/stdout using MCP JSON-RPC. Diagnostic messages are written to stderr.

License

This project is licensed under the MIT License. See LICENSE.

Available Tools

5 tools
agy_commandB

Executa literalmente um comando direto do Antigravity CLI, como /usage, sem pedir ao modelo para interpretar ou reformular a instrução.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium.gemini-3.7-flash-medium
commandYesComando direto do agy, incluindo a barra inicial. Exemplo: /usage.
directoryNoDiretório base do projeto, quando o comando precisar de contexto local.

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 usefully discloses the key behavioral trait that the command is executed verbatim without model reinterpretation, but it says nothing about side effects (can a command mutate the workspace?), permissions, error behavior, or whether output is returned raw or summarized.

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?

A single front-loaded sentence that states the action first and the key caveat second; there is no filler or boilerplate. 'Interpretar ou reformular' is mildly redundant but the pairing does clarify intent.

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 3-parameter tool with no annotations and no output schema, the description covers the essential semantic (verbatim CLI execution) but leaves side-effect risk, output format, and failure modes unaddressed. It is adequate, not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 'command' (with slash prefix and example), 'model' (with default), and 'directory'. The description adds no further parameter meaning beyond repeating the '/usage' example, so the baseline 3 applies.

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+resource ('executa literalmente um comando direto do Antigravity CLI') and gives a concrete example ('/usage'), which is clear and actionable. It also implicitly disambiguates from model-driven siblings by stating the command is not interpreted or reformulated, though it never names agy_exec or the other siblings explicitly.

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 rather than stated: the tool is for raw slash-style CLI commands, illustrated by '/usage'. There is no explicit when-to-use vs. when-not, no mention of how it differs from agy_exec or agy_plan, and no prerequisites or conditions that would route an agent here rather than elsewhere.

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

agy_execC

Executa comandos genéricos ou consultas arbitrárias via Antigravity (agy CLI) com suporte a modelos Google Gemini.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoModo de execução (plan para análise pura ou accept-edits para execução padrão).accept-edits
modelNoModelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium.gemini-3.7-flash-medium
promptYesInstrução ou consulta a ser enviada ao Antigravity CLI.
directoryNoDiretório base do projeto para contexto.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden, and it discloses almost nothing: it never mentions that the default mode 'accept-edits' implies filesystem mutation, nor any sandbox, permission, cost, or rate-limit characteristics. An agent could reasonably assume this is a read-only query tool, which is misleading given the schema defaults.

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?

A single tight sentence with no padding, and the delivery mechanism is front-loaded. It earns its place structurally even though its content is thin.

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

Completeness2/5

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

For a 4-parameter execution tool with no output schema, no annotations, and a mutation-implying default mode, the description leaves the agent without the safety and routing context it needs. The critical risk that acg_exec can modify a project directory is nowhere acknowledged.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented in structured data and the baseline of 3 applies. The description adds nothing about the prompt, model selection, mode, or directory semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb (executa) and a resource (comandos/consultas) delivered via the Antigravity CLI, which rules out unrelated tools. But 'genéricos ou arbitrárias' is near-tautological and gives no basis for distinguishing this tool from sibling agy_command, which by name also sounds like command execution.

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?

No statement of when to use this tool versus agy_plan, agy_command, agy_review or agy_validate_tests, and no prerequisites. The only routing hint, if any, lives in the mode enum rather than in the description.

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

agy_planC

Gera ou valida planos de arquitetura e implementação técnica utilizando o Antigravity (agy CLI) em modo de planejamento.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium.gemini-3.7-flash-medium
promptYesDescrição detalhada da tarefa, objetivos, requisitos ou cenário a ser planejado.
directoryNoDiretório base do projeto (workspace) para análise de contexto.

TDQS

C2.4/5.0
Behavior1/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 of behavioral disclosure. It only says it generates or validates plans, but does not state whether this is a read-only operation, whether it writes files, what permissions are required, how long it takes, or what the output looks like. For a tool that likely invokes an external CLI and may modify a workspace, this is a critical gap.

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 single sentence is front-loaded and contains no wasted words. It efficiently states the core function and the tool used. However, it is too sparse to be concise in a helpful way; it omits necessary context rather than being tight.

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

Completeness2/5

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

Given the complexity (external CLI, workspace analysis, model selection) and the lack of annotations and output schema, the description is incomplete. It does not explain what a 'plan' is, how it is returned, whether it executes code, or how it interacts with the workspace. An agent cannot safely invoke this tool without additional assumptions.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented in the schema. The description adds no parameter-level details (e.g., expected format of prompt, meaning of directory, model selection guidance). Baseline 3 is appropriate when the schema does the heavy lifting and the description adds nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb+resource ('Gera ou valida planos de arquitetura e implementação técnica') and mentions the mechanism (agy CLI in planning mode). However, it does not distinguish from siblings like agy_exec or agy_review, which likely also produce plans or run agy commands. An agent cannot tell from the description alone why it should pick agy_plan over agy_exec for a planning task.

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. The phrase 'em modo de planejamento' implies a planning mode but does not state when planning is preferred over execution (agy_exec) or review (agy_review). No exclusions or alternative tools are mentioned.

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

agy_reviewB

Realiza revisão técnica aprofundada de código, diffs ou implementações via Antigravity (agy CLI), avaliando manutenibilidade, segurança, performance e possíveis bugs.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium.gemini-3.7-flash-medium
promptYesCódigo-fonte, diff, arquitetura ou implementação a ser revisada.
directoryNoDiretório base do projeto para contexto.

TDQS

B3.2/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, and it discloses almost none. It does not say whether the operation is read-only or whether it can modify the target directory, that the prompt is sent to an external Google Gemini model, anything about latency/cost, or what the result looks like. Only the enumerable evaluation dimensions (manutenibilidade, segurança, performance, bugs) add substance.

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?

One dense sentence with the action front-loaded and no filler; the four review dimensions are packed in efficiently. It is well-sized for a single-purpose tool, though packing purpose, mechanism and scope into one sentence makes it slightly harder to scan.

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 3-parameter tool with no output schema and no annotations, the definition is adequate on purpose but thin on everything an agent needs to invoke it confidently: expected output form, whether the directory is read or written, and where the review is executed. Nothing required is present in structured fields to compensate.

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

Parameters3/5

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

Schema description coverage is 100%, with model, prompt and directory each documented in the schema itself, so the baseline is 3. The description adds nothing about prompt formatting, directory semantics, or model selection trade-offs beyond what the schema already states.

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 (revisão técnica aprofundada) and concrete resources (código, diffs, implementações), plus the delivery mechanism (Antigravity / agy CLI) and the evaluation axes. It is clearly distinguishable from agy_plan, agy_exec, agy_command and agy_validate_tests by the object and intent, though it never names a sibling to sharpen the boundary.

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 agent can infer 'use this when you want a deep code review', but there is no explicit when-to-use vs when-not, no routing to agy_plan for planning or agy_validate_tests for test validation, and no prerequisites stated.

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

agy_validate_testsC

Analisa código de teste e de produção via Antigravity (agy CLI) para identificar asserções frágeis, casos de borda não cobertos, vazamento de estado e robustez da suíte.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium.gemini-3.7-flash-medium
promptYesCódigo dos testes, especificação de requisitos e detalhes dos componentes a serem validados.
directoryNoDiretório base do projeto para contexto.

TDQS

C2.9/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 burden and falls short. It discloses the execution vehicle (agy CLI / Antigravity), which is useful context, but says nothing about whether files are modified, whether a report is returned, auth/API-key needs, or cost/latency of an LLM call.

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?

A single front-loaded sentence with the verb and resource first, followed by the concrete findings it produces. No filler or restatement of the name, though the field list makes it dense.

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?

There is no output schema, so the description should hint at the return shape and behavioral envelope, and it does neither. It adequately covers the analysis scope for a 3-parameter tool, but an agent cannot tell whether this just returns text, writes artifacts, or alters the working directory.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters (model, prompt, directory) are documented in the schema itself, including the enum and default. The description adds no extra meaning about how prompt or directory should be formatted, so the baseline 3 applies.

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 (analisa) and resource (código de teste e de produção) and names the exact analysis dimensions it will report on: asserções frágeis, casos de borda não cobertos, vazamento de estado, robustez da suíte. It is clear and concrete, but it never distinguishes itself from the sibling agy_review, which an agent could easily mistake for this task.

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, when-not-to-use, or alternative guidance. With siblings like agy_review and agy_plan, the agent must infer from the name alone that test/quality audit is this tool's lane, and nothing excludes using agy_review for the same input.

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. 5 tool updatesv1.0.0
    • First observedagy_command
    • First observedagy_exec
    • First observedagy_plan
    • First observedagy_review
    • First observedagy_validate_tests

TDQS

B3.1/5.0

Scored across 5 tools

Disambiguation4/5

Most tools target distinct tasks: agy_plan for planning, agy_review for code review, and agy_validate_tests for test analysis are clearly separable. The main ambiguity is between agy_exec and agy_command, which both execute commands via the CLI; the descriptions distinguish model-interpreted vs. literal execution, but the boundary is subtle enough to risk occasional misselection.

Naming Consistency3/5

All tools share the predictable agy_ prefix and snake_case, which helps grouping. However, the suffixes mix conventions: agy_plan and agy_command are noun-like, while agy_validate_tests and agy_review are verb phrases, and agy_exec is an abbreviation, so there is no single consistent verb_noun pattern.

Tool Count5/5

Five tools is a well-scoped set for an Antigravity CLI wrapper, covering planning, review, test validation, generic execution, and direct command invocation without redundant bulk.

Completeness4/5

The surface covers the main modes of interacting with the agy CLI: planning, code review, test analysis, generic execution, and literal command execution. Minor gaps like explicit model/config listing or session management could exist, but core workflows appear covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers