zio-ella
by otobrglez
zio-ella is a framework for writing MCP (Model Context Protocol) servers for modern AI platforms using Scala 3 and ZIO with `zio-http`. It allows developers to easily define capabilities and tools for AI agents.
View on GitHub
Last updated: N/A
zio-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)