Skip to main content
Glama
kangkangzi2025

mnvitop-mcp

mnvitop

One terminal for the GPUs of all your ssh hosts. It runs nvidia-smi over ssh and shows every host's GPUs, their memory, utilisation history and running processes in a single live view. Nothing needs to be installed on the remote side beyond nvidia-smi and ps. It also ships an MCP server, so an agent can ask where a free GPU is.

mnvitop watching three GPU hosts

Install

uv tool install mnvitop

You need Python 3.11 or newer locally and ssh access to the hosts. To get the MCP server as well, install mnvitop[mcp].

Related MCP server: clausius

Use

mnvitop h20 semi pro6000

Each argument is an ssh destination, either an alias from ~/.ssh/config or user@host. Ctrl-C quits.

mnvitop -a        # temperature, process cpu and memory, more processes per GPU
mnvitop --once    # print once and exit
mnvitop --json    # one JSON line per round, for logging

mnvitop --help lists the rest. To stop typing the hosts every time, put them in ~/.config/mnvitop/hosts.toml, following hosts.example.toml.

For agents, mnvitop-mcp is a stdio MCP server with three tools: find_gpus, fleet_status and list_hosts. Register it in Claude Code with claude mcp add mnvitop -- mnvitop-mcp. The repository also carries a matching skill in skills/gpu-fleet.

MIT license.

Available Tools

3 tools
find_gpusA

Find where a job that needs count idle GPUs with at least min_free_gb free VRAM each can run right now.

Call this first for any placement question. Returns found, a summary line, placements best first (the least loaded host that has enough idle GPUs, with the GPU indices to use), and when nothing fits, alternatives: hosts with fewer idle GPUs and busy GPUs that still have the VRAM (shared with someone else's job, so only for small experiments).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
hostsNo
min_free_gbNo

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavior on its own. It explains the output structure (found, summary line, placements best first) and the caveat that alternatives include shared GPUs 'only for small experiments.' This gives reasonable transparency about the tool's limitations and operation. It does not mention any side effects, but the find operation is implicitly read-only.

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 description is two short paragraphs with the core purpose in the first sentence, followed by usage guidance and return details. Each sentence adds value—there is no filler. It is concise and well-structured, though the second paragraph could be tightened without losing information.

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?

Given there is no output schema, the description does a good job of explaining return values and the ranking logic. It clarifies edge cases (nothing fits) and the limitation of shared GPUs. However, it leaves the hosts parameter unexplained and does not cover potential preconditions or error handling, which is a minor gap but not critical for a find 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?

Schema description coverage is 0%, so the description must explain parameters. It explicitly explains count and min_free_gb in the opening sentence, providing units and semantics. However, the hosts parameter is never mentioned, leaving an agent to guess its purpose. This is a significant gap for an otherwise well-explained tool.

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 opens with a specific verb (Find) and a precise resource: idle GPUs with at least a given free VRAM. It clearly scopes the tool to placement queries and differentiates it from siblings like list_hosts and fleet_status by stating 'Call this first for any placement question.' No ambiguity about what it does.

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 explicitly says 'Call this first for any placement question,' giving clear when-to-use guidance. It also explains the alternatives returned when nothing fits, which implies a fallback scenario. However, it does not explicitly mention when not to use it or contrast with the sibling tools beyond the 'first' directive.

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

fleet_statusA

Live GPU status of every configured host (or just the named ones), probed now over ssh; takes 1-5 s.

Returns a fleet summary line, then per host: free and busy GPU counts, free VRAM, load, and per GPU the utilisation, VRAM used and free, temperature and (with processes=true) the largest processes with user, pid, VRAM, age and command. A GPU is busy when a process holds it or it has more than five percent of its memory taken. Hosts that do not answer come back with ok=false and an error instead of raising.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostsNo
processesNo

TDQS

A4.5/5.0
Behavior5/5

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

Since no annotations are provided, the description carries full burden for behavioral disclosure. It transparently states the probing method (SSH), the expected latency (1-5 s), the failure handling (hosts returning ok=false instead of raising), and the definition of a busy GPU (process holds it or >5% memory taken). It also explains optional behaviors (processes=true) and the returned structure. This is comprehensive behavioral transparency.

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 well-structured and concise, with the primary purpose and scope in the first sentence, then a detailed but organized breakdown of the return format. Every sentence adds value: timing, error behavior, busy definition, and optional process details. There is no fluff or redundancy, and the structure supports quick comprehension.

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?

Given the tool has only two optional parameters, no annotations, and no output schema, the description is exceptionally complete. It details the summary line, per-host fields, per-GPU fields, the busy threshold, and failure handling. An agent has all necessary information to invoke the tool correctly and interpret the response, even without schema definitions for the output.

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?

Schema description coverage is 0%, so the description must compensate. It effectively explains the 'hosts' parameter via 'every configured host (or just the named ones)' and the 'processes' parameter via 'with processes=true'. While it doesn't map parameter names explicitly, the meaning is clear from context. The description adds significant semantic value beyond the bare schema, though it could be slightly more direct in naming the parameters.

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: 'Live GPU status of every configured host (or just the named ones)'. It specifies a concrete verb (get status) and resource (GPU status of hosts), and it distinguishes itself from siblings like list_hosts (which lists hosts) and find_gpus (which finds GPUs) by focusing on real-time GPU metrics. The phrasing is specific and unambiguous.

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 description provides clear operational context (e.g., 'probed now over ssh', 'takes 1-5 s') and scoping ('every configured host or just the named ones'), which implies when to use it. However, it does not explicitly mention alternatives or conditions for choosing this tool over siblings like list_hosts or find_gpus. There is no direct exclusion or routing guidance, but the context makes the usage reasonably clear.

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

list_hostsA

List the configured GPU hosts: display name and ssh target. No remote calls; use it to learn the names the other tools accept.

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, the description carries the full burden of behavioral context. It discloses that the tool makes 'no remote calls' and that it returns configured host display names and SSH targets, which covers the key behavioral aspects an agent needs to know before invoking it.

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 concise sentences with no filler. The primary purpose is front-loaded, and the second sentence adds valuable context about side-effect-free behavior and intended use.

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?

Given that there are no parameterswing, no output schema is present, and the complexity is low, the description fully covers what an agent needs to know: what the tool returnsable, that it makes no remote calls, and that its output is a reference for other tools. Nothing important is missing.

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 accruing to the schema description coverage of 100%, so there is nothing for the description to add. The baseline for zero-parameter tools is 4, and the description appropriately avoids inventing unnecessary parameter details.

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') and resource ('configured GPU hosts') and specifies the exact output content: display name and ssh target. It also clarifies its role relative to other tools by saying it provides the names other tools accept, which helps an agent understand its purpose without confusion.

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 explicitly states when to use this tool: to learn the names that other tools accept with no remote calls. It does not explicitly name sibling tools or state when not to use alternatives, so it falls short of full guidance, but the intended usage is clear.

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. 3 tool updatesv1.0.0
    • First observedfind_gpus
    • First observedfleet_status
    • First observedlist_hosts

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing configured hosts, querying live status, and finding placement for GPU jobs. No overlap or ambiguity between them.

Naming Consistency4/5

Two tools use verb_noun pattern (list_hosts, find_gpus) while fleet_status is a noun phrase, creating a minor inconsistency. However, the names are short, clear, and follow a predictable theme of fleet management.

Tool Count5/5

Three tools are ideal for a focused GPU fleet monitoring and placement server. Each tool serves a necessary and non-redundant function, and the count is well within the recommended range.

Completeness4/5

The server covers listing, status probing, and placement suggestion, which are core to its stated purpose. Minor gaps exist (e.g., no tool to modify host configuration or trigger actions), but for monitoring and placement discovery, it is complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to query Azure HPC/AI Kubernetes clusters for GPU node information and InfiniBand topology details through kubectl commands. Provides tools to list GPU pool nodes with their status and retrieve network topology labels for high-performance computing workloads.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    An MCP server for monitoring and managing multi-cluster Slurm GPU jobs, enabling AI agents to execute commands, check allocations, and explore logs across HPC clusters.
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to orchestrate a heterogeneous machine fleet via SSH, with unified command execution, file transfer, and dispatch of coding agents across platforms.
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables agents to manage Lambda Cloud GPU instances over SSH, including executing commands, running background jobs, transferring files, and terminating instances, while also exposing UI-configured capacity alerts and auto-provisioning settings.
    -