Run MCP Servers On Android with Gemini & Chicory
We hope you're having a great time with friends and family during these holidays!
On December 25th, an exciting gift arrived: the Chicory pure-Java Wasm runtime released its final 1.0 version! Along with it, the Extism Chicory SDK received significant updates, including an experimental HTTP client. This timing couldn't be better for experimenting with mcp.run!
As previously discussed, WebAssembly is the foundation of this
technology. Every servlet you install on the mcpx
server is powered by
a Wasm binary: mcpx
fetches these binaries and executes commands at
the request of your preferred MCP Client.
WebAssembly's Portability Superpowerโ
This Wasm core is what enables mcpx
to run on all major platforms from day
one. However, while mcpx
is currently the primary consumer of the
mcp.run service, it's designed to be part of a much broader ecosystem.
In fact, while holiday celebrations were in full swing, we've been busy developing something exciting!
Recently, we demonstrated how to integrate mcp.run's Wasm tools into a Java host application. In the following examples, you can see mcp.run tools in action, using the Google Maps API for directions:
- You can now fetch any mcp.run tool with its configuration and connect it to models supported by Spring AI (See demos on ๐ and ๐ฆ)
- Similarly, you can connect any mcp.run tool to models supported by LangChain4j, including Jlama integration (See demos on ๐ and ๐ฆ)
This goes beyond just connecting to a local mcpx
instance (which works
seamlessly). Thanks to Chicory, we're running the Wasm binaries
directly within our applications!
With this capability to run MCP servlet tools via mcp.run locally in our Java applications, we tackled an exciting challenge...
Android Integration: A New Frontierโ
We discovered that a pure-Java Wasm runtime ports remarkably well to Android. Our initial proof-of-concept shows promising results:
What you're seeing is an Android application that:
- Fetches servlets and configurations from mcp.run
- Integrates with Google's Gemini AI
- Interfaces with the Google Maps servlet
- All running directly on the device!
The Importance of On-Device AI Toolsโ
While external service calls are often necessary (like our demo's use of the Google Maps API), AI is becoming increasingly personal and embedded in our daily lives. As AI and agents migrate to our personal devices, the traditional model of routing everything through internet services becomes less ideal. Consider these scenarios:
- Your banking app shouldn't need to send statements to a remote finance agent
- Your health app shouldn't transmit personal records to external telehealth agents
- Personal data should remain personal
As local AI capabilities expand, we'll see more AI systems operating entirely on-device, and their supporting tools must follow suit.
Join usโ
While this implementation is still in its early stages, it already demonstrates impressive capabilities. The Wasm binary servlet runs seamlessly on-device, is fully sandboxed (only granted access to Google Maps API), and executes quickly.
We're working to refine the experience and will share more developments soon. We're excited to see what you will create with these tools! If you're interested in exploring these early demos, please reach out!