MCP-scala
A Model Context Protocol server implementation written in Scala 3.
MCP-scala
Model Context Protocol server written in Scala 3
Development stage
This software is currently ALPHA state.
- Automatic derivation of JSON Schema
- Define your tool
- Text content part
- Other content parts
- Notification handling
- Capability handling
- stdio transport
- HTTP transport
- Authorization feature
This implementation needs your attention and contribution.
Feel free to open Issue / PR to contribute this project.
Demo
First, build server into JS:
sbt example/fastLinkJS
Then, utilize server in your MCP client:
// Example for Cline
{
"mcpServers": {
"mcpscala": {
"disabled": false,
"timeout": 30,
"command": "sh",
"args": ["/path/to/run.sh"],
"transportType": "stdio"
}
}
}
You can run some tool:
randomNumber- generate random number between
mintomax.
- generate random number between
iota- generate a sequence of numbers from
mintomax.
- generate a sequence of numbers from
sum- calculate the sum of a sequence of numbers.
Implement your tool
See Main.scala for details.
//> using scala 3
//> using toolkit typelevel:default
//> using dep dev.capslock::mcpscala:0.1.0
package dev.capslock.mcpscala
import cats.effect.IO
import cats.effect.IOApp
import dev.capslock.mcpscala.transport.StdioServer
import dev.capslock.mcpscala.mcp.ContentPart
import sttp.tapir.Schema.annotations.description
case class RandomNumberInput(
@description("Minimum value (inclusive)") min: Int,
@description("Maximum value (exclusive)") max: Int
) derives io.circe.Decoder,
sttp.tapir.Schema
def randomNumber(input: RandomNumberInput): IO[Seq[ContentPart]] = IO {
val random = scala.util.Random.between(input.min, input.max)
Seq(ContentPart.TextContentPart(random.toString))
}
/** Entry point for the Stdio server.
*/
object StdioMain extends McpIOApp(
name = "random-number",
header = "Generate a random number",
):
val handlers = Handler.methodHandlers(
Map(
"randomNumber" -> server.Tool(randomNumber),
)
)
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
UIAutomator2 MCP Server
Automate and control Android devices using the UIAutomator2 framework.
Ollama MCP Bridge
A bridge API service connecting Ollama with Model Context Protocol (MCP) servers.
Gurobi MCP
Solve optimization problems formulated by an LLM using the on-device Gurobi solver.
Flutter MCP
A real-time MCP server providing Flutter/Dart documentation and pub.dev package information to AI assistants, supporting over 50,000 packages on demand.
ClipToWSL
Enables AI coding agents to read Windows clipboard contents, including text and images, from within the Windows Subsystem for Linux (WSL).
Octomind
Create and manage end-to-end tests using the Octomind platform.
Model Context Protocol servers
A collection of reference implementations for the Model Context Protocol (MCP), demonstrating secure and controlled access to tools and data sources for Large Language Models (LLMs).
Omilia MCP Tools
A set of tools for managing miniapps, orchestrator apps, and dialog logs on the Omilia Cloud Platform (OCP).
Bevy BRP MCP
Control, inspect, and mutate Bevy applications with AI coding assistants via the Bevy Remote Protocol (BRP).
Factifai MCP Server
An MCP server for Factifai, enabling integration with any MCP-compatible AI tool to create and retrieve test results asynchronously.