Skip to main content
Glama
jasonmeverett

The Trench MCP Server

The Trench MCP Server

MCP Server for controlling satellite ground station operations in the Trench simulation.

Available Tools

🛰️ Simulation State Tools

  • get_simulation_state() - Get comprehensive simulation state including satellite position, contact status, and timing

  • get_current_time() - Get current simulation time and real-world UTC time

  • restart_simulation() - Restart simulation from beginning, resetting all state to epoch time

📡 Pass Management Tools

  • get_all_passes() - Get complete schedule of all satellite passes over ground station

  • get_next_pass() - Get information about next upcoming satellite pass

  • get_current_pass() - Get information about currently active satellite pass (if any)

⏰ Timing and Waiting Tools

  • wait_until_time(target_sim_time) - Wait until simulation reaches specific time (seconds since epoch)

  • wait_for_next_pass() - Wait until next satellite pass begins (AOS)

  • start_downlink(kb_requested, max_minutes=10) - Start data downlink session during active pass

  • stop_downlink() - Stop current data downlink session

🎯 Ground Station Control Tools

  • get_ground_station_state(gs_id="DEMO-GS") - Get current antenna position and mode

  • point_antenna(azimuth, elevation, gs_id="DEMO-GS") - Point antenna to specific angles

  • track_satellite(sat_id="LEO-001", gs_id="DEMO-GS") - Start automatic satellite tracking

  • stop_tracking(gs_id="DEMO-GS") - Stop satellite tracking, return to idle

  • park_antenna(gs_id="DEMO-GS") - Park antenna in safe position

🏥 Health and Monitoring Tools

  • get_satellite_health(sat_id="LEO-001") - Get satellite health and telemetry information

All tools use authenticated API calls with Bearer token authorization to interact with the Trench simulation API.

Related MCP server: spacetrack-mcp

Usage with Claude Desktop

To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your claude_desktop_config.json:

{
  "mcpServers": {
    "trench-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jasonmeverett/the-trench-mcp@main",
        "run-server"
      ],
      "env": {
        "TRENCH_API_URL": "https://the-trench.ml-2cba638a-03a.eng-ml-i.svbr-nqvp.int.cldr.work/",
        "TRENCH_API_KEY": "<apiv2 key>"
      }
    }
  }
}

Transport

The MCP server's transport protocol is configurable via the MCP_TRANSPORT environment variable. Supported values:

  • stdio (default) — communicate over standard input/output. Useful for local tools, command-line scripts, and integrations with clients like Claude Desktop.

  • http - expose an HTTP server. Useful for web-based deployments, microservices, exposing MCP over a network.

  • sse — use Server-Sent Events (SSE) transport. Useful for existing web-based deployments that rely on SSE.

Available Tools

7 tools
get_all_passesA

Get information about all passes defined in the scenario. Shows complete schedule of satellite passes over the ground station.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 discloses that the tool is read-only in nature and returns schedule information, but does not describe the return format, time fields, or any error behavior. For a simple no-parameter getter, this is adequate but not rich.

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?

Two clear, concise sentences with no wasted words. The core purpose is stated first, and the follow-up sentence reinforces the scope and output type.

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

Completeness4/5

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

For a tool with no parameters, no annotations, and no output schema, the description provides enough high-level information about what the tool returns (complete schedule of all passes) for an agent to select and invoke it. It could mention returned fields, but it is not critically incomplete.

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 tool has zero parameters, and the schema coverage is 100%. The description does not need to explain parameter semantics because there are none to explain, so the baseline 4 applies.

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 purpose: retrieving information about all satellite passes in the scenario, specifying the complete schedule. This distinguishes it from sibling tools like get_next_pass, which targets a single pass.

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 conveys a clear usage context: obtaining the full pass schedule. It does not explicitly name alternatives or exclusions, but the plural 'all passes' and 'complete schedule' signal when this tool is appropriate relative to the singular get_next_pass.

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

get_current_timeA

Get the current simulation time and real-world UTC time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/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 behavioral disclosure. The verb 'Get' signals a non-mutating operation, and the description explicitly names the two returned values. It does not mention formatting or side effects, but none are expected for a simple getter.

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?

A single, front-loaded sentence conveys both the action and the returned data with zero wasted words. It is an ideal length for a tool this simple.

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

Completeness5/5

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

The tool is maximally simple: no parameters, no annotations, no output schema. The description completely covers what the tool does and what it returns, making it fully selectable and callable by an agent without additional inference.

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 tool has zero parameters, so there is no parameter documentation burden. The description appropriately focuses on the output rather than inputs, which is the only relevant information for an agent.

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 ('Get') and clearly identifies both resources: the simulation time and real-world UTC time. It is instantly distinguishable from sibling tools like wait_until_time or downlink operations.

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 context clearly implies a read-only, non-blocking time lookup, which separates it from wait_until_time and pass/downlink tools. It does not explicitly state when not to use it, but with a zero-parameter tool the intended usage is unambiguous.

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

get_next_passA

Get information about the next upcoming satellite pass. Returns None if no future passes are scheduled.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does well by indicating this is a read-only information getter and explicitly stating that it returns None when no future passes exist, which is an important edge case.

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 with no fluff. The main purpose is front-loaded, and the second sentence adds a meaningful edge-case behavior. Every word earns its place.

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 zero-argument read-only tool, the description is mostly sufficient, but there is no output schema and the description never explains what 'information' actually includes. An agent may not know what fields or structure the returned pass information will have, which is a meaningful gap.

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 tool has no parameters, so there is no parameter-level semantics to document. The baseline for zero-parameter tools is 4, and the description correctly needs no parameter explanation.

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 operation: get information about the next upcoming satellite pass. It is distinguishable from get_all_passes because it explicitly targets only the next pass, and the None edge case makes the behavior more concrete.

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 gives clear context for when to use the tool: when information about the next upcoming pass is needed. It doesn't explicitly mention alternatives like get_all_passes, but the 'next upcoming' wording implies a natural contrast with getting all passes.

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

test_api_connectionA

Test the connection to the Trench API server. Useful for debugging connectivity issues.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 burden of behavioral disclosure. 'Test the connection' implies a non-destructive network check, but it does not describe what the tool actually does beyond that, such as whether it sends a request, returns a status, or how failures are reported. The description is not misleading, but it is thin.

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 with no filler. The primary purpose is stated first, followed by a practical usage hint. Every word earns its place.

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

Completeness4/5

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

For a zero-parameter, no-output-schema diagnostic tool, the description is largely complete: it names the target server, the action, and the practical use case. It does not describe the response or success criteria, which would be useful, but this is a minor gap for such a simple tool.

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 tool has zero parameters, so the schema already fully documents the input surface. The description does not need to explain parameter behavior, and it appropriately avoids inventing unnecessary details. Baseline 4 applies.

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 a specific action ('Test the connection') and a specific resource ('the Trench API server'). It is clearly distinct from sibling tools, which focus on time queries and downlink operations, so an agent can easily tell what this tool is for.

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 'Useful for debugging connectivity issues' provides explicit guidance on when to use this tool. It does not mention when not to use it or suggest an alternative, but for a simple connectivity check this context is sufficient.

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

wait_until_timeA

Wait until the simulation reaches a specific UTC time. Polls the simulation every 0.1 seconds until the target time is reached.

Args: target_time_iso: Target UTC time in ISO format (e.g., "2025-09-15T17:30:00Z")

ParametersJSON Schema
NameRequiredDescriptionDefault
target_time_isoYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description must carry behavioral transparency. It discloses the polling interval (every 0.1 seconds) and the blocking 'wait until target time is reached' behavior. It does not mention timeout or behavior for past times, but the core execution model is clearly conveyed.

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 brief and well-organized: a one-sentence purpose statement, one sentence on behavior, and a compact Args block. Every sentence earns its place with no redundant fluff.

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

Completeness4/5

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

For a simple single-parameter tool with no output schema, the description provides the essential details: purpose, behavior, and parameter format. It could mention edge cases like past times or infinite waiting, but these are reasonable omissions given the tool's simplicity.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It defines target_time_iso as 'Target UTC time in ISO format' and provides a concrete example ('2025-09-15T17:30:00Z'), adding all necessary meaning beyond the bare schema type and required flag.

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 action with a specific verb and resource: 'Wait until the simulation reaches a specific UTC time.' This is not a tautology of the name and effectively distinguishes it from sibling tools like get_current_time, which reads the current time rather than waiting.

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 context of use is clear: it blocks the simulation until a target time, with polling every 0.1 seconds. It implies the agent should use this instead of manually polling get_current_time, though it does not explicitly mention alternatives or exclusions. No misleading guidance is present.

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. 7 tool updatesv0.1.0
    • First observedget_all_passes
    • First observedget_current_time
    • First observedget_next_pass
    • First observedstart_downlink_simple
    • First observedstop_downlink_simple
    • First observedtest_api_connection
    • First observedwait_until_time

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct concern: connectivity, time, pass scheduling (all vs. next), waiting, and downlink start/stop. Although get_all_passes and get_next_pass are related, their names and descriptions make the difference immediately clear.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern with snake_case, such as test_api_connection, get_all_passes, and start_downlink_simple. The pattern is predictable and uniform across the entire set.

Tool Count5/5

Seven tools is an appropriate, focused scope for a satellite ground-station simulation/downlink server. Each tool covers a necessary operation without redundancy or bloat.

Completeness5/5

The tool set covers the full workflow: verifying connectivity, checking simulation time, discovering passes, waiting for the right moment, and starting/stopping downlinks. No critical dead ends are apparent for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables Large Language Models or other MCP clients to interact with Ansys/AGI STK (Systems Tool Kit), allowing users to control STK Desktop simulations programmatically or via natural language.
    42
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    MCP server for the Geopera geospatial data platform that enables AI agents to discover imagery, place and manage orders, and run analytics using the same API as other Geopera clients.
    100
    MIT