Створення типізованих серверів протоколу Model Context Protocol на Scala 3 з Chimp
Chimp — це SDK для Scala 3, що дозволяє створювати безпечні щодо типів сервери та клієнти Model Context Protocol без шаблонного коду. Він підтримує Tapir, sttp, двонаправлені стріми та бібліотеки Ox чи ZIO.
Вплив: Середній
Чому це важливо
Створюйте типізовані сервери Model Context Protocol на Scala без ручного написання схем JSON або шаблонного коду HTTP.
TL;DR
- 01Прискорення розробки MCP-серверів на базі JVM завдяки Tapir та sttp.
- 02Використання типізації Scala 3 для автоматичної генерації схем обмежень для ШІ-агентів.
- 03Інтеграція з Ox або ZIO для безперешкодного асинхронного стрімінгу між клієнтом і сервером.
Ключові факти
- Мова програмування
- Scala 3
- Транспорти
- stdio, HTTP (через Tapir та sttp)
- Бібліотеки конкурентності
- Ox, ZIO
Безпечна типізація та декларативність
Chimp усуває потребу в написанні шаблонного коду для інструментів Model Context Protocol (MCP). Замість ручної валідації JSON розробники можуть використовувати автогенерацію derives Codec, Schema у Scala 3. Це забезпечує строгу перевірку типів аргументів під час компіляції для всіх функцій, які викликає LLM.
Транспортні рівні та інтеграції
SDK підтримує ServerStdioTransport (ідеально для локального запуску через підпроцеси) та HTTP-транспорти на базі Netty. Для складніших сценаріїв Chimp надає модулі на кшталт chimp-server-ox та chimp-client-ox, які підтримують асинхронний двосторонній стрімінг та відстеження прогресу виконання в реальному часі.
Спробуй за 2 хвилини
// Run a basic MCP server using stdio transport in Scala 3
//> using dep com.softwaremill.chimp::chimp-server:0.4.0
import chimp.server.transport.ServerStdioTransport
case class EchoInput(message: String) derives Codec, Schema
val echo = tool("echo").description("Echoes message").input[EchoInput]
.handle(i => ToolResult.text(i.message))
ServerStdioTransport().serve(McpServer(tools = List(echo)))scala
✓ Коли використовувати
- Створення стабільних, типізованих MCP-серверів у JVM/Scala екосистемі.
- Реалізація інструментів із підтримкою двостороннього стрімінгу для передачі прогресу до LLM.
✕ Коли НЕ варто
- Просте скриптування, де Node.js або Python SDK дозволяють швидше створити прототип.
- Платформи без JVM, якщо не планується використання Scala Native (яка може мати обмежену сумісність).
Що зробити сьогодні
- Додайте залежність chimp-server до вашого Scala CLI проєкту.
- Опишіть базову функцію за допомогою DSL-методу tool().
- Протестуйте локально через stdio, прописавши шлях у конфігурації Claude Desktop.
Джерела