Skip to main content
Glama
gethshap

Windows Telnet MCP

by gethshap

Windows Telnet MCP

一个只在 Windows 上运行的本地 MCP Server,用来启动和实时操作真正可见的 Windows telnet.exe 窗口。

它不是把 Telnet 放进匿名管道或 ConPTY 的无头封装:每个会话都由系统 conhost.exe 承载,用户能在桌面上看到窗口、手工输入,并与 MCP 交替接管同一个会话。MCP 通过 Windows Console API 读取屏幕缓冲区、写入键盘事件。

环境要求

  • Windows 10/11 或带桌面会话的 Windows Server

  • Node.js 22 或更高版本

  • PowerShell 7 (pwsh.exe)

  • Windows Telnet Client 可选功能

本机尚未安装 Telnet 时,在“管理员”终端中执行:

dism /online /Enable-Feature /FeatureName:TelnetClient

然后安装依赖:

cd D:\work\windows-telnet-mcp
npm install

Related MCP server: Terminal MCP

配置 MCP 客户端

通用 stdio 配置:

{
  "mcpServers": {
    "windows-telnet": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": ["D:\\work\\windows-telnet-mcp\\src\\index.js"]
    }
  }
}

如果 PowerShell 7 不在默认位置,可加环境变量:

{
  "env": {
    "TELNET_MCP_PWSH": "C:\\Program Files\\PowerShell\\7\\pwsh.exe"
  }
}

VS Code 可把同一项放到 .vscode/mcp.jsonservers 下,并补上 "type": "stdio"

提供的工具

工具

作用

telnet_check

检查 Windows、Telnet、conhost 和 PowerShell 依赖

telnet_start

打开可见 Telnet 窗口;可直接连接主机,也可停在 Microsoft Telnet>

telnet_list

列出当前 MCP 进程创建的会话

telnet_status

查询进程和窗口状态

telnet_read

读取用户当前可见区域或最近的屏幕缓冲区

telnet_send

以控制台键盘事件输入文本,可选择追加 Enter

telnet_key

输入 Enter、方向键、CTRL+]CTRL+C 等按键

telnet_wait_for_text

等待提示符或其他文本出现

telnet_focus

恢复并前置真实 Telnet 窗口

telnet_close

优雅退出;必要时可强制关闭

建议调用顺序:

  1. telnet_check

  2. telnet_start

  3. telnet_wait_for_texttelnet_read

  4. telnet_send / telnet_key

  5. 重复读写

  6. telnet_close

telnet_start 不传 host 时不会建立网络连接,适合先确认窗口和 Telnet 命令提示符。传入 host 后会发起真实的出站连接。

实现边界

  • MCP Server 的 stdout 只用于 JSON-RPC;Telnet 不继承该管道。

  • 每个会话有独立 worker,因此可以并行打开多个 Telnet 窗口。

  • worker 退出不会主动关掉 Telnet,用户仍可手工继续操作;使用 telnet_close 才会关闭会话。

  • 读取的是字符屏幕缓冲区,不是 OCR,速度快且不会受窗口遮挡影响。

  • 目前不抓取像素截图,也不支持鼠标事件;Windows Telnet 本身是字符终端,这两项不是必要能力。

  • Telnet 协议通常是明文的。不要通过不可信网络发送密码或敏感数据;有条件时应使用 SSH。

验证

npm run check

集成测试会短暂打开一个真正可见的 cmd.exe 控制台,验证启动、屏幕读取、键盘输入和关闭的完整链路,但不会连接网络。即使机器未安装 Telnet,该测试也能执行。

文件结构

  • src/index.js:MCP 工具、会话管理和 MCP stdio transport

  • src/windows-console-worker.ps1:Win32 Console API、可见进程启动及实时读写

  • test/mcp.test.js:MCP 握手、工具枚举和只读检查

  • test/worker.test.js:真实可见控制台闭环测试

  • docs/design.md:方案研究与取舍

Available Tools

10 tools
telnet_checkCheck Windows Telnet prerequisitesA
Read-only

Checks whether this machine can open and control a visible Windows Telnet client.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

The readOnlyHint annotation already signals no mutation, and the description adds useful context: the check is local, capability-oriented, and specific to a visible Windows Telnet client. No contradictory behavioral claims are present.

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 delivers the complete purpose without filler. The key scoping information is front-loaded and the title reinforces the meaning.

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, read-only capability check, the description is nearly sufficient. 'Checks whether' implies a boolean or status result, though an explicit return contract would be marginally clearer given the absence of an output schema.

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 covers all relevant input. With no parameters, the description has no semantic burden for arguments.

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

Purpose4/5

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

The description uses a specific verb ('checks whether') and a specific resource ('this machine can open and control a visible Windows Telnet client'). It is clearly not a status/read/send operation, though it does not explicitly name a sibling to distinguish itself from.

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 title says 'prerequisites' and the description implies this should be used before attempting to open/control a Telnet client. However, there is no explicit statement of when to use it versus telnet_status or telnet_start, nor any exclusions.

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

telnet_closeClose Windows Telnet sessionA
Destructive

Closes the visible Telnet session. Graceful mode sends CTRL+], then quit. Force mode closes or terminates the process if necessary.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
sessionIdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already signal destructive and non-read-only behavior. The description adds concrete behavioral detail: graceful mode performs CTRL+] then quit, and force mode terminates the process if needed. This goes beyond what annotations alone provide and helps the agent anticipate side effects and failure fallbacks.

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 tight sentences, no fluff. The main purpose is front-loaded and the two modes are summarized efficiently. Every clause contributes 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?

For a two-parameter close operation with no output schema, the description is largely sufficient. It explains the key behavioral choice via force and relies on the destructive annotation for safety. The only notable gap is that 'sessionId' semantics are not explicitly connected to the close action, but this is relatively minor given the schema and sibling context.

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 compensate. It explains the 'force' boolean semantics via graceful vs force mode, which adds real value. However, it does not explicitly describe 'sessionId' beyond the schema's type/pattern, leaving its role to be inferred from the tool name and context.

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 and resource: 'Closes the visible Telnet session.' It is distinct from sibling tools (read, send, start, list) and clarifies two execution modes. The term 'visible' adds useful scoping about which session is affected.

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 implies when to use the tool (to end a telnet session) and even gives guidance on choosing graceful vs force mode. However, it does not explicitly compare against any sibling tools or mention when not to use it. The mode explanation provides usable context but stops short of full routing guidance.

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

telnet_focusFocus visible Telnet windowB

Restores and brings the real conhost.exe Telnet window to the foreground.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYes

TDQS

B3.4/5.0
Behavior3/5

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

The description adds behavioral context beyond the annotations: it clarifies that the tool affects the real conhost.exe window and brings it to the foreground, and annotations indicate it is neither read-only nor destructive. However, it does not mention side effects such as stealing focus, potential failure conditions, or whether it can reveal a minimized or hidden window.

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 clear, front-loaded sentence with no filler. It communicates the operation and target efficiently.

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 very simple tool with one parameter and no output schema, the purpose is stated clearly enough to attempt a call. Still, the description lacks usage conditions, parameter mapping, and behavioral side effects, so it is only minimally complete.

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?

Schema description coverage is 0%, and the description does not mention sessionId or explain how it identifies the target Telnet session. The parameter name and UUID format make the meaning partially inferable, but the description itself provides no compensating semantic guidance.

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 exactly what the tool does: 'Restores and brings the real conhost.exe Telnet window to the foreground.' This distinguishes it clearly from sibling tools like telnet_start, telnet_close, and telnet_read by targeting window focus rather than session lifecycle or I/O.

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 explicit guidance is given about when to use this tool versus alternatives, when it is appropriate, or what prerequisites exist (e.g., the session must already be started and its window must exist). The usage context must be inferred entirely from the tool name and sibling list.

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

telnet_keyPress a key in Windows TelnetB

Sends one named key to the visible Telnet console. CTRL+] enters the Microsoft Telnet command prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
sessionIdYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already signal readOnlyHint=false and destructiveHint=false, and the description adds context by specifying that the key goes to the visible Telnet console and that CTRL+] enters the Microsoft Telnet command prompt. This adds useful behavior beyond the annotations, though it does not disclose further side effects or state changes from key presses.

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 the core action front-loaded. Every word contributes meaning, and the CTRL+] note is a valuable short addition without bloat.

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 two-parameter key-sending tool, the description is mostly sufficient, but it lacks usage guidance, return behavior, and any mention of whether the console must already be visible or focused. The schema covers the key enum and sessionId format, but the description does not fully compensate for the missing parameter explanations.

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?

Schema description coverage is 0%, and the description does not explain sessionId or enumerate key meanings. The only slight addition is 'named key' and the CTRL+] behavior note, but most parameter semantics are left entirely to the schema enum and property names.

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

Purpose4/5

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

The description states a clear action ('Sends one named key') and a target ('the visible Telnet console'), so an agent can tell this is a keystroke-injection tool. It is not a tautology of the title, but it does not explicitly differentiate from sibling tools like telnet_send or telnet_focus.

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 gives no explicit guidance on when to use this tool versus alternatives such as telnet_send or telnet_wait_for_text. There is no mention of prerequisites like a visible or focused console, nor any exclusion criteria, leaving the agent to infer usage context.

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

telnet_listList Telnet sessionsB
Read-only

Lists visible Windows Telnet sessions started by this MCP server process.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already covers the safety profile. The description adds useful scoping ('visible... started by this MCP server process') but leaves the term 'visible' undefined and does not disclose return format or pagination behavior. This adds context beyond annotations but not rich behavioral detail.

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 with no filler. Every word adds meaning: 'visible', 'Windows Telnet sessions', and 'started by this MCP server process' all contribute to the tool's purpose and scope.

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 no-parameter, read-only list tool, the description is mostly adequate: it states what is listed and the process scope. However, with no output schema, the description should hint at what the returned session list contains (e.g., IDs, names), and the ambiguous 'visible' could confuse an agent. This is a minor but real 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 zero parameters, so the input schema is complete and there is nothing for the description to clarify. Baseline of 4 is appropriate; no parameter documentation is needed and the description correctly avoids inventing parameter details.

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

Purpose4/5

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

The description uses a specific verb ('Lists') and resource ('visible Windows Telnet sessions started by this MCP server process'), which clearly defines scope. It does not explicitly name a sibling tool for differentiation, but the 'started by this MCP server process' qualifier distinguishes it from broader session queries.

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?

There is no guidance on when to use this tool versus alternatives like telnet_status or telnet_check. The description implies it is for enumerating sessions, but it does not state exclusions or conditions that would route an agent to a sibling tool.

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

telnet_readRead visible Telnet screenA
Read-only

Reads text from the real Windows console screen buffer. Use mode=visible for exactly what the user can see, or mode=tail for recent buffer rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNovisible
rowsNo
sessionIdYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description agrees by saying it 'Reads text'. It adds useful behavioral detail: the source is the real Windows console screen buffer, and the two modes return different scopes. It does not discuss edge cases, but the read-only annotation lowers the burden.

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 sentences with no filler: it states the action, the source, and the meaningful mode distinction. The most important information is front-loaded in the first clause.

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 read-only tool with a simple parameter set and no output schema, the description gives enough to understand what is read, where it is read from, and how mode affects the result. It could be more explicit about how 'rows' behaves in tail mode, but overall the agent can correctly select and invoke the 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?

With 0% schema description coverage, the description compensates for the critical mode parameter by defining 'visible' and 'tail'. However, 'rows' is only implied by 'recent buffer rows' and sessionId is left entirely to its name and schema format, so parameter coverage is incomplete.

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 ('Reads text') on a clear resource ('the real Windows console screen buffer') and distinguishes the tool from sibling send/key/wait operations by framing it as a non-mutating read. The mode options 'visible' and 'tail' further clarify what the tool returns.

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?

It explicitly tells the agent when to use mode=visible ('exactly what the user can see') versus mode=tail ('recent buffer rows'). It does not enumerate when not to use this tool compared with sibling read/check tools, but the mode guidance provides clear context for the main decision.

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

telnet_sendType into Windows TelnetA

Injects text as real Windows console keyboard events into the visible Telnet session. Set appendEnter=true to submit the line. The text may be transmitted to the remote Telnet server.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
sessionIdYes
appendEnterNo

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already signal a non-read-only, open-world operation, and the description adds useful behavioral context: it injects real keyboard events, targets the visible session, and that text may reach the remote Telnet server. This goes beyond the annotations without contradicting them.

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 sentences with no filler. The primary action is front-loaded, and the appendEnter behavior is stated succinctly in the second sentence.

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 three-parameter action with no output schema, the description covers the core behavior, the key flag, and the external transmission risk. It is mostly complete, though it could mention what happens on success or failure.

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 compensate. It explains text as the injected payload and appendEnter as the line-submit flag, but sessionId is only implicit from its name and schema pattern. Most parameters get some semantic clarity, but not all are explicitly mapped.

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

Purpose4/5

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

The description clearly states that the tool injects text as Windows console keyboard events into a visible Telnet session, which is a specific verb and resource. It is clear in what it does, though it does not explicitly differentiate itself from the sibling tool telnet_key.

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 gives one concrete usage instruction: 'Set appendEnter=true to submit the line.' However, it does not explicitly say when to use this tool versus alternatives like telnet_key, nor does it mention any exclusions or prerequisites.

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

telnet_startStart visible Windows TelnetA

Opens a real, user-visible conhost.exe window running the built-in Windows telnet.exe. If host is supplied, this initiates an outbound Telnet connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoHost name or IP address. Omit to open the Microsoft Telnet prompt without connecting.
portNo
titleNoMCP Windows Telnet
logFileNoOptional client-side Telnet log path.
usernameNo
autoLoginNo
terminalTypeNo
escapeCharacterNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag readOnlyHint=false and openWorldHint=true, so the agent knows this is an actuating, externally-facing operation. The description adds genuinely useful behavioral context beyond the annotations: it opens a real, user-visible conhost.exe window and uses the built-in telnet.exe, which has visible UI side effects. It does not mention whether the call blocks or returns a session handle, but the visible-window and outbound-connection details are meaningful.

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 efficient sentences with no filler. The first sentence front-loads the essential visible-window behavior, and the second adds the only conditional behavior worth calling out. It earns full credit for structure even though other dimensions have gaps.

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

Completeness2/5

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

Given 8 parameters, no output schema, and an open-world annotation, the description is not complete enough for confident invocation. It explains host handling but leaves credentials-related fields (username/autoLogin), port defaults, terminalType, escapeCharacter, and logFile mostly unexplained, several of which also lack schema descriptions. The agent is also left guessing about return behavior and session lifecycle.

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?

Schema description coverage is only 25%, with six of eight parameters undecorated. The description mostly restates the host behavior already present in the schema and does not explain port defaults, the meaning of autoLogin, terminalType choices, escapeCharacter semantics, or title/logFile behavior. With low schema coverage, the description needed to compensate but largely does not.

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 verb ('Opens') and resource ('conhost.exe window running the built-in Windows telnet.exe'), making the tool's action unmistakable. It also reveals the host-dependent outbound connection behavior, which clearly separates it from the sibling control/interaction tools.

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 gives conditional usage context: provide a host to connect, omit it to get the Telnet prompt. However, it never explicitly explains when to choose this tool over telnet_send, telnet_focus, telnet_close, or the other siblings, nor does it mention prerequisites like the Windows Telnet client being enabled.

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

telnet_statusGet Telnet session statusB
Read-only

Checks whether a visible Windows Telnet process is still running.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYes

TDQS

B3.1/5.0
Behavior3/5

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

The readOnlyHint annotation already covers safety, and the description adds a useful scoping detail: it checks a visible Windows process rather than a generic session. However, it does not disclose expected return values, behavior for an invalid or unknown sessionId, or whether the check is instantaneous.

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 with no filler; every word contributes meaning and the key scope qualifier ('visible') is included.

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 read-only check, the description conveys the high-level behavior, but there is no output schema and no explicit description of the result format. The agent must infer that the tool returns a running/not-running indication and cannot anticipate error behavior.

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 never mentions sessionId or how it relates to the process being checked. Since schema description coverage is 0%, the description was expected to compensate, but the schema's self-explanatory UUID field does most of the work.

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

Purpose4/5

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

Description names a specific verb ('Checks whether ... is still running') and a concrete resource (visible Windows Telnet process), so the tool's core purpose is clear. It doesn't explicitly contrast with the sibling telnet_check, but the status/check wording largely differentiates it.

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 when-to-use or when-not-to-use guidance is given. With nine sibling tools, an agent gets no explicit hint about when to call telnet_status instead of telnet_check, telnet_list, or telnet_read; suitability is only implied by the name.

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

telnet_wait_for_textWait for Telnet screen textB
Read-only

Polls the real console screen until literal text appears or the timeout expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNo
textYes
pollMsNo
sessionIdYes
timeoutMsNo
caseSensitiveNo

TDQS

B3.2/5.0
Behavior4/5

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

The annotations already mark it read-only and open-world; the description adds meaningful behavior beyond that: it polls the real console, performs literal matching, and resolves on timeout. This is useful context for an agent deciding whether to call it and what to expect.

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 filler. Every phrase ('real console screen', 'literal text', 'timeout expires') adds a distinct piece of information.

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

Completeness2/5

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

Given six parameters, zero schema descriptions, and no output schema, the description is too sparse to fully support correct invocation. It omits the meaning of rows and pollMs, the case-sensitivity default, and what happens on timeout.

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?

With 0% schema description coverage, the description needed to compensate, but it only loosely covers 'text' and 'timeout'. It does not explain sessionId, rows, pollMs, or caseSensitive beyond what their names and defaults suggest, leaving ambiguity around rows and polling behavior.

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

Purpose4/5

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

The description uses a specific verb and resource ('Polls the real console screen') and clarifies that the operation is a blocking wait for literal text or timeout. It is clear on its own, though it does not explicitly contrast itself with siblings like telnet_check or telnet_read.

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 conveys that the tool waits/polls, but it gives no guidance on when to choose this tool over the sibling telnet_check, telnet_read, or telnet_send tools, and no exclusions or alternatives are mentioned.

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

TDQS

A3.7/5.0
Disambiguation4/5

Most tools are clearly distinct, but a few pairs overlap in intent: telnet_status and telnet_check both sound like health checks, and telnet_key and telnet_send both inject input. The descriptions resolve the ambiguity, but agents may need to read carefully to choose correctly.

Naming Consistency4/5

All tools share the consistent telnet_ prefix, and most use a clear verb-like pattern such as start, close, read, send, and list. A couple of names are nouns rather than actions—telnet_status and telnet_key—which is a minor deviation from the otherwise predictable convention.

Tool Count5/5

Ten tools is a well-scoped size for this server's purpose. Each tool covers a meaningful aspect of starting, interacting with, reading from, and closing a visible Windows Telnet session without unnecessary redundancy.

Completeness5/5

The tool surface covers the full lifecycle: start, list, focus, read, wait for output, send input, send special keys, close, and verify both process status and host capability. No obvious operational gaps remain for controlling a visible Telnet session.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables programmatic control over tmux terminal sessions for SSH access, command execution, and terminal automation. Supports creating sessions, sending commands, capturing output, and managing multiple panes for interactive debugging and monitoring.
    8
    20
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables management of visible, interactive terminal sessions across platforms (macOS, Windows, Linux, WSL). Supports creating, executing commands, capturing output, and managing multiple terminal windows simultaneously.
    5
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables spawning, interacting with, and capturing screen output from terminal-based programs for debugging PTY/TTY/TUI applications.
    15
    7
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gethshap/windows-telnet-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server