agy-mcp-server
Provides tools for interacting with Google Gemini models via the Antigravity CLI (agy), enabling planning, code review, test validation, and general prompts with a selection of Gemini models.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agy-mcp-servercreate an implementation plan for adding PostgreSQL caching"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agy-mcp-server
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
agyCLI 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_planfor architecture and implementation plansagy_reviewfor technical and security-oriented code reviewagy_validate_testsfor test quality and coverage analysisagy_execfor general-purpose Antigravity promptsagy_commandfor literal slash commands such as/usageStrict allowlist for Google Gemini models
Safe argument passing through
spawn, without shell interpolationConfigurable project context through
directoryFive-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
agyCLI installed and authenticatedAn 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 buildOpenCode 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 |
| Yes |
| No |
| No |
| No |
| No |
| No |
| No |
| No |
| No |
| No |
| 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 textOther 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 |
|
| Absolute path to the |
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.
agyis started with--dangerously-skip-permissions, as required for unattended MCP calls. Review prompts and workspace permissions before usingagy_execwith 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
agycredentials, 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 analysisDevelopment
npm install
npm run typecheck
npm run build
npm startThe 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 toolsagy_commandB
Executa literalmente um comando direto do Antigravity CLI, como /usage, sem pedir ao modelo para interpretar ou reformular a instrução.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Modelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium. | gemini-3.7-flash-medium |
| command | Yes | Comando direto do agy, incluindo a barra inicial. Exemplo: /usage. | |
| directory | No | Diretório base do projeto, quando o comando precisar de contexto local. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Modo de execução (plan para análise pura ou accept-edits para execução padrão). | accept-edits |
| model | No | Modelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium. | gemini-3.7-flash-medium |
| prompt | Yes | Instrução ou consulta a ser enviada ao Antigravity CLI. | |
| directory | No | Diretório base do projeto para contexto. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Modelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium. | gemini-3.7-flash-medium |
| prompt | Yes | Descrição detalhada da tarefa, objetivos, requisitos ou cenário a ser planejado. | |
| directory | No | Diretório base do projeto (workspace) para análise de contexto. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Modelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium. | gemini-3.7-flash-medium |
| prompt | Yes | Código-fonte, diff, arquitetura ou implementação a ser revisada. | |
| directory | No | Diretório base do projeto para contexto. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Modelo Google Gemini a utilizar. Padrão: gemini-3.7-flash-medium. | gemini-3.7-flash-medium |
| prompt | Yes | Código dos testes, especificação de requisitos e detalhes dos componentes a serem validados. | |
| directory | No | Diretório base do projeto para contexto. |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.0.0- First observed
agy_command - First observed
agy_exec - First observed
agy_plan - First observed
agy_review - First observed
agy_validate_tests
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceBridges Google's Gemini CLI to MCP-compatible AI assistants, enabling prompt execution, model listing, and raw CLI commands.11 npm1GPL 3.0
- AlicenseNot gradedqualityAmaintenanceMCP server enabling delegation of tasks to the Antigravity (Gemini) CLI from any AI client supporting MCP.8 npmMIT
- AlicenseAqualityCmaintenanceBridges Google Antigravity CLI with MCP clients, enabling 13 specialized tools for AI-assisted coding, automation, and security audits.1339 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible coding agents to run the local Antigravity CLI as a coding agent, manage conversation context and common options, and inspect usage, quota, models, version, help, and read-only slash commands.39 npmMIT