Devoxx Talk - Build an MCP Server with Java
I am excited to be talking at Devoxx Belgium, arguably the most important Java conference in Europe, about how to build an MCP Server with Java.
Moving my Mastodon account to foojay.social
My new handle is @sdelamo@foojay.social.
I followed this video to migrate from jvm.social to foojay.social.
๐ผ Micronaut Constraints Validation
In this video, I show you how to set up Micronaut Validation to validate the constraints of a Java Record.
๐ผ Micronaut Development environment
In this video, I show you how to set up a Micronaut Development environment.
๐ผ Micronaut @EachProperty
In this video, I show you how to use the @EachProperty
to load configuration into your Micronaut application.
OSS-Fuzz
OSS-Fuzz aims to make common open source software more secure and stable by combining modern fuzzing techniques with scalable, distributed execution.
Micronaut is using this great initiative by Google.
๐ผ Micronaut CLI upgrade via SDKMan
In this video, I show how to update to the latest version of the Micronaut CLI with SDKMan
๐ผ Micronaut Gradle GitHub Actions
In this video, I created a Micronaut application built with Gradle. I pushed it to a GitHub repository and I set up a continuous integration server with GitHub Actions
Add junit-platform-launcher to your Gradle JUnit 5 builds
While updating Micronaut repositories to Gradle 8.14, I had to add the org.junit.platform:junit-platform-launcher
dependency as a testRuntime
Gradle Configuration.
Install Ruby in MacOS
Excellent tutorial to install Ruby on macOS.
Kuvasz - Monitoring Service built with Micronaut
Kuvasz is an open-source, self-hosted uptime & SSL monitoring service, designed to help you keep track of your websites and services
MCP Resources
Collection of links to Model Context Protocol (MCP) resources, including videos, articles, and tools.
The Model Context Protocol (MCP) was open sourced by Anthropic in November 2024 to provide users and developers with an easy way to extend the capabilities of AI-powered apps by integrating them with data sources and applications.
Model Context Protocol (MCP)
Courses
Anthropic Academy
Courses
Videos
Build an MCP Server with Java
This session shows how to build an MCP (Model Context Protocol) Server in Java.
We first discuss how to build an MCP Server with Java without any framework, and then compare what frameworks (Spring Boot, Micronaut, and Quarkus) offer.
We will implement an MCP Server with each framework. The MCP Server will expose custom tools that can be accessed by MCP clients.
You will learn how to test your implementation using the MCP Inspector tool and connect to your MCP server with Claude as a client.
Target Audience
Developers interested in creating an MCP (Model Context Protocol) Server in Java.
Elevator Pitch
MCP allows you to expose reusable tools and resources to build agentic microservices. Doing this takes us beyond basic LLM chatbots to dynamic, problem-solving systems that deliver real value in real professional settings. In this session, you will learn how to build your first MCP Server.
Podcast feed validator
Check the Health of Your Podcast
Git commit Hash in Gradle build file
The following snippet shows how to get the Git commit hash in a Gradle build file using the Gradle Kotlin DSL.
fun String.execute(): String {
val process = ProcessBuilder(*this.split(" ").toTypedArray())
.directory(project.rootDir)
.redirectErrorStream(true)
.start()
return process.inputStream.bufferedReader().readText().trim()
}
val commitHash = "git rev-parse --verify HEAD".execute()
Wither Methods
Derived Record Creation with Wither Methods
JEP 468: Derived Record Creation
Records are immutable objects, so developers frequently create new records from old records to model new data. Derived creation streamlines code by deriving a new record from an existing record, specifying only the components that are different.
Use a Shortcut To Create a New Text File In a Folder On a Mac
There is no command in the Finder that will let you create a new blank file at your current location. But you can create a Shortcut that will let you do this each time easily. The Shortcut needs to use both JavaScript and shell scripting to get the job done.
Enable the local calendar in Fantastical for Mac
I found a way to enable this thanks to a Reddit post.
Fantastical for Mac needs and extra step to enable the local calendar. Iโll copy and paste what they told (itโs working for me).
- Copy the following line: x-fantastical3://defaults?key=EventKitSyncAll&value=1&type=bool&group=1
- Open your web browser
- Paste the text into the URL field and press enter
- Allow Fantastical to open
- Confirm the alert that appears
- Quit Fantastical completely (Click Fantastical in the menu bar and choose "Quit Fantastical Completely") then open the app again.
Kamal deployments at Commit Conf 2025
I will be delivering a talk about Kamal deployments at Commit Conf 2025, April 4th and 5th 2025.
Configure a Gradle Kotlin DSL to resolve Micronaut Snapshots
Micronaut documentation describes how to use snapshots.
The following snippet, which uses the Kotlin DSL, allows you to resolve Micronaut snapshots:
repositories {
maven {
url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
mavenContent {
snapshotsOnly()
}
}
mavenCentral {
mavenContent {
releasesOnly()
}
}
}