{"id":"haeseoky-spring-ai-mcp-server","name":"spring-ai-mcp-server","homepage":null,"repo_url":"https://github.com/haeseoky/spring-ai-mcp-server","category":"ai-ml","subcategories":[],"tags":["spring-boot","spring-ai","mcp","excel","powerpoint","office-docs","async-api","openai"],"what_it_does":"Spring Boot + Spring AI MCP Server that generates Excel and PowerPoint documents from AI prompts via REST endpoints. Supports asynchronous document generation, document status polling by documentId, and downloading generated files (Excel/PPT) from local temp storage.","use_cases":["Auto-generate Excel reports from structured sections and content prompts","Auto-generate PowerPoint presentations from content prompts","Provide an internal service for document generation workflows that call an LLM (OpenAI) and produce Office files"],"not_for":["Production use cases that require strong authentication/authorization controls out of the box","Use cases needing formal SLAs, explicit retry/idempotency guarantees, or robust rate-limit handling","Environments that require strict data residency or compliance controls that are not documented here"],"best_when":"You need a local/self-hosted Java service to turn text prompts into Excel/PPT files and you can secure the service at the network layer.","avoid_when":"You cannot safely expose an LLM-backed document generation endpoint (e.g., without auth/rate limiting) or you need clear operational contracts (SLA, error codes, retries, idempotency).","alternatives":["Self-hosted doc generation services using Office templates + an LLM (e.g., custom Spring Boot service)","Commercial document generation APIs that offer authentication and usage controls","Use LLM-to-structured-data pipelines (JSON) plus rendering libraries for Excel/PPT"],"af_score":30.0,"security_score":32.0,"reliability_score":20.0,"package_type":"mcp_server","discovery_source":["github"],"priority":"low","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-04-04T19:37:16.649466+00:00","interface":{"has_rest_api":true,"has_graphql":false,"has_grpc":false,"has_mcp_server":false,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["OpenAI API key via environment variable (OPENAI_API_KEY)"],"oauth":false,"scopes":false,"notes":"README does not describe any authentication for the exposed REST endpoints; securing access to localhost:8080 externally is implied but not documented."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No pricing model described; costs primarily depend on the underlying OpenAI usage through Spring AI."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":30.0,"security_score":32.0,"reliability_score":20.0,"mcp_server_quality":0.0,"documentation_accuracy":55.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":15.0,"rate_limit_clarity":0.0,"tls_enforcement":40.0,"auth_strength":10.0,"scope_granularity":0.0,"dependency_hygiene":50.0,"secret_handling":70.0,"security_notes":"Only the OpenAI API key is mentioned (via OPENAI_API_KEY). The README does not document authentication/authorization for the REST API, HTTPS requirements, CSRF protections (if applicable), logging redaction, or rate limiting. As an LLM-backed generator producing files, it may be vulnerable to abuse (prompt injection, resource exhaustion) if endpoints are exposed without controls.","uptime_documented":0.0,"version_stability":30.0,"breaking_changes_history":30.0,"error_recovery":20.0,"idempotency_support":"false","idempotency_notes":null,"pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["REST endpoints are described via curl examples but there is no documented authentication/authorization, error schema, or rate-limit behavior for automated agents.","File download endpoints take {fileName} in the URL; agents must reliably persist the returned documentId/fileName to avoid broken links."]}}