netassist
netassist is a read-only, Windows-only MCP server for diagnosing network and proxy problems your agent would otherwise guess at.
net_github_status— check whether github.com is reachable right now via DNS, TCP 443, and HTTPS status code with latency.net_proxy_status— inspect the Windows registry system proxy and proxy env vars, distinguishing system proxy vs. TUN mode vs. no proxy, and flag disabled-but-leftover values.net_proxy_probe— probe local proxy ports for TCP reachability (defaults 10808, 10809, 7890, 7897, 8888, 1080; overridable viaports).net_diag— run a full chain diagnosis for any host (requiredhost, optionalpathandport): DNS → TCP → HTTP(S) status.net_hosts_check— list GitHub-related entries pinned in the Windows hosts file, which can bypass a proxy and go stale.net_doctor— run the whole preflight (proxy, ports, TUN adapters, GitHub reachability, hosts conflicts) and get concrete suggested fixes.Cross-client — works over plain stdio in any MCP client (Claude Code, Cursor, Claude Desktop, DeepSeek Harness) via npx, GitHub, checkout, or container.
Safe by design — read-only: it reports and suggests, never edits config, proxy, or hosts; inputs cross the PowerShell boundary as Base64.
Provides network diagnostics for GitHub, including reachability checks (DNS, TCP, HTTPS status and latency), detection of hosts file entries that may affect GitHub access, and concrete suggestions for resolving connectivity issues.
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., "@netassistWhy can't I reach GitHub? Check my proxy, DNS, and hosts file."
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.
mcp-netassist
Network and proxy diagnostics your agent can run itself — in any MCP client: Claude Code, Cursor, Claude Desktop or DSH.
When you need this
Your MCP client cannot reach GitHub or npm and you want the agent to find out why
You want the same diagnostics in every editor instead of one plugin per host
You are tired of the agent guessing at network problems
The score badge says it plainly: this server is listed on Glama, claimed by its maintainer, with its tool definitions rated A. Requires Windows — see Platform below.
Works with any MCP client — Claude Code, Claude Desktop, Cursor, Reasonix, CodeWhale, DeepSeek Harness. Point your agent at it and ask "is GitHub reachable?", "why is my proxy not working?", "what should I change?" — instead of guessing.
Built for the China-network reality: flaky GitHub, proxies that are half-configured, hosts files that fight the proxy, and TUN mode that silently overrides the system proxy.
Windows-only for now: the checks call PowerShell. The protocol layer is portable; a POSIX backend is the obvious next step.
Feedback
Installs are visible in the download counts; whether this helps is not. If you use it, one line about the actual task is worth more than a star — particularly if it did not work, which is the case that never gets reported:
what you were trying to do
whether it did it
what was missing or wrong
Tell me in an issue — or if something is already broken, just open a normal bug report.
Related MCP server: connectivity-diagnostics
Platform
Windows, Linux and macOS. The checks use the platform's own mechanism:
Windows | Linux / macOS | |
DNS / TCP / HTTPS | PowerShell ( | Node |
Proxy configuration | registry |
|
hosts file |
|
|
TUN adapters |
|
|
The wording follows the platform too: there is no system-wide proxy switch outside Windows, so the report says "proxy env vars" rather than inventing a setting that does not exist.
Set MCP_NETASSIST_PLATFORM=posix or win32 to force a branch — the test suite uses it to
exercise both implementations on the same machine.
Tools
Tool | Answers |
| Is github.com reachable right now? DNS, TCP 443, HTTPS status + latency |
| What proxy is the system using? Registry settings + env vars, including a disabled-but-leftover value |
| Which local proxy ports are alive? (defaults: 10808, 10809, 7890, 7897, 8888, 1080) |
| Full chain for any host: DNS → TCP → HTTP status |
| Which GitHub entries are pinned in the hosts file? |
| Ask AliDNS, DNSPod, Cloudflare and Google the same question and compare — is the system resolver returning a stale answer? |
| Is the npm registry npm is configured to use actually reachable? Checks that one and the official one. |
| The whole preflight — proxy, ports, TUN, GitHub, hosts, DNS-server agreement and npm registry — with concrete suggestions about what to change |
net_doctor is the point of this server. Other tools tell you what is wrong; it tells you what to do about it:
✔ System proxy: 127.0.0.1:10808
✔ Proxy port 10808 responding
✔ GitHub reachable (HTTP 200, 312 ms)
⚠ TUN-style adapter detected: clash
Under TUN mode the system proxy setting is usually ignored — the two can fight each other.
✔ hosts file clean (no GitHub entries)
Suggested fix:
- Under TUN mode, clear the Windows system proxy (or exclude github.com) so traffic is not double-handled.Setup
Claude Desktop / Cursor / any JSON-configured client:
{
"mcpServers": {
"netassist": {
"command": "npx",
"args": ["-y", "github:Edge-Echo/mcp-netassist"]
}
}
}The built lib/ ships in the repository, so the GitHub form needs no build step.
From npm:
{
"mcpServers": {
"netassist": {
"command": "npx",
"args": ["-y", "mcp-netassist"]
}
}
}Claude Code:
claude mcp add netassist -- npx -y github:Edge-Echo/mcp-netassistDeepSeek Harness (same diagnostics as a native plugin, plus net_doctor as an agent tool):
dsh plugin --profile web add dsh-netassistFrom a checkout:
{
"mcpServers": {
"netassist": { "command": "node", "args": ["/path/to/mcp-netassist/lib/server.js"] }
}
}In a container:
docker build -t mcp-netassist .
docker run -i --rm mcp-netassistThe image is also what directory listings use for introspection checks. Inside a Linux container the server starts and answers
initialize/tools/listnormally; the tools themselves need Windows PowerShell, and say so when it is missing.
Design notes
Read-only. No tool writes config, changes the proxy, or edits the hosts file. It reports and suggests; you decide.
Injection-safe. Every user input crosses the PowerShell boundary as Base64, never as interpolated text.
No hidden state. Each call runs its own checks; nothing is cached between calls, so results are always current.
Two dependencies (
@modelcontextprotocol/sdk,zod), no native modules.
Related
Part of the dsh-toolkit family — the same diagnostics also ship as a DeepSeek Harness plugin (dsh-netassist), which adds net_doctor as an agent tool.
License
MIT
Available Tools
8 toolsnet_diagA
Full reachability diagnosis for any host: DNS resolution, TCP connect test, then an HTTP(S) status check.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Hostname or IP address | |
| path | No | URL path for the HTTP check (default /) | |
| port | No | TCP port to test (default 443) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It does disclose the sequence of operations (DNS, TCP, HTTP(S)), but omits whether the tool is read-only, how failures or timeouts are handled, and whether any state changes occur. This is partial but not complete 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 a single, front-loaded sentence with a colon followed by a compact, ordered list of checks. Every word earns its place; no redundancy or fluff.
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 absence of an output schema and annotations, the description gives a clear high-level behavior but does not cover return format, error behavior, or how this tool relates to sibling diagnostics. For a low-complexity tool with a fully documented parameter schema, this is a moderate gap.
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 100%: host, path, and port are each described with types and defaults. The tool description adds no parameter-specific meaning beyond what the schema already states, so the baseline of 3 applies.
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 a specific verb and resource: 'Full reachability diagnosis for any host', followed by a concrete sequence of checks (DNS, TCP, HTTP(S)). This distinguishes it from sibling tools focused on specific services like GitHub or proxy status.
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?
It provides clear context: use this when you need a comprehensive reachability diagnosis of any host. However, it does not explicitly reference sibling tools or state when not to use it, so it lacks exclusions and explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_dns_compareA
Ask AliDNS, DNSPod, Cloudflare and Google the same question and compare the answers. A poisoned or stale system resolver is invisible until another server disagrees — which is the usual reason a host "resolves but does not work".
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Hostname to resolve through each DNS server |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It does disclose the meaningful behavior: four named third-party resolvers are contacted, which implies external network egress and no local state change, and it frames the result as a comparison that surfaces disagreement. It says nothing about latency, timeout/failure semantics when one resolver is unreachable, or what the comparison output looks like, which matters for a tool with no output schema.
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?
Two sentences, zero filler, and the operational summary is front-loaded before the explanatory rationale. Every clause earns its place.
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?
For a one-parameter read-only lookup with no output schema, the description covers what it queries, against whom, and why. The remaining gap is what the comparison actually returns (per-server answers? agreement flag? errors per resolver?), which would let the agent use the result without guessing.
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 coverage is 100% for the single required 'host' parameter, so the schema already documents it. The description reinforces that the same question (hostname) is asked of every resolver, but adds no format or edge-case detail beyond that.
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?
States a specific verb+resource: query the same name against AliDNS, DNSPod, Cloudflare and Google and compare the answers. That is clearly distinct from the sibling tools (proxy status, hosts check, registry check), though it never explicitly names a sibling as the alternative for a general 'network is broken' investigation. The purpose is unambiguous on its own terms.
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 second sentence supplies a concrete trigger condition — 'a host resolves but does not work' — which tells the agent exactly when this tool is the right call versus generic diagnostics. It stops short of stating exclusions or naming the sibling tools to use instead for other failure modes, so it is clear context without alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_doctorA
Run the full network preflight (system proxy, proxy ports, TUN adapters, GitHub reachability, hosts conflicts) and report each finding with concrete suggestions about what to change. Use this before blaming the network for a failure.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses what the tool does (runs a comprehensive diagnostic across five categories) and what it produces ('report each finding with concrete suggestions about what to change'). The diagnostic/preflight framing strongly implies a read-only, non-mutating operation. It does not state permission requirements or response format, but for a zero-parameter diagnostic tool the disclosed scope and output behavior are solid.
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?
Two sentences with zero waste. The first sentence front-loads the full scope and output behavior; the second delivers the usage guidance. Every word earns its place and nothing is redundant with the schema, which is empty. This is model concision.
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?
For a zero-parameter diagnostic with no output schema, the description covers the essential ground: the full check scope, the reporting behavior with suggestions, and the timing of use. An agent can decide to call it and know what to expect. It could marginally improve by routing to specific siblings for targeted checks, but nothing an agent needs to invoke it correctly 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 and an empty schema, so per the rubric the baseline is 4. There is nothing for the description to add beyond what the schema provides, and it correctly requires no parameter explanation. This is the appropriate ceiling for a parameterless 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 uses a specific verb ('Run') and a clearly scoped resource ('the full network preflight'), then enumerates the five check categories (system proxy, proxy ports, TUN adapters, GitHub reachability, hosts conflicts). The 'full' designation plus the enumerated scope clearly distinguishes it from the targeted sibling tools like net_proxy_status and net_hosts_check, which each cover only one slice. An agent can tell exactly what this does and how it differs from its siblings without opening any schema.
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 gives an explicit usage directive: 'Use this before blaming the network for a failure.' This tells the agent when to invoke it as the first diagnostic step. It stops short of naming alternatives or explicit when-not-to-use conditions, but the 'full preflight' framing plus the enumerated sibling tools makes the intended decision point reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_github_statusA
Check whether github.com is reachable right now: DNS resolution, TCP 443, and the HTTPS status code with round-trip time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It clearly lists the three network checks performed and includes round-trip time, which is a helpful behavior detail. It does not mention failure modes, timeouts, or side effects, but for a read-only reachability probe the disclosed behavior is adequate.
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?
A single, well-structured sentence front-loads the primary purpose and appends the specific checks. Every word adds value; there is no fluff or repetition.
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?
For a zero-parameter, read-only network probe, the description provides all essential information an agent needs to decide whether to call it. The lack of an output schema is not a critical gap here because the tool's behavior is fully implied by the described checks, though a note on the response format would make it marginally more complete.
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, so the baseline is 4. The description correctly focuses on the tool's behavior rather than inventing parameter details. The empty schema needs no further explanation.
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 names a specific verb ('Check'), a specific resource ('github.com'), and the exact scope ('DNS resolution, TCP 443, and the HTTPS status code with round-trip time'). It is immediately distinguishable from sibling tools, which target proxy/diagnostic/network checks rather than a single host.
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 gives clear context: use this when you need to know whether github.com is reachable right now. It does not explicitly name alternatives or exclusions, but the specificity of the target (github.com) makes the intended use unambiguous even without referencing siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_hosts_checkA
Scan the Windows hosts file for GitHub-related entries. Pinned entries bypass a proxy and can go stale — this lists what is pinned.
| 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 transparency burden. The verbs 'scan' and 'lists' clearly imply a read-only, non-destructive operation, and the explanation about proxy bypass adds behavioral insight. It doesn't explicitly state 'does not modify the file,' but that is strongly implied.
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?
Two sentences with no filler. The action is front-loaded, followed by the reason the tool exists. Every clause earns its place.
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?
For a zero-parameter, read-only tool with no output schema, the description explains the purpose, the behavior, and the result ('this lists what is pinned'). It could mention edge cases like missing file permissions, but overall it gives enough for an agent to invoke it correctly.
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, so there is nothing to clarify. The baseline of 4 applies because the description correctly omits parameter details that don't exist.
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 names a specific action ('Scan'), a concrete resource ('the Windows hosts file'), and a clear scope ('GitHub-related entries'). This cleanly separates it from the siblings, which deal with GitHub status and proxy state rather than host file pinning.
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?
It gives context for when the tool is relevant — pinned entries bypass the proxy and can go stale — so an agent understands why to run it. However, it doesn't explicitly name alternatives or state when not to use it, stopping short of the strongest guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_proxy_probeB
Probe local proxy ports for TCP reachability. Defaults to the common ports (10808, 10809, 7890, 7897, 8888, 1080); pass ports to override.
| Name | Required | Description | Default |
|---|---|---|---|
| ports | No | Ports to probe (default 10808, 10809, 7890, 7897, 8888, 1080) |
TDQS
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. It mentions default ports and override behavior, but that is already in the schema, and it does not disclose side effects, permissions, or what the output of the probe looks like.
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 a single, efficiently structured sentence that front-loads the core purpose before providing the default behavior. Every word earns its place, and there is no unnecessary detail.
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?
The description explains what the tool does and its defaults, but omits the return value or output semantics, which matters given there is no output schema. It also does not clarify the relationship to the closely named sibling `net_proxy_status`, leaving the agent to infer competition.
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 only parameter, `ports`, is fully described in the schema with a default list, giving 100% schema coverage. The description adds the nuance that passing `ports` overrides the defaults, but this is minimal added value beyond the schema.
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 states a clear verb (probe), resource (local proxy ports), and purpose (TCP reachability), making the tool's function distinct. It does not explicitly contrast with sibling tools like net_proxy_status, but the mention of local ports and defaults narrows its scope.
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?
No guidance is given on when to use this tool versus alternatives like net_proxy_status or net_diag. The description implies usage for checking local proxy port reachability but does not state when not to use it or provide any selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_proxy_statusA
Show the proxy configuration from HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY. There is no system-wide proxy switch on Linux or macOS, so the environment variables are the whole story.
| 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 must carry behavioral disclosure. 'Show' implies a read-only inspection and the second sentence usefully clarifies that there is no system-wide proxy switch on Linux or macOS, but it does not explicitly state side effects, permissions, or output shape.
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 tight sentences with no wasted language. The core behavior is front-loaded and the environmental caveat follows immediately.
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?
For a zero-parameter, read-only status tool with no output schema, the description identifies the exact configuration sources and explains why environment variables are authoritative on Linux and macOS. It does not describe the return format, but the tool's simplicity and source specification make the definition largely complete.
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 takes zero parameters, so there are no parameter semantics to explain. The schema is empty and the description does not need to compensate for undocumented inputs.
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, 'Show', and a specific resource, 'proxy configuration', and scopes it to HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY. It is clear what the tool does, though it does not explicitly differentiate itself from the sibling net_proxy_probe.
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 explains the source of the proxy configuration but gives no explicit guidance on when to use this tool versus alternatives such as net_proxy_probe. It notes the Linux/macOS environment-variable constraint, but that is contextual scope rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
net_registry_checkA
Check the npm registry npm is actually configured to use (environment, then ~/.npmrc, then the official default), plus the official one for comparison: TCP reachability and HTTP status. "npm install failed" usually starts here, not at GitHub.
| 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 must carry the whole burden; it does disclose the config resolution order and that both TCP reachability and HTTP status are exercised, which tells the agent this performs live network I/O rather than a local read. It stops short of stating side-effect freedom, timeouts, or how failures versus unreachable hosts are reported.
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?
Two sentences, with the target resource and resolution order front-loaded and the triage hint last. Minor friction from the dense parenthetical and the repeated word in "npm registry npm is actually configured to use," but nothing is wasted.
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?
For a zero-argument network diagnostic with no annotations and no output schema, the description covers what is inspected, how the registry is resolved, and when to reach for it. It leaves the shape of the result (per-endpoint statuses, how the two registries are compared) undescribed, which is the main remaining gap.
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 takes zero parameters, so there is no parameter semantics to explain and the baseline is 4. The description correctly implies no arguments are needed, since everything is derived from environment and config files.
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?
Names a specific verb (check) and a precise resource: the npm registry actually in effect, resolved in a stated precedence order (environment → ~/.npmrc → official default), plus TCP and HTTP probing of both. This is clearly distinct from the sibling diagnostics (net_proxy_status, net_github_status, net_dns_compare), which cover other layers.
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 closing line "npm install failed usually starts here, not at GitHub" gives a concrete trigger condition and explicitly steers the agent away from the GitHub-oriented sibling. It does not say when the proxy, DNS, or doctor siblings would be the better first call, so routing among the rest of the family is left implicit.
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.
2 tool updates
v0.4.0- Added
net_dns_compare - Added
net_registry_check
6 tool updates
v0.1.0- First observed
net_diag - First observed
net_doctor - First observed
net_github_status - First observed
net_hosts_check - First observed
net_proxy_probe - First observed
net_proxy_status
TDQS
Scored across 8 tools
The tools are highly granular and specialized, making them largely distinct. However, there is a minor functional overlap between the general diagnostic tools (net_diag) and the specific, curated workflows (net_doctor), which could lead to confusion regarding which function to call first.
All tool names utilize a consistent 'net_' prefix and adhere strictly to snake_case. The naming convention clearly indicates the focus and action (e.g., `net_proxy_status`, `net_hosts_check`), providing high predictability.
Eight tools are appropriate for the scope of complex network diagnostics. The tools are highly focused and address distinct areas like DNS comparison, proxy probing, and general host checks, ensuring each tool provides unique value.
The toolset provides excellent coverage for reachability and configuration verification. However, it is missing advanced networking features such as performance measurement (latency/bandwidth) and deep system-level configuration checks beyond environment variables.
Maintenance
Related MCP Connectors
Proxy guides, tested configurations and error diagnostics, with an optional local route check.
Network, domain and website diagnostics for AI clients via MCP.
Outside-in DNS, email security, SEO, GEO and app-link checks plus developer utilities.
HTTP, DNS, SSL, WHOIS, ping, security-header, SEO and AI-readiness checks for any website.
Related MCP Servers
- AlicenseAqualityCmaintenanceNetwork diagnostics — ping, traceroute, DNS lookup, port scanning, and connectivity testing via MCP.14MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform real network diagnostics on the local machine, including ping, traceroute, DNS lookups, TLS checks, and more.MIT
- AlicenseNot gradedqualityAmaintenanceProvides AI assistants with local Wi-Fi diagnostics including connection history analysis, live signal sampling, and connectivity diagnosis. It returns findings and verdicts rather than raw data, and runs on Windows, Linux, and macOS without sending data off the machine.31 npm1MIT
- AlicenseNot gradedqualityCmaintenanceDiagnoses proxy misconfigurations that break AI coding tools like Cursor, VS Code, and Windsurf.1MIT