MCP服务器库

一个用于构建基于JSON-RPC 2.0的Model Context Protocol (MCP)服务器的Scala 3库,支持多种传输层和功能特性。

  • by andimiller
  • Scala
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 andimiller/scala-mcp

使用说明

Scala 3 MCP服务器库

用于构建的Scala 3库 模型上下文协议(MCP) 服务器。MCP是一种基于JSON-RPC 2.0的协议,允许像Claude这样的AI应用程序访问工具、资源和提示。

特性

  • 类型安全协议实现 --使用Scala 3枚举和不透明类型完成MCP协议实现
  • 自动模式推导 --使用 derives JsonSchema 为您的工具自动生成JSON模式
  • 多传输层 --Stdio用于基于子流程的服务器,可流式HTTP+SSE用于网络服务器
  • 交叉平台的 --核心和stdio模块支持JVM、Scala.js和Scala Native;http4s模块支持JVM和Scala.js
  • Fluent Builder API --易于使用的构建器,用于构建服务器、工具、资源和提示
  • 效应多态性 --基于Cats Effect的可组合函数式编程
  • 零沸点板 --利用Scala 3 derives 编解码器自动推导语法
  • 每个用户工具可见性 --由经过身份验证的用户使用 .withToolIf / .withToolIfF 在流式HTTP构建器上

模块结构

模块 平台 描述
核心 JVM、JS、Native 协议类型、服务器抽象、模式推导、JSON编解码器
标准 JVM、JS、Native 用于基于子进程的服务器的stdin/stdout传输
http4s JVM、JS 通过http4s Ember进行流式HTTP+SSE传输
开放API JVM、JS、Native OpenAPI 3.x模式模型+工具构建器助手
瑞迪斯 JVM 支持Redis SessionStore / SessionRefs / StateRef /通知接收器
貘 JVM 桥接任何 sttp.tapir.Schema[A] 进入a JsonSchema[A]
金色慕尼黑 JVM、JS、Native MCP服务器规范的黄金测试框架(munit)
探险家 JS 基于浏览器的用户界面,用于探索和测试MCP服务器
openapi mcp代理 JVM 将任何OpenAPI API公开为MCP服务器的独立CLI

快速开始

libraryDependencies ++= Seq(
  "net.andimiller.mcp" %%% "mcp-core"  % "0.9.0",
  "net.andimiller.mcp" %%% "mcp-stdio" % "0.9.0"
)
import cats.effect.IO
import io.circe.{Decoder, Encoder}
import net.andimiller.mcp.core.schema.JsonSchema
import net.andimiller.mcp.core.server.*

case class GreetRequest(name: String) derives JsonSchema, Decoder
case class GreetResponse(message: String) derives JsonSchema, Encoder.AsObject

val greetTool =
  tool.name("greet")
    .description("Greet someone by name")
    .in[GreetRequest]
    .out[GreetResponse]
    .run(req => IO.pure(GreetResponse(s"Hello, ${req.name}!")))

请参阅 完整的快速入门指南 适用于HTTP和Redis变体。

文档

完整文档: https://andimiller.github.io/scala-mcp/

简介

入门指南

模块

工具

测试

例子

许可证

此库和相关代码在MIT许可证下可用,请参阅license文件。

贡献

请随时在github上发出Pull Requests,记住要清楚地说明更改的目的并运行所有测试。