“No server info found” is a client symptom, not a root-cause code. It means the MCP client does not have usable server initialization data. The server may never have launched, may have exited, may have polluted a stdio stream, may have broken the transport, or may have returned an invalid or unsupported initialize response. Start with the first error in the client log and the process boundary; do not begin by changing protocol fields at random.
What the message actually means
MCP starts with a mandatory handshake. The client sends an initialize request. A healthy server returns a JSON-RPC result containing a negotiated protocolVersion, a capabilities object, and serverInfo identifying the implementation. The client then sends notifications/initialized before requesting tools, resources or prompts.
A visible process is not proof that this exchange completed. “No server info found” can appear after an executable cannot be created, a process exits during startup, a connection closes, or the client rejects the response. Treat the wording as the end of a failure chain and find the earliest event in the logs.
1. Find the first useful error
Open the client’s server or MCP log and inspect the lines immediately before the message. Record the first occurrence of any of these:
#1 Best Overall
command not found,ENOENT,spawn ... ENOENT, or a permission error;- a non-zero exit code, connection-closed event, or transport exception;
- an import or dependency error such as
ERR_MODULE_NOT_FOUND; - malformed JSON, an invalid JSON-RPC response, or a protocol-version error.
Also record the client and server versions, operating system, transport (stdio or Streamable HTTP), configured command, arguments, working directory, and the first server-side error. Remove API keys, cookies and other credentials before sharing logs. A Cursor community report from July 2025 paired this symptom with spawn npx ENOENT; a separate GitHub issue opened in May 2025 paired it with a process that exited after a missing dependency. Those reports demonstrate launch and crash categories, not a universal fix.
2. Prove that the configured process can launch
Check the exact executable
Run the same executable and arguments outside the client, then verify that the client can see that executable. IDEs often have a different PATH, home directory and working directory from your interactive shell. Use an absolute interpreter and script path where practical. Confirm the file exists, is executable, and targets the intended runtime version.
Check configuration and environment
- Validate the JSON syntax and required fields in the client configuration.
- Confirm argument quoting, especially paths containing spaces.
- Set required environment variables explicitly instead of assuming the IDE inherits your shell.
- Verify the project’s dependencies are installed in the directory from which the client starts the process.
- Check permissions and the configured working directory; a client-launched directory may be undefined.
On Windows, test a direct executable path instead of relying on a shell wrapper or batch-file lookup. The cited Cursor report describes a user changing to a direct Node path after command-line errors; use that as a diagnostic experiment, not as a guaranteed remedy.
3. Keep stdio protocol traffic clean
With stdio transport, stdout is the MCP protocol channel. The Model Context Protocol debugging documentation states: “Local MCP servers should not log messages to stdout (standard out), as this will interfere with protocol operation.” Startup banners, progress messages, stack traces and debug prints on stdout can make an otherwise valid handshake unparsable.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsSend diagnostics to stderr instead. In Node.js use console.error(); in Python use print(..., file=sys.stderr). Capture stdout separately and check that it contains only the protocol messages expected by the SDK. For Streamable HTTP, inspect HTTP requests, responses and server logs rather than assuming stdio rules apply.
Rank #2
4. Inspect the initialize exchange
If launch succeeds, capture the raw exchange using the client’s trace facility, server logging, or an appropriate protocol inspector. Verify each item:
- The first request is an
initializeJSON-RPC request with an identifier. - The response is a JSON-RPC result tied to that identifier, not an error, HTML page or log line.
- The result includes
protocolVersion,capabilities, andserverInfowith implementation identity fields. - The returned protocol version is supported by the client. MCP version negotiation requires a client that cannot support the selected revision to disconnect.
- After the successful result, the client sends
notifications/initialized.
Do not add fake capabilities merely to make a user interface advance. The capability map must describe features the server really implements. An invalid version, missing field, wrong JSON-RPC envelope, or response written to the wrong transport is evidence of a protocol or SDK integration problem.
5. Compare an independent test with the target client
Use MCP Inspector, the interactive tool recommended by the official debugging guidance, against the same server command, arguments, environment and transport. Inspector can separate a server/runtime failure from a host-specific failure:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
- Client logs show how the host created the process and handled the connection.
- Server stderr and runtime logs show dependency, import and application failures.
- Inspector shows whether an independent client can complete the protocol exchange.
- The intended client is the final authority for its own configuration and UI.
If Inspector succeeds but Cursor or another host fails, compare launch environments and protocol-version support rather than rewriting working server code. Success in one client does not prove compatibility with another.
Rank #3
Common symptom-to-check map
| Evidence | Likely layer | Next action |
|---|---|---|
ENOENT, command not found |
Process creation or PATH | Use an absolute executable path; verify the client environment and working directory. |
| Process exits with module/import error | Runtime or dependency | Install dependencies in the launched project, then rerun the exact command manually. |
| Process remains alive but client reports no info | Stdio contamination or blocked handshake | Move all ordinary logs to stderr and inspect stdout and initialization timing. |
| Connection closes during initialize | Transport, crash or timeout | Read server stderr, check startup duration, endpoint/port and proxy behavior. |
| Response lacks required fields or uses an unsupported version | Protocol/SDK compatibility | Compare the server’s initialize result with the client’s supported revision and correct the implementation. |
6. Make one controlled change and verify
Change only the layer identified by evidence: path, arguments, JSON configuration, environment, dependency, stdout logging, transport or protocol response. Restart the server and client as needed, then repeat the same log capture. Keep a before-and-after copy of the configuration so a new change does not hide the original failure.
Consider the fix complete only when the intended client completes initialization and displays the expected tools, resources or prompts. If the server intentionally exposes none of those capabilities, a successful handshake can still produce an empty tool view; distinguish that from “no server info.”
Cursor-specific checks
For Cursor, inspect the MCP server entry actually loaded by the current profile, not only the file you edited. Confirm the command is available to the Cursor process, arguments are valid JSON strings, and required environment variables are present. A terminal success using npx does not prove Cursor can resolve npx. Test the direct runtime path and the project’s absolute entry point, then read the first Cursor log error before changing SDK or protocol versions.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWhen the process is “running” but no tools appear
“Running” may only mean a child process exists. Check that initialization completed, notifications/initialized was sent, and the server advertises the tools capability. Then request the tool list and inspect the server response for an empty result, an error, or a timeout. An empty but valid list is a server configuration or implementation decision; a missing server identity is an earlier handshake failure.
Rank #4
Or skip the browser setup
If your goal is dependable website screenshots for an MCP workflow, ScreenshotNeo provides an API and MCP server rather than requiring you to maintain a browser launcher. One GET request returns PNG, JPEG, WebP or PDF. Cookie/consent banners, newsletter popups and chat widgets are removed before capture; bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP tools—take_screenshot, get_page_info and capture_pdf—work with Claude, Cursor and other MCP clients.
See the ScreenshotNeo API documentation for all options, including full-page and selector capture, device presets, custom CSS/JavaScript, waits, blocking rules, headers, cookies, geolocation, PDFs, caching, signed links, webhooks and bulk capture.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots, and every feature is included on every plan. Create a free ScreenshotNeo account.
Recommended Free Tools
FAQ
Does reinstalling Node fix this error?
Only if your logs establish a broken or missing runtime. Reinstalling without identifying the failing layer can leave the real path, dependency or protocol problem unchanged.
Should I downgrade the MCP SDK?
Not as a first step. Confirm the returned protocol version and the client’s supported revision, then change SDK versions only when that evidence shows incompatibility.
Best Value
Why does Inspector work while my client fails?
The two clients may use different environment variables, working directories, transports, timeouts or supported protocol revisions. Compare their launch and initialize traces.
Can a valid handshake still show no tools?
Yes. A server can initialize successfully while advertising no tools or while returning an empty tool list. That is different from missing serverInfo or a failed initialization.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Frequently Asked Questions
Does reinstalling Node fix this error?
Only when logs show a broken or missing runtime; otherwise verify the launch path, dependencies and handshake first.
Should I downgrade the MCP SDK?
Only after confirming a protocol-version incompatibility. Do not use a downgrade as a blind workaround.
Why does Inspector work while my client fails?
The clients may differ in environment, working directory, transport, timeout or supported protocol revision.
Can a valid handshake still show no tools?
Yes. Successful initialization can legitimately expose an empty tool list.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




