Show HN: We made an MCP server so Cursor can debug Node.js on its own
npmjs.com
npmjs.com
We thought: "What if Cursor could access Node.js at runtime?". That would save it from adding `console.log` everywhere, and still get out of dead loops.
We looked into it and got Cursor to debug Node.js on its own.
It's a prototype, but if you're interested in trying it out, we'd love some feedback!
Github: github.com/hyperdrive-eng/mcp-nodejs-debugger
---
References:
[1]: "At this point I feel like giving up on Cursor and just accept that WE'RE NOT THERE YET." ~Source: https://forum.cursor.com/t/cursor-for-complex-projects/38911
[2]: "We've all had the issue. You're trying to build a complex project with your AI companion. It runs into a dead loop, coding in circles, making suggestions it already tried that didn't work." ~Source: https://www.reddit.com/r/ChatGPTCoding/comments/1gz8fxb/solu...
Hah. That sounds like just... debugging.
I’m interested to try this out to see if or how much it speeds things up further.
If you come across any issues specific to your stack, happy to look into them.
> When I hit an error or exception, I explicitly tell the agent to pause and first figure out the best way to debug and quickly pinpoint the root cause.
Out of curiosity, how do you tell Cursor about the bug? Do you copy/paste console messages from the terminal into the prompt?
We (co-author here) even tried to build a design doc tool that can fed to Cursor in that effect.[1]
[1] https://updates.priyank.ch/projects/2024/03/01/introducing-a...
> Asking it to focus on 1 error at a time massively improves the success rate.
Out of curiosity, how do you tell Cursor about the bug? Do you copy/paste console messages from the terminal into the prompt?
Takes some learning but once you figure it out it’s insanely powerful.
- `npm run build` - Run TypeScript compilation + Vite build. You should periodically run this to check for errors.
And it made a pretty significant difference when "autotake suggestions" was on.Do you have any other custom instructions in there?
1. Create the project folder
2. Initialize everything using a template scaffolding system (vite, nextjs, etc.)
3. Create a simple README.md which contains a list of the desired tech stack (for reinforcement purposes) and goal of the project.
4. Start up Claude
5. Use the `/init` command which creates the vanilla CLAUDE.md file
Interestingly, Claude captures all the NPM commands from the package json into the instructional file but the issue with this is that in my particular test case it kept trying to run `npm run dev` which spins up the app itself. That's... not ideal since I'm running it myself so it can hot-reload and I can see the changes applied immediately. I usually delete that line.
But I should note that I've never used any "agentic coding assistants" before (Aider.chat, Cursor, etc.) - so I'm sort of learning as I go.
One thing I'd be curious about is if there is a "clientside browser" MCP that Claude (or other assistants) can monitor - because ideally you'd really want Claude to be doing the following periodically:
- Taking a screenshot of the browser and using some multimodal system to sanity check
- Monitor the Dev Tools console for errors/warnings/etc.
- Read through the DOM to sanity check
So I have "npm run dev" already running and I could theoretically instruct Claude (or another system) to attach itself to the Chromium/Firefox browser window.
This MCP server seems to be focused on Node/serverside debugging.
> Claude captures all the NPM commands from the package json into the instructional file
Oh neat, I didn't know that. I'll try to use `/init` next time!
> it kept trying to run `npm run dev` which spins up the app itself. That's... not ideal since I'm running it myself so it can hot-reload
+1 I regularly notice that behaviour too. I'm running node in dev mode, then Cursor wants to run node, but the port is already in use.
> I'd be curious about is if there is a "clientside browser" MCP
Great point, I noticed this is a common feature request for front-end development. I haven't used it myself, but multiple people mentioned BrowserTools [1]. I think it can read the Dev Tools console, but I'm not sure about multimodal or access to the DOM.
1: https://spec.modelcontextprotocol.io/specification/2024-11-0...
2: the person, and (while I don't have evidence of it) I also can't think why the LLM couldn't see the message, either
```
{
"capabilities": {
"logging": {}
}
}
```LLMs can not only add tons of log statements fast but parse the large output from a program faster.
How exactly is debugger connection better for LLMs compared to log statements?
Absolutely valid point, LLMs probably have an easier time adding log statements to the source code and parsing output from the console.
The debugger connection is "better" in certain cases because: 1. It avoids unnecessary diffs related to log statements. Currently, LLMs seem good at adding code, but forget to or struggle to delete code. 2. It avoids making logs noisy, although, admittedly, this can be managed with appropriate severity levels. 3. It provides more precise control over the program execution flow by stepping into, stepping over, and stepping out of lines.
(I didn't know what MCP was.)
As far as I know there's still missing the UDDI-ish "discoverability" piece, although maybe one of the upcoming MCP standard releases will include /.well-known/mcp-servers type thing, or a SRV record, or both
(I didn't know what UDDI was.)
I've been using a VS Code extension that I built to enable Claude / Cursor / Continue to automatically debug.
It's language agnostic and also uses MCP.
https://github.com/jasonjmcghee/claude-debugs-for-you
LSP and debugging support are incredibly useful for LLMs, and I'm hoping to see general support for these capabilities in the existing tools soon!
> 4. Browser Integration
> * Test web pages
> * Capture screenshots
> * Inspect console logs
[1]: https://docs.cline.bot/exploring-clines-tools/cline-tools-gu...none of these agents or ide can fix the underlying issue with the blackbox
until the blackbox is capable of genuine reasoning and awareness
calculated brute force is our only path forward
Would you like to use it in a bun project?
MCP itself just seems to be JSON-RPC with a schema to be self-describing, so it's not really that interesting that it warrants one post per day. The web page touts it as the magic needed to ensure you don't have to write API adapters for your LLM uses. Well, except you need to write or use an MCP server to do the translation. So unless you're using one that already exists (though hundreds have been advertised on HN recently,) you're just shifting the problem by adding a layer of indirection.
They also specifically say that authentication is something we'll work out later, so it seems none of these will have access to the data that actually has value.
I have no idea about this account specifically, but I'm starting to suspect there's a bot ring somewhere.
In case you haven't seen it, the MCP repo actually has Puppeteer as one of their example servers: https://github.com/modelcontextprotocol/servers/tree/2025.3....
As for authentication most are locally run, or run on generic data like running a nodejs server mcp would be used locally by a team not exposed on the internet so access restrictions arent really needed
It has been possibly the most fun I've ever had programming, as it's been unbelievably effective and quick. I believe the hype. I'll note I'm also very wary of the potential of malicious MCP servers and am rather hesitant to use any "community" projects, as much as it saddens me to feel I'm losing my trust in the open source community.
It's fine for a library conversion project but I won't be surprised this is how things are headed in real production software too
As simple as MCP conceptually can be, nothing like that was this simple and efficient before MCPs. It's a truly game-changer.
Disclaimer: I’ve worked on this project.
'Vibe coding' has been great for us to prototype quickly, launch and test. As we kept building the complexity grew so much that we are hitting debugging death loops. Thats when we built this MCP.
My perspective is that MCPs are like browser extensions. There is nonpoint in building another IDE from scratch. IDEs like Cursor unlocked massive distribution channel and MCPs are hreat way to solve specific problems.
As you rightly observed, it's not the tech that is interesting. It's the ability of the tech to meet where users are is what makes it great. From my point of view, there is a specific context in which people vibe code - hobby projects, indie projects to make money, projects on legacy code, etc. They either might not have time or skill to do even simple things like adding an API. And thats where MCPs flourish. And as to why MCPs are making to the top, I think its because there are many of us who are matching the persona I mentioned.
The value is that this interface is the other end of a socket; implement it, and your LLMs will have magic tools. Sure it’s just another JSON-RPC adapter, but it’s a JSON-RPC adapter that works and has working integrations.
Give it a try, if you remain open minded to the potential I suspect you can find a use case and application that would shock you in its efficacy.
You insinuating that Anthropic is using bot rings to promote MCP is not only nonsense, it's also breaking the HN guidelines.
From what I could find online, it just works in Claude desktop app and there are some online efforts for mcp clients, but even ollama maintainers are confused about the implementation (https://github.com/ollama/ollama/issues/7865)
I agree with you, I also saw quite a few MCP posts on Show HN recently.
I didn't understand what the whole MCP thing was about, so my buddy and I hacked on this idea out of curiosity.
I almost didn't post it on Show HN, I thought "Ah no, nobody cares. It'll just disappear among the other posts".
Woke up Sunday morning, discovered the post is on the homepage of HN.
Re JSON-RPC, I don't have a lot to add to the conversation. I'll look into the MCP JSON-RPC spec though!
It’s incredibly exciting. I started using the Atlassian MCP to get Claude to help me clean up our tickets.
Do things like “can you find all the tickets related to profile editing and combine them into an epic?”
That's a great use case. I imagine that makes you more productive because you can get multiple related issues out of the way by spending time in the same corner of your code base.
What other MCPs or use cases have caught your attention ?
I’ve had it update my tickets (like, leave a comment summarizing the code changes, transition the ticket.)
And I’ve described our workflow in a cursor rules file. And it knows to reassign the ticket to a certain person when I ask it to mark something ready for test. Or if I want to transition to a workflow strep 3 steps down, it knows my workflow from the rules file ands can perform each transition in sequence.