MCP ExplorerExplorer

Zio Ella

@otobrglezon 9 months ago
2 MIT
FreeCommunity
AI Systems
#mcp#mcp-client#mcp-server
MCP framework for ZIO

Overview

What is Zio Ella

zio-ella is a framework designed for creating MCP (Model Context Protocol) servers tailored for modern AI platforms using Scala 3 and ZIO with zio-http.

Use cases

Use cases for zio-ella include building AI-driven applications that require real-time data processing, creating chatbots that utilize external APIs, and developing services that respond to user queries based on contextual information.

How to use

To use zio-ella, define your service capabilities using the provided tools and arguments, and then run the MCPServer with these capabilities. Integration with the ZIO stack is achieved through a configured server that sets up the necessary environment.

Key features

Key features of zio-ella include seamless integration with the ZIO ecosystem, the ability to define custom tools and capabilities for services, and a straightforward setup process for running MCP servers.

Where to use

zio-ella can be used in various domains such as AI development, server-side applications, and any context where the Model Context Protocol is applicable.

Content

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)

Resources

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers