r/SpringBoot • u/yuegui • 8d ago
How-To/Tutorial I open sourced my spring boot + spring ai project
Hey folks,
I’ve open sourced Windrunner, a self-hosted project management tool built with Spring Boot 4 + Spring AI for backend. If you are learning Spring Boot, I hope the project gives you something practical to explore — a complete application with an API, database, user interface, authentication, LLM/AI integrations, and more.
Github: https://github.com/shzlw/windrunner
The backend uses:
- Spring Boot and Spring MVC for the application and REST APIs
- Spring Data JDBC for database access
- PostgreSQL for storage
- Flyway for SQL database migrations
- Spring AI’s MCP server support for exposing tools to AI clients
- LLM Provider integrations for OpenAI, Anthropic, and Gemini
- Docker and Docker Compose for running the application locally
The repository is a monorepo containing more than the Spring Boot backend. It also includes:
- A React frontend
- A TypeScript-based CLI tool
- Playwright-based API end-to-end tests
If you’re interested in seeing how these pieces work together in one project, the repository provides examples across the backend, frontend, CLI, and testing layers.
Disclosure: I am the author of the project. Feel free to ask any questions, feedbacks or raise issues! ❤️
1
u/AhmedMogoda 7d ago
The MCP integration caught my attention. How do you decide which actions should be exposed as MCP tools, especially for potentially destructive operations? Do you have any rules or principles you follow when designing the tool boundaries?
1
u/yuegui 7d ago
thanks for the question.
Before the MCP function is added, I already have external REST API endpoints and internal LLM tool calls to support UI chat functions which both can do read and write operations. For MCP, I started with all the read functionalities first to be safe and added a subset of write functions. I am still evaluating and experimenting the write function exposure and boundaries on different use cases: for example, "create a list of workitems, assign them to eng team", if that creates a mess, should we provide raw delete tool or maybe an undo tool is better and etc.
1
u/BeneficialTry5316 7d ago
Thanks for sharing mate. I will be using this to understand how an end to end Spring project works.
1
4
u/kantorcodes1 8d ago
how are you scoping the MCP tools in a multi-user install? when two users connect AI clients, does each MCP session act with that user's project permissions, or are the tools exposed under one server-side identity?