Skip to content

Fix MCP search tool returning non-standard content type 'json' - #778

Open
songproducer wants to merge 3 commits into
yacy:masterfrom
songproducer:fix/mcp-content-type-text
Open

Fix MCP search tool returning non-standard content type 'json'#778
songproducer wants to merge 3 commits into
yacy:masterfrom
songproducer:fix/mcp-content-type-text

Conversation

@songproducer

Copy link
Copy Markdown
Contributor

Summary

  • MCPSearchServlet was returning {"type":"json","json":{...}} as the content item in tool call responses
  • The MCP specification only permits text, image, audio, and resource as valid content types
  • This caused MCP clients (tested with Claude Code) to reject responses with a schema validation error, making the search tool completely unusable via MCP
  • Fix: changed to {"type":"text","text":"..."} with the JSON payload serialized as a string

Test plan

  • Start YaCy and issue a tools/call request to POST /tools with a search query
  • Verify the response content[0].type is "text" and content[0].text is a valid JSON string containing a results array
  • Confirm MCP clients (e.g. Claude Code configured with {"type":"http","url":"http://127.0.0.1:8090/tools"}) can successfully invoke the search tool

🤖 Generated with Claude Code

songproducer and others added 3 commits April 22, 2026 15:52
The MCP spec only permits 'text', 'image', 'audio', and 'resource' as
content types. MCPSearchServlet was returning {"type":"json","json":{...}}
which caused MCP clients (e.g. Claude Code) to reject the response with
a schema validation error. Changed to {"type":"text","text":"..."} with
the payload serialized as a JSON string.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Normalize Solr scores per peer batch before inserting into the shared
  priority queue so results from different peers compete on a [0,1] scale
  rather than on their raw absolute scores, which vary widely across indexes
- Add a Language dropdown to the search form with 11 common languages
- Persist the selected language in a yacy-language cookie (1 year) so users
  no longer need to manually append /language/en to every query
- Fall back to cookie preference when no explicit lr param is submitted;
  selecting "any" clears the cookie and removes the filter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant