Skip to main content
Glama
aathishwar-13

antigravity-terminal-mcp

Antigravity Terminal MCP

Windows-focused MCP server for terminal automation with persistent sessions and live session logs. Created by AATHI.

Features

  • Persistent PowerShell sessions (session_id, default: default)

  • Incremental stdout/stderr polling

  • Send follow-up input into running sessions

  • Live log file path returned for each session

  • Configurable monitor mode via ANTIGRAVITY_MONITOR_MODE

  • VS Code integrated terminal metadata returned for each session

  • MCP standard methods (tools/list, tools/call) with legacy aliases

Related MCP server: PowerShell MCP Server

MCP Tools

  1. run_command

  2. command_status

  3. send_input

  4. list_sessions

  5. session_visual_info

  6. kill_command

Publish-Ready One-Command Usage (From GitHub)

After pushing this project to your GitHub, users can seamlessly install and attach it to Claude using uvx (or the more robust python -m uv variant for Windows):

# Standard uvx (if in PATH)
claude mcp add antigravity-terminal-mcp uvx --from git+https://github.com/aathishwar-13/antigravity-terminal-mcp.git antigravity-terminal-mcp

# More robust Windows version (if uvx is not in PATH)
claude mcp add antigravity-terminal-mcp python -m uv tool run --from git+https://github.com/aathishwar-13/antigravity-terminal-mcp.git antigravity-terminal-mcp

(Note: If the code is nested in a subdirectory, simply append #subdirectory=folder_name to the git URL).

Local Run

uvx --from . antigravity-terminal-mcp

or

python server.py

Monitor Modes

By default, the server does not open an external monitor window (ANTIGRAVITY_MONITOR_MODE=none). This keeps monitoring in VS Code when you use the integrated terminal bridge.

If you explicitly want a separate PowerShell window for each session monitor, enable external mode:

$env:ANTIGRAVITY_MONITOR_MODE = "external"
python server.py

To force no external monitor window:

$env:ANTIGRAVITY_MONITOR_MODE = "none"
python server.py

When run_command or session_visual_info is called, the response now includes:

  • log_path

  • watch_command

  • monitor_mode

  • vscode_terminal

  • monitor_open (quick-open metadata for clickable/open actions)

monitor_open includes:

  • command_uri (VS Code command URI for antigravityTerminal.openMonitor)

  • markdown_link (prebuilt markdown clickable link for chat UIs)

  • integrated_terminal_command (copy/paste command to open live monitor in integrated terminal)

  • open_terminal_uri (opens a VS Code integrated terminal)

  • open_terminal_with_cwd_uri (opens integrated terminal in session cwd)

  • run_in_active_terminal_uri (runs monitor command in active integrated terminal)

The vscode_terminal object is designed for a VS Code extension to open the same session monitor inside an integrated terminal.

VS Code Integrated Terminal Bridge

A lightweight extension scaffold lives in vscode-integration/.

What it does

  • Opens an integrated PowerShell terminal in the current VS Code window

  • Runs the returned watch_command / vscode_terminal.command

  • Lets you paste either the full session_visual_info JSON or just the log_path

  • Shows a status-bar button: MCP Monitor (bottom-right) to pick and open any existing session monitor

  • Auto-detects session_logs/*.log create/change activity and shows an Open Monitor popup action

How to try it locally

  1. Open antigravity_mcp/vscode-integration in VS Code.

  2. Press F5 to launch the extension host.

  3. Run Antigravity: Open Monitor From Session Info JSON from the Command Palette.

  4. Paste the JSON returned by session_visual_info or run_command.

Where to click

  • Bottom-right VS Code status bar: click MCP Monitor and choose a session

  • On new session creation: click Open Monitor in the popup notification

This uses the VS Code extension API, which is the correct way to open an integrated terminal in the current editor window. A plain Python process cannot directly create a terminal tab inside VS Code by itself.

Quick Integrated Monitor Command (No Copy/Paste)

Use the helper script from a VS Code integrated terminal:

Set-Location d:\Projects\Client_projects\Velyx_Chatbot\antigravity_mcp
.\open-monitor.ps1 -SessionId live-agent

Optional short alias for the current terminal session:

Set-Alias agmwatch .\open-monitor.ps1
agmwatch -SessionId live-agent

This keeps monitoring inside VS Code and does not open an external terminal window.

Example MCP Config

{
  "mcpServers": {
    "antigravity-terminal-mcp": {
      "command": "python",
      "args": [
        "-m",
        "uv",
        "tool",
        "run",
        "--from",
        "git+https://github.com/aathishwar-13/antigravity-terminal-mcp.git",
        "antigravity-terminal-mcp"
      ]
    }
  }
}

Or


{
  "mcpServers": {
    "antigravity-terminal-mcp": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/AATHI/antigravity-terminal-mcp.git",
        "antigravity-terminal-mcp"
      ]
    }
  }
}

👨‍💻 About the Author

AATHI is a developer focused on building high-performance, developer-centric automation tools for the next generation of AI agents. With a specialization in bridging the gap between headless LLM execution and rich user-facing terminal interactions, AATHI created this tool to provide a portable, professional terminal experience beyond the standard VS Code integration limits.

Feel free to reach out for feedback or technical support via this repository!

Available Tools

6 tools
command_statusA

Check status and get incremental output from a running command.

ParametersJSON Schema
NameRequiredDescriptionDefault
command_idYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden. It discloses the key behavior of returning incremental output, which implies a cursor or consumption behavior. However, it does not mention side effects, error handling, or whether the command remains running after checking, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with only the necessary information. It is concise, front-loaded with the primary action, and has no filler or redundant words.

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 one-parameter tool with no output schema, the description states the core function but omits details about return format, status values, and potential errors. While the tool is simple, the lack of such context makes it merely adequate rather than 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?

The schema has 0% description coverage, so the description must compensate. While 'command_id' is implied to be the identifier of the running command, the description does not explicitly state what it is or where it comes from (e.g., from run_command). This is sufficient for a simple tool but not fully explicit.

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

Purpose5/5

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

The description uses a specific verb ('check') and resource ('status and incremental output'), clearly distinguishing it from siblings like run_command, send_input, and kill_command. It precisely identifies what the tool does without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from a running command' clearly implies this tool is for an already-started command, setting context for when to use it. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5.

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

kill_commandB

Terminate a running command by command_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
command_idYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It merely restates the action (terminate) without providing any additional context about the effect on the process, reversibility, error handling, or session state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence, concise and front-loaded with the verb. Every word is necessary and there is no fluff.

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 simple one-parameter tool, the description provides the essential purpose but omits behavioral details like return values, error scenarios, or relationship to sibling tools. Given no annotations or output schema, a bit more context would be helpful, but the tool's simplicity keeps it at a minimum viable level.

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

Parameters2/5

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

The description mentions 'by command_id' but adds minimal meaning beyond the schema's property name. It does not explain what command_id represents, how to obtain it, or any expected format. Given 0% schema coverage, this is insufficient.

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

Purpose5/5

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

The description states 'Terminate a running command by command_id,' which uses a specific verb ('terminate') and resource ('running command'). It clearly distinguishes the tool from siblings like run_command, command_status, and send_input, while identifying the key parameter.

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 guidance is provided on when to use this tool vs. alternatives. The description only states the core purpose and does not mention any exclusions, prerequisites, or references to sibling tools.

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

list_sessionsA

List existing terminal sessions and whether they are running.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It clearly states the action is a read-only listing and highlights the running-state information, which is useful. However, it omits details such as whether terminated sessions are included, what fields are returned for each session, or any potential side effects. This is acceptable for a simple list but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states the action, target, and key output detail ('whether they are running') efficiently. Every word adds value.

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?

The tool has no parameters, no output schema, and no annotations, so the description is the only source of context. It explains the basic purpose but leaves ambiguity about the exact return structure (e.g., session IDs, names) and whether it includes all sessions or only active ones. For a simple list tool this is a moderate gap; additional detail about the returned fields would make it complete.

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

Parameters4/5

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

The input schema has zero parameters, so the baseline for parameter semantics is 4. The description doesn't need to explain parameters. It correctly focuses on the tool's output rather than inputs, and there is no parameter documentation gap.

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

Purpose5/5

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

The description uses a specific verb 'List' with a clear resource 'existing terminal sessions' and adds the meaningful detail 'whether they are running.' This distinguishes it from sibling tools like run_command and command_status, which handle execution and status of individual commands rather than session enumeration.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer list_sessions over command_status or other siblings, and gives no context about prerequisites or typical use cases. The implied usage is to list sessions, but no explicit comparisons or exclusions are provided.

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

run_commandA

Execute a command in a reusable terminal session. Reuses session_id (or default) unless create_session=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
commandYes
session_idNo
terminal_nameNoCustom name for the VS Code terminal tab.
create_sessionNo

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavior. It reveals the session reuse behavior but omits critical details like whether the command blocks, captures output, handles errors, or what happens if session_id is invalid. Significant gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the main purpose and followed by a key behavioral detail. Every word earns its place; no fluff.

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?

The description covers the core session reuse behavior, which is essential. However, without an output schema or annotations, it fails to explain return values, cwd semantics, or the purpose of terminal_name. It is adequate for basic understanding but leaves significant gaps for a 5-parameter tool.

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?

The input schema has very low description coverage (20%). The description adds meaning for session_id and create_session by explaining reuse logic, but cwd and terminal_name are left unexplored. It partially compensates for the schema's lack of detail.

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

Purpose5/5

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

The description clearly states the tool's function: executing a command in a reusable terminal session. The verb 'execute' and resource 'command' are specific, and it is easily distinguished from sibling tools like command_status or kill_command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to reuse an existing session versus creating a new one via create_session, providing clear context. However, it does not explicitly mention alternative tools for related operations, such as send_input or kill_command.

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

send_inputA

Send text input to the stdin of an active command.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
command_idYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It states the action but does not reveal what happens when input is sent (e.g., buffered vs. delivered immediately, failure if command is not active, whether it blocks, or any side effects). This is a significant gap for a mutation-like tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the primary verb and object. Every word contributes to meaning, with no fluff or repetition of the tool name.

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?

Given the tool's simplicity (two string params, no output schema), the description covers the core action but leaves important contextual gaps: it does not explain how to obtain a valid command_id, what constitutes an 'active command,' or how this fits into the broader command lifecycle. With no annotations, more context would be beneficial.

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?

The schema has no descriptions for its two parameters, and schema coverage is 0%. The description partially compensates by implying that 'text' is the content sent and 'command_id' identifies the active command. However, it does not explicitly map parameters to their roles or elaborate on expected formats, leaving some inference required.

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

Purpose5/5

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

The description clearly states a specific action: 'Send text input to the stdin of an active command.' The verb 'send' pairs with the resource 'stdin of an active command,' and this clearly differentiates from siblings like 'run_command' (which starts commands) and 'kill_command' (which terminates them).

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?

The phrase 'active command' implies this tool is for interacting with already-running commands, suggesting it should not be used to initiate a command. However, there is no explicit statement of when to use it versus alternatives, nor mention that command_id should come from run_command. Usage is implied rather than explicitly guided.

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

session_visual_infoA

Get live log path and watch command for a session so users can open output visually.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states that the tool returns a log path and watch command, but gives no details about error handling, prerequisites (e.g., session must be active), or whether it has side effects. For a simple read-only getter this is passable but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and object, and no unnecessary words. It efficiently communicates the core functionality.

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 low-complexity tool with one parameter and no output schema, the description covers the primary retrieval purpose but lacks details on return value structure, potential errors, or preconditions. It is adequate for basic selection but not fully self-contained.

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

Parameters2/5

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

The schema defines a single string parameter 'session_id' with 0% description coverage. The description references 'a session' but does not explain the parameter's expected format, meaning, or role, leaving the agent to infer the obvious identifier semantics from the parameter name.

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

Purpose5/5

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

The description uses the specific verb 'Get' with a clear resource: 'live log path and watch command for a session'. The purpose clause 'so users can open output visually' clarifies intent and distinguishes this from sibling tools like run_command or command_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when a user needs to view session output visually) but does not explicitly state when not to use it or mention alternatives. The context is clear enough for selection, though exclusions are absent.

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. 6 tool updatesv0.1.0
    • First observedcommand_status
    • First observedkill_command
    • First observedlist_sessions
    • First observedrun_command
    • First observedsend_input
    • First observedsession_visual_info

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct aspect of terminal session management: starting a command, checking its status, sending input, killing it, listing sessions, and retrieving visual log info. No two tools serve the same purpose.

Naming Consistency3/5

Four tools (run_command, send_input, list_sessions, kill_command) follow a verb_noun pattern, but command_status and session_visual_info are noun-based, mixing conventions. The style is readable but not consistently patterned.

Tool Count5/5

Six tools is a well-scoped set for a terminal management server, covering the core lifecycle without unnecessary bloat or gaps.

Completeness4/5

The command lifecycle (run, status, input, kill) and session listing are covered, but there is no way to list active commands within a session or explicitly delete a session, causing minor discoverability and cleanup gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for SSH and local terminal access. Supports interactive commands, long-running processes, and TUI apps like tmux/zellij
    6
    3
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    A comprehensive Model Context Protocol (MCP) server that enables Claude and other LLM applications to execute PowerShell commands, scripts, and perform system operations on Windows systems.
    10
    25
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A MCP terminal management server with persistent sessions and terminal polling, optimized for Windows + WSL environments.
    6 npm
    2
    MIT