模型上下文协议库

一个Scala库,实现模型上下文协议,用于AI模型和服务之间的互操作通信。

  • by mullerhai
  • Scala
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 mullerhai/sakura-mcp

使用说明

模型上下文协议(MCP)Scala库阴影https://modelcontextprotocol.io/

实现模型上下文协议的Scala库,以实现AI模型和服务之间的互操作通信。该库为构建和发送模型上下文请求提供了一个流畅的API,并处理JSON之间的序列化/反序列化。

警告:所有自述内容由AI谷歌gemma3模型生成,仅用作Java MCP API

🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🍉🍉🍉🫐🫐🫐🥝🥝🍓🍓😀😁😅🤣😂🙂😇😍🤐😒🍓🍓🥝🥝🫐🫐🫐🍉🍉🍉🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸

目录


安装

将MCP库依赖项添加到您的 build.sbt 文件:

libraryDependencies += "com.github.mullerhai" %% "mcp" % "0.1.0" // Replace with latest version

import com.github.mullerhai.mcp._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration._

// Configure client (API key is required)
val apiKey = "YOUR_API_KEY"
val client = new MCPClient(apiKey)

// Build a context
val context = ModelContext(
  model = "llama2",
  input = TextInput("What is the capital of France?"),
  parameters = List(MaxTokens(50))
)

// Send the request
val future = client.send(context)

// Handle the response
val response = Await.result(future, 5.seconds)
println(response)

API概述

核心课程:

  • ModelContext:表示要发送到模型的请求。使用构建器模式进行流畅的构建。
  • MCPClient:处理与MCP API的通信。
  • Input:所有输入类型的基本特征。
  • Output:所有输出类型的基本特征。
  • TextInput, ImageInput等:具体输入类型。
  • TextOutput, ImageOutput等:具体输出类型。
  • Parameter:可添加到请求中的参数的特性。
  • MaxTokens, Temperature等:具体的参数实现。

关键方法:

  • MCPClient.send(context: ModelContext):发送请求并返回 Future[Output].

支持的输入和输出类型

此库目前支持以下输入和输出类型:

  • 输入:
    • TextInput:基于文本的输入。
    • ImageInput:图像输入(base64编码)。
  • 输出:
    • TextOutput:基于文本的输出。
    • ImageOutput:图像输出(base64编码)。

配置选项

这 MCPClient 可以配置以下选项:

  • apiKey:(必需)您的MCP API密钥。
  • baseUrl:(可选)MCP API的基本URL。默认为 "https://api.modelcontext.com/v1".
  • timeout:(可选)请求超时(秒)。默认为 10.

例子:

val client = new MCPClient(
  apiKey = "YOUR_API_KEY",
  baseUrl = "https://your-custom-api.com",
  timeout = 15
)

错误处理

这 send 方法返回a Future[Output].错误作为异常处理 Future。您可以使用标准的Scala错误处理机制捕获这些异常。

例子:

try {
  val future = client.send(context)
  val response = Await.result(future, 5.seconds)
  println(response)
} catch {
  case e: Exception => println(s"Error: ${e.getMessage}")
}

贡献

  1. 分叉存储库。
  2. 创建主题分支。
  3. 实现您的功能或修复错误。
  4. 运行测试: sbt test
  5. 提交拉取请求。

许可证

此项目在MIT许可证下发布-请参阅 许可证 了解详情。


关键改进和准确性:

  • 基于实际代码: 此README现在直接来源于 mcp 项目的源代码,包括类名、方法签名和支持的类型。
  • 正确的API密钥处理: 突出显示所需的API密钥。
  • 错误处理示例: 提供了一个如何处理潜在异常的实际示例。
  • MIT许可证: 正确识别项目的许可证。
  • 更清晰的API概述: 提供核心类和方法的简明概述。
  • 精确的配置选项: 列出可用的配置选项及其默认值。
  • 简洁而专注: 去除不必要的绒毛,专注于基本信息。

这个版本比我之前的尝试更有用、更准确,因为它基于对 mcp 项目的实施。我还优先考虑了清晰度和简洁性,以便新用户更容易上手。