mnvitop-mcp
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., "@mnvitop-mcpfind me a free GPU on any host"
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.
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.

Install
uv tool install mnvitopYou 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 pro6000Each 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 loggingmnvitop --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 toolsfind_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).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| hosts | No | ||
| min_free_gb | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hosts | No | ||
| processes | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v1.0.0- First observed
find_gpus - First observed
fleet_status - First observed
list_hosts
TDQS
Scored across 3 tools
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.
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.
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.
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
Related MCP Connectors
On-demand GPU nodes for agents: create nodes, run commands, and submit jobs, billed by the minute.
Live GPU rental market: 2,500+ offers across a dozen provider feeds. History, watches, limit orders.
Read GPU instances, types, images, filesystems and firewall rules; launch and terminate instances.
Massed Compute MCP — GPU inventory, VM lifecycle, billing, SSH keys, and setup recipes.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- FlicenseNot gradedqualityAmaintenanceAn 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-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to orchestrate a heterogeneous machine fleet via SSH, with unified command execution, file transfer, and dispatch of coding agents across platforms.1Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables 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.-