{"slug": "show-hn-java-mcp-runtime-for-virtual-threads", "title": "Show HN: Java MCP Runtime for virtual threads", "summary": "A new Java and Kotlin Model Context Protocol server runtime called Tachyon has been released, built on Netty and conformance-tested against MCP versions 2025-11-25 and 2026-07-28. Tachyon runs synchronous Java handlers on virtual threads or suspending Kotlin handlers rather than on the Netty event loop, and ships with a localhost-only Host/Origin guard enabled by default. The runtime handles transport and protocol details including tools, resources, prompts, completions, logging, elicitation, cancellation, progress, pagination, and subscriptions, letting developers register handlers via a Java builder or Kotlin DSL.", "body_md": "### Protocol handling\n\nTools, resources and templates, prompts, completions, logging, elicitation, cancellation, progress, pagination, and subscriptions — conformance-tested against MCP **2025-11-25** and **2026-07-28**.\n\n[Read the features guide](/docs/features/)\n\nJava and Kotlin Model Context Protocol server runtime built on Netty. Write your handlers — Tachyon handles transport and protocol details.\n\nYour first MCP server\n\n```\n 1var server = TachyonServer.builder()\n 2    .name(\"weather-mcp\")\n 3    .withTools(tools -> tools.register(\n 4            b -> b.name(\"get_forecast\")\n 5                .description(\"Get weather forecast\")\n 6                .inputSchema(\"\"\"\n 7                {\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"]}\n 8                \"\"\"),\n 9            (ctx, request) -> ToolResult.text(\"☀️ 22°C\")))\n10    .port(8080)\n11    .build();\n12server.start();\n1import dev.tachyonmcp.kotlin.server.TachyonServer\n2import dev.tachyonmcp.api.server.features.tools.ToolResult\n3\n4val server = TachyonServer(port = 8080) {\n5    info { name = \"weather-mcp\"; version = \"1.0\" }\n6    tool(name = \"get_forecast\", description = \"Get weather forecast\") {\n7        ToolResult.text(\"☀️ 22°C, clear skies\")\n8    }\n9}\n```\n\nRun synchronous Java handlers on **virtual threads**, or suspending Kotlin handlers — never on the Netty event loop.\n\nNetty owns the socket and connection lifecycle. A localhost-only `Host`/` Origin` guard is **enabled by default**; deployments explicitly allow additional authorities.\n\nChoose the Java builder or Kotlin DSL, register a tool, and start the server. [Open the quickstart](/docs/quickstart/)", "url": "https://wpnews.pro/news/show-hn-java-mcp-runtime-for-virtual-threads", "canonical_source": "https://tachyonmcp.dev", "published_at": "2026-09-12 13:35:09+00:00", "updated_at": "2026-09-12 13:41:14.607837+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools", "ai-infrastructure"], "entities": ["Tachyon", "Model Context Protocol", "Netty", "Java", "Kotlin"], "alternates": {"html": "https://wpnews.pro/news/show-hn-java-mcp-runtime-for-virtual-threads", "markdown": "https://wpnews.pro/news/show-hn-java-mcp-runtime-for-virtual-threads.md", "text": "https://wpnews.pro/news/show-hn-java-mcp-runtime-for-virtual-threads.txt", "jsonld": "https://wpnews.pro/news/show-hn-java-mcp-runtime-for-virtual-threads.jsonld"}}