Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows 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 reinstallSome links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
Short answer: create a Quarkus application with the io.quarkiverse.mcp:quarkus-mcp-server-http extension, annotate a Java method with @Tool, run the app in dev mode, and point an MCP client at http://localhost:8080/mcp. This tutorial uses the modern Streamable HTTP transport and a minimal greeting tool, then shows testing, troubleshooting, security considerations, and the legacy SSE endpoint.
What you will build
You will build a Java 17+ Quarkus application that exposes an MCP server over HTTP. The server will publish one tool, greet, which accepts a name and returns a greeting. MCP clients such as MCP Inspector can discover and invoke that tool through Streamable HTTP.
The current Quarkiverse documentation identifies Streamable HTTP as the preferred network transport. The older SSE endpoint remains available for compatibility, but SSE is deprecated in the MCP 2025-03-26 specification. The protocol specification identified by the project overview is 2026-07-28, and the Quarkiverse project version is 2.0.0. Clients and servers must agree on the protocol behavior they support.
Prerequisites
- JDK 17 or later.
- Maven 3.9+ or Gradle.
- A Quarkus project that uses a compatible Quarkus platform.
- An MCP client for testing. You can use Quarkus Dev UI or MCP Inspector.
Use localhost for the first test. Quarkus protects local HTTP endpoints against DNS-rebinding attacks, so a request made through another hostname or an IP address can receive HTTP 403 even when the application is running correctly.
#1 Best Overall
Choose the extension version carefully
The Quarkus Extensions Registry currently lists quarkus-mcp-server-http version 2.0.1, released September 11, 2026, with Java 17 as the minimum and a stable status. The Quarkiverse development guide’s Maven example uses 2.0.0. Because these values can change independently of your Quarkus platform, check the registry and your platform’s compatibility before copying a coordinate.
The artifact name is:
io.quarkiverse.mcp:quarkus-mcp-server-http
Create the Quarkus project
Using Maven
Generate a normal Quarkus application, then add the HTTP MCP extension. If you already have a project, only the dependency step is required.
mvn io.quarkus.platform:quarkus-maven-plugin:create
-DgroupId=com.example
-DartifactId=mcp-http-server
-DclassName=com.example.GreetingResource
-Dpath=/hello
cd mcp-http-server
Add the extension using the version that matches your Quarkus platform and the current registry entry. The development guide demonstrates the following form with version 2.0.0:
mvn quarkus:add-extension
-Dextensions="io.quarkiverse.mcp:quarkus-mcp-server-http:2.0.0"
If your registry check selects 2.0.1, use that version instead. Avoid mixing a newer extension with an older, incompatible Quarkus platform without checking the platform constraints.
Using Gradle
For Gradle, add the same artifact to the application dependencies, using the version selected for your Quarkus platform:
implementation("io.quarkiverse.mcp:quarkus-mcp-server-http:2.0.1")
Replace 2.0.1 if your compatibility check identifies another supported release.
Rank #2
Implement a tool
Create a Java bean in your application and annotate a public method with @Tool:
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minutepackage com.example;
import io.quarkiverse.mcp.server.Tool;
import jakarta.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class GreetingTools {
@Tool(description = "Greet a user by name")
public String greet(String name) {
if (name == null || name.isBlank()) {
return "Hello!";
}
return "Hello, " + name + "!";
}
}
The Quarkiverse getting-started guide states that “The @Tool annotation automatically registers this method as an MCP tool.” There is no separate manual registration call in this minimal example. The method’s parameter and return type become part of the tool contract exposed to the client.
Design the first tool narrowly
- Give the tool a clear description; clients use it when deciding which tool to call.
- Validate input inside the method and return a predictable result.
- Keep side effects explicit. A tool that writes data, sends mail, or changes infrastructure needs authentication, authorization, auditing, and careful error handling before production use.
- Use additional MCP capabilities only when needed. Quarkiverse supports tools, resources, prompts, sampling, elicitation, progress, cancellation, and roots; resources and prompts are useful next steps, not prerequisites for the HTTP quickstart.
Start the server in dev mode
mvn quarkus:dev
Quarkus starts the application on port 8080 by default. The modern Streamable HTTP endpoint is:
http://localhost:8080/mcp
The legacy HTTP/SSE endpoint is:
http://localhost:8080/mcp/sse
Use /mcp for new clients. Keep /mcp/sse only when a client or deployment still requires the older SSE flow.
Test with Quarkus Dev UI
- Leave
mvn quarkus:devrunning. - Open the Quarkus Dev UI shown in the terminal, normally
http://localhost:8080/q/dev-ui. - Find the MCP Server tools card.
- Select
greet, enter a value such asAda, and invoke the tool. - Confirm that the result is
Hello, Ada!.
Dev UI is the quickest in-app check because it uses the running Quarkus application directly and requires no separate client configuration.
Test with MCP Inspector
- Start the application with
mvn quarkus:dev. - Launch MCP Inspector using the installation and command appropriate to your environment.
- Choose Streamable HTTP as the transport.
- Set the server URL to
http://localhost:8080/mcp. - Connect, open the discovered tools list, select
greet, supply a name, and run it. - Check the response and the request details if discovery or invocation fails.
Inspector is a separate MCP client, so it is a more realistic interoperability test than Dev UI. Test with localhost first; changing the URL to a machine hostname can trigger Quarkus’s DNS-rebinding protection.
Streamable HTTP versus the legacy SSE endpoint
| Aspect | Streamable HTTP | Legacy HTTP/SSE |
|---|---|---|
| URL in this quickstart | http://localhost:8080/mcp |
http://localhost:8080/mcp/sse |
| Current status | Preferred network transport | Legacy; SSE is deprecated in MCP 2025-03-26 |
| Best use | New MCP clients and web-accessible deployments | Existing clients that have not migrated |
| Session model | Supports the protocol’s modern request behavior | Uses the older SSE-oriented interaction model |
The Quarkus announcement dated September 21, 2026 explains that server version 2.0.0 added stateless requests for protocol 2026-07-28 while preserving the older stateful, session-based path. Stateless requests can be handled by any server instance, which is useful in a distributed deployment. Do not assume that every interaction is stateless: tools involving sampling, elicitation, roots, or subscriptions may require the correct stateful or stateless flow and a client that supports it.
Security and production deployment
Quarkiverse documents integration with Quarkus Security for authentication and authorization. That is an integration capability, not proof that the minimal greeting sample is protected by a production access policy.
Before exposing the endpoint publicly
- Choose an authentication mechanism supported by your Quarkus application and MCP clients.
- Define authorization rules for the MCP route and for sensitive tools individually.
- Reject unauthenticated requests before invoking tools with side effects.
- Validate all tool arguments and set limits for payload size, execution time, and resource use.
- Log tool invocation outcomes without writing secrets, tokens, or personal data to logs.
- Test both allowed and denied requests from the actual network path, including a reverse proxy if one is used.
- Decide whether your deployment needs stateful sessions or can use stateless requests. A load-balanced deployment must preserve whatever session or callback behavior the selected MCP features require.
Troubleshooting
Dependency resolution fails
Symptom: Maven cannot resolve the extension or reports incompatible platform artifacts.
Free tools Windows power users keep installed
One-click scans. No signup required.
Cause: The extension version and Quarkus platform are out of alignment, or the version from the guide differs from the current registry.
Fix: Check the Quarkus Extensions Registry, select a compatible release, and update the dependency. The registry’s 2.0.1 listing and the guide’s 2.0.0 command are different documented points in time.
The endpoint returns 404
Symptom: /mcp is not found.
Fix: Confirm that quarkus-mcp-server-http is on the runtime classpath, restart dev mode after changing the build file, and verify that you are using the correct application port. Use /mcp for Streamable HTTP and /mcp/sse only for the legacy endpoint.
A client receives HTTP 403
Cause: The request used a hostname or IP address that Quarkus rejected under its DNS-rebinding protection.
Fix: Reconfigure the client to use http://localhost:8080/mcp for local testing. If remote access is intentional, follow Quarkus’s DNS-rebinding guidance and explicitly configure the allowed origins or hostnames for your deployment.
No tools are listed
Checks:
- Confirm the class is a CDI bean, such as with
@ApplicationScoped. - Confirm the method imports
io.quarkiverse.mcp.server.Tool. - Confirm the annotation is on a public method and includes a useful description.
- Restart dev mode after changing source or dependency files.
- Ensure Inspector is configured for Streamable HTTP rather than SSE.
Inspector cannot connect
Verify that the application is still running, use the exact URL http://localhost:8080/mcp, and check that no local proxy or firewall is rewriting the request. If the client only supports the old transport, try the documented SSE URL while planning a migration.
Calls work locally but fail behind a load balancer
Review whether the client interaction is stateful or stateless and whether your selected MCP features require callbacks or subscriptions. Configure session affinity or shared state when required, or use the stateless flow supported by your client and server version.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Performance, reliability, and cost considerations
The official material reviewed for this tutorial does not publish a benchmark or throughput figure, so capacity must be measured in your own environment. Profile tool execution, HTTP connection limits, payload sizes, downstream calls, and concurrent requests under representative load.
- Keep tools short-lived or move long work to a job system with progress reporting.
- Set timeouts on downstream services and return structured, actionable errors.
- Use health checks and metrics appropriate to your Quarkus deployment.
- Test cold starts, rolling deployments, retries, and duplicate requests before enabling automatic client retries.
- For stateless horizontal scaling, verify that every instance can process the requests your client sends.
The extension itself does not impose a separate MCP service fee. Your costs come from the infrastructure, downstream systems, and operational controls you choose.
Best Value
Or skip the browser setup
If your next task is capturing the MCP endpoint, documentation page, or test result as an image or PDF, ScreenshotNeo provides a single HTTP request instead of a browser automation setup. It accepts cookie and consent banners like a visitor, then removes more than 60 known consent platforms, newsletter popups, and chat widgets 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.
It also offers an MCP server with take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. Every plan includes the same feature set, including full-page capture, CSS-selector element capture, device presets, custom viewport and retina scale, PDF controls, custom CSS and JavaScript, click and wait actions, request blocking, headers, cookies, user agents, authorization, timezone and geolocation, transparent backgrounds, resizing, TTL caching, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification.
curl -G "https://api.screenshotneo.com/v1/shot"
-d access_key=YOUR_API_KEY
--data-urlencode url=http://localhost:8080/mcp
-o mcp-endpoint.webp
See the ScreenshotNeo documentation for authentication and capture options. The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Frequently Asked Questions
Can I expose the same Quarkus MCP server over both Streamable HTTP and SSE?
Yes. The documented application exposes Streamable HTTP at /mcp and the legacy HTTP/SSE endpoint at /mcp/sse. Prefer /mcp for new clients and retain SSE only for compatibility.
Do I need to register each @Tool method manually?
No. The Quarkiverse getting-started guide says the @Tool annotation automatically registers the method as an MCP tool.
Is the greeting example production-secure by default?
No. Quarkiverse supports integration with Quarkus Security, but you must configure and test authentication and authorization for your own deployment.
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.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →

