{"id":"davidchanit-mcp-server","name":"mcp-server","homepage":null,"repo_url":"https://github.com/davidchanit/mcp-server","category":"devtools","subcategories":[],"tags":["mcp","spring-ai","json-rpc","http","sse","java","tool-discovery"],"what_it_does":"Spring AI MCP server that exposes MCP tools over JSON-RPC, primarily via an HTTP endpoint at /api/v1/mpc (and also supports an SSE transport). It auto-discovers tool methods annotated with Spring AI MCP annotations and provides example calculator and rock-paper-scissors tools.","use_cases":["Integrating basic computational and game-like tools into an MCP-compatible client/agent","Building a lightweight local MCP service for experimentation (e.g., Cursor MCP client)","Extending the server with additional annotated tool functions"],"not_for":["Production deployments requiring authentication, authorization, and strong security controls","Handling untrusted user inputs without additional validation/sandboxing","Use cases needing formally specified OpenAPI/SDK contracts beyond the README examples"],"best_when":"Used in a controlled environment (local dev / trusted network) where an agent needs simple deterministic tools and can connect via the documented MCP HTTP endpoint.","avoid_when":"Avoid exposing the HTTP endpoint publicly without adding authentication, network controls, and rate limiting; also avoid for workloads requiring long-term stability guarantees without further verification.","alternatives":["A managed MCP server offering hosted authentication and versioned APIs","Implementing MCP server endpoints directly in a framework with OpenAPI/SDK support","Using the framework-provided MCP server transports without custom HTTP controller code (if available)"],"af_score":45.0,"security_score":27.0,"reliability_score":25.0,"package_type":"mcp_server","discovery_source":["github"],"priority":"low","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-04-04T19:41:38.308966+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":"http://localhost:8090/api/v1/mpc","has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":[],"oauth":false,"scopes":false,"notes":"No authentication/authorization mechanism is described in the README. The example curl requests do not include auth headers."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No hosted pricing information; appears to be a self-hosted open-source project."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":45.0,"security_score":27.0,"reliability_score":25.0,"mcp_server_quality":70.0,"documentation_accuracy":65.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":15.0,"rate_limit_clarity":5.0,"tls_enforcement":30.0,"auth_strength":10.0,"scope_granularity":0.0,"dependency_hygiene":50.0,"secret_handling":55.0,"security_notes":"README does not mention TLS requirements, authentication/authorization, request validation, or rate limiting. If deployed, it should be placed behind TLS termination, protected with auth, and shielded from untrusted traffic. Randomized game tools and expression evaluation for calculator may require input validation depending on implementation details.","uptime_documented":0.0,"version_stability":45.0,"breaking_changes_history":30.0,"error_recovery":25.0,"idempotency_support":"false","idempotency_notes":"The README shows JSON-RPC tool calls but does not document idempotency semantics. Some tools (e.g., rockPaperScissors/random) are inherently non-idempotent.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["No authentication details are provided; agents should assume the endpoint is unauthenticated unless the deployment adds security.","Some tools use randomness (e.g., rockPaperScissors/getRandomChoice), so repeated calls will yield different results.","Tool discovery depends on correct @Service and @Tool annotations; otherwise tools may not appear."]}}