Collection of Spring AI MCP server and client examples demonstrating Model Context Protocol integration with Spring Boot, including SSE and stdio transport variants
This repository is a collection of Spring AI MCP client/server EXAMPLES, not a production MCP server implementation. The codebase provides Spring Boot starter configurations and client demos but does NOT contain actual MCP tool definitions with schemas, descriptions, or proper registration. The single tool 'weatherTools' is inferred from a reference to 'MethodToolCallbackProvider from WeatherService class' in McpServerApplication.java, but no explicit tool definition, schema, input parameters, descriptions, or output documentation are visible in the provided source. The pom.xml files show dependency on 'spring-ai-mcp-server-sse-demo' and 'spring-ai-openai-spring-boot-starter', but the actual tool implementation code is not included in the code sample provided. Without seeing the WeatherService class implementation, parameter definitions, return types, or error handling, scoring is limited to what can be verified: NONE of the required tool definition elements (schema, descriptions, parameter types) are visible. Per the hard scoring rule: 'If you cannot see the actual tool definition in the source (only inferred): cap that tool's overall at 50.' In this case, the tool is ONLY inferred by name from a comment, so the cap is 50; but since no schema or description is visible, both those dimensions score 0.
Weather service tools registered via MethodToolCallbackProvider from WeatherService class
Tool definition not visible in source code. Only a comment reference 'Weather service tools registered via MethodToolCallbackProvider from WeatherService class' exists. No explicit tool registration, schema, parameter definitions, or descriptions are present in the provided sample.
No input schema provided or visible. This means the LLM has no way to know what parameters the tool accepts, their types, constraints, or requirements.
No tool description provided or visible. The LLM cannot determine WHEN or WHY to invoke this tool instead of another.
Tool name 'weatherTools' (plural, generic noun without action verb) violates naming conventions. Should be verb_noun: e.g., 'get_weather', 'fetch_forecast', 'search_weather'. The plural 'Tools' suggests this may be a tool collection or group, not a single callable tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 17 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 20 | - | v1 |
No output schema or return type documentation visible. LLM has no way to know what fields to expect in the response, preventing downstream tool chaining and field extraction.
No error handling documented. If the tool fails (e.g., location not found, API timeout), there is no guidance on recovery, retryability, or what the LLM should do next.