Repository navigation
elasticsearch-typescript-claude-mcp: log search errors to stderr, not the stdio JSON-RPC stream - #608
Open
vishalhabib99 wants to merge 1 commit into
Open
vishalhabib99 wants to merge 1 commit into
vishalhabib99 wants to merge 1 commit into
Conversation
… the stdio stream
|
Review these changes at https://app.gitnotebooks.com/elastic/elastic-labs/pull/608 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
In
supporting-blog-content/elasticsearch-typescript-claude-mcp/index.ts, thesemantic_searcherror path callsconsole.log("Error during search:", error). The server runs overStdioServerTransport, where stdout is the JSON-RPC stream, and the MCP docs say a stdio server must never write anything else there. Node prints the error object with its stack, so one failed search (a missing index, a bad API key) puts several non-JSON lines on the stream, and the client logs parse errors for each.Change
console.log->console.erroron that line, so the message goes to stderr. The tool still returns the sameisError: trueresult.Checked
Standalone stdio server with the same tool shape on
@modelcontextprotocol/sdk1.32.2 (within^1.20.0), throwing from the search and callingtools/callonce:console.log(main)console.error(this branch)