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
min
tomax
.
- generate random number between
iota
- generate a sequence of numbers from
min
tomax
.
- 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
vLEI.wiki MCP
Turns the Agent into a vLEI/KERI protocol expert
Railagent
Provides structured workflows and tools for AI agents working with software development projects, with a specialized focus on Rails applications.
ReAPI OpenAPI
Serves multiple OpenAPI specifications to enable LLM-powered IDE integrations.
VibeShift
An intelligent security agent that analyzes AI-generated code for vulnerabilities and assists with remediation.
Tripo MCP Server
Generate 3D models with Tripo AI. Requires the external Tripo AI Blender Addon.
Gurobi MCP
Solve optimization problems formulated by an LLM using the on-device Gurobi solver.
MCP Client for Ollama
A Python client that connects local LLMs via Ollama to Model Context Protocol servers, enabling them to use tools.
TLS MCP Server
Analyze TLS certificates using OpenSSL and zlint.
Gemini Imagen 3.0
Generate high-quality images using Google's Imagen 3.0 model via the Gemini API.
Zeek-MCP
Integrates Zeek network analysis with conversational AI clients. Requires an external Zeek installation.