About zio-ella
zio-ella is a framework for building MCP servers with Scala 3, ZIO, and zio-http. It is intended for developers integrating MCP server capabilities with the ZIO stack; the project is in an early phase.
Key features
- 01Scala 3 server framework
- 02ZIO integration
- 03zio-http support
- 04Tool and capability definitions
Use cases
- 01Building MCP servers with Scala 3 and ZIO
- 02Defining tools within a ZIO service
MCP support
Provides a framework for implementing MCP servers, including definitions for server capabilities and tools.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEzio-ella
zio-ella is a framework for writing MCP (Model Context Protocol) servers for modern AI platforms with Scala 3
and ZIO with zio-http.
⚠️ The project is in its early phase and is bound to rapid change. Please feel free to reach-out with ideas and use-cases.
Example capabilities and tools definition within a service might look like:
import zio.ZIO
import zio.dev.ella.*
object MyService:
val capabilities = Capabilities(
// Tool that only returns current server time
Tool("get-time") -> { _ =>
zio.Clock.instant.map(_.toString)
},
// Exemple tool to get where we accept city as an argument.
Tool("get-weather", ArgDef.string("city")) -> {
_.string("city").flatMap(city => ZIO.succeed(s"Weather in $city is sunny!"))
}
)
def run = MCPServer(capabilities).run
Integration with the ZIO Stack as follows:
object Main extends ZIOAppDefault:
def program = for
_ <- logInfo("Booting...")
_ <- MyService.run
yield ()
def configuredServer: TaskLayer[Server] =
ZLayer
.fromZIO(ZIO.config(Config.int("port")).tap(port => logInfo(s"Starting server on port $port")))
.flatMap(portEnv => Server.defaultWithPort(portEnv.get))
def run = program.provide(configuredServer)
Resources
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.