diff --git a/instructions/quarkus-mcp-server-sse.instructions.md b/instructions/quarkus-mcp-server-sse.instructions.md new file mode 100644 index 0000000..7f0d61e --- /dev/null +++ b/instructions/quarkus-mcp-server-sse.instructions.md @@ -0,0 +1,39 @@ +# Quarkus MCP Server + +Build MCP servers with Java 21, Quarkus, and HTTP SSE transport. + +## Stack +- Java 21 with Quarkus Framework +- MCP Server Extension: `mcp-server-sse` +- CDI for dependency injection +- MCP Endpoint: `http://localhost:8080/mcp/sse` + +## Quick Start +```bash +quarkus create app --no-code -x rest-client-jackson,qute,mcp-server-sse your-domain-mcp-server +``` + +## Structure +- Use standard Java naming conventions (PascalCase classes, camelCase methods) +- Organize in packages: `model`, `repository`, `service`, `mcp` +- Use Record types for immutable data models +- State management for immutable data must be managed by repository layer +- Add Javadoc for public methods + +## MCP Tools +- Must be public methods in `@ApplicationScoped` CDI beans +- Use `@Tool(name="tool_name", description="clear description")` +- Never return `null` - return error messages instead +- Always validate parameters and handle errors gracefully + +## Architecture +- Separate concerns: MCP tools → Service layer → Repository +- Use `@Inject` for dependency injection +- Make data operations thread-safe +- Use `Optional` to avoid null pointer exceptions + +## Common Issues +- Don't put business logic in MCP tools (use service layer) +- Don't throw exceptions from tools (return error strings) +- Don't forget to validate input parameters +- Test with edge cases (null, empty inputs)