项目简介

'mcp_server' 是一个使用 Dart 语言开发的插件,旨在帮助开发者轻松构建符合 Model Context Protocol (MCP) 规范的服务器。该插件允许 Flutter 应用或其他 Dart 应用向大型语言模型 (LLM) 应用以标准化的方式暴露数据、功能和交互模式,充当 LLM 应用的上下文服务后端。

主要功能点

  • 资源 (Resources) 管理: 允许服务器托管和管理各种数据资源,并提供标准的读取接口,供 LLM 客户端获取上下文数据。
  • 工具 (Tools) 注册与执行: 支持注册外部功能为工具,LLM 客户端可以调用这些工具执行特定任务,扩展 LLM 的能力边界。
  • Prompt 模板 (Prompts) 定义与渲染: 支持预定义 Prompt 模板,为 LLM 交互提供可定制的模式,优化 LLM 的指令和输出。
  • 多种传输协议: 支持标准输入输出 (Stdio) 和服务器发送事件 (SSE) 两种传输协议,满足不同应用场景的需求。
    • Stdio: 适用于本地进程通信,例如命令行工具或直接集成。
    • SSE: 适用于 HTTP 协议的通信,允许通过 HTTP 连接进行实时数据推送。
  • 跨平台支持: 基于 Dart 和 Flutter 框架,支持 Android, iOS, Web, Linux, Windows, macOS 等多个平台。

安装步骤

  1. 添加依赖: 在你的 'pubspec.yaml' 文件中添加 'mcp_server' 插件依赖:

    dependencies:
      mcp_server: ^0.1.2
  2. 安装插件: 在命令行终端中运行以下命令安装插件:

    dart pub add mcp_server

服务器配置

MCP 服务器需要配置启动命令和参数才能被 MCP 客户端连接。以下是基于 'mcp_server' 插件创建的服务器配置示例(JSON 格式):

{
  "serverName": "Example Server",
  "command": "dart",
  "args": [ "path/to/your/server_script.dart" ]
}

配置参数说明:

  • serverName: MCP 服务器的名称,可以自定义,用于在客户端识别服务器。例如: '"Example Server"'。
  • command: 启动 MCP 服务器的命令。由于 'mcp_server' 是 Dart 插件,这里通常设置为 Dart 运行时环境的命令,即 '"dart"'。
  • args: 启动命令的参数列表,用于指定服务器脚本的路径。
    • '"path/to/your/server_script.dart"': 需要替换为你的 Dart 服务器脚本文件的实际路径。例如,如果你的主服务器文件是 'main.dart' 并且位于项目根目录下,则应为 '"main.dart"'。

注意:

  • 请确保你的 Dart 环境已经正确安装并配置到系统路径中,以便客户端能够找到 'dart' 命令。
  • 'server_script.dart' 指的是你使用 'mcp_server' 插件编写的 Dart 服务器代码文件,例如 'README.md' 提供的 "Basic Usage" 示例代码可以保存为 'main.dart' 文件。

基本使用方法

  1. 创建 MCP 服务器: 在 Dart 代码中使用 'McpServer.createServer()' 方法创建服务器实例,并配置服务器名称、版本和 capabilities (声明服务器支持的功能,如 tools, resources, prompts)。

    final server = McpServer.createServer(
      name: 'Example Server',
      version: '1.0.0',
      capabilities: ServerCapabilities(
        tools: true,
        resources: true,
        prompts: true,
      ),
    );
  2. 添加资源、工具和 Prompt: 使用 'server.addResource()', 'server.addTool()', 'server.addPrompt()' 方法向服务器注册资源、工具和 Prompt。 具体实现需要根据你的应用场景编写相应的处理逻辑 (handler)。 'README.md' 提供了详细的代码示例,可以参考。

  3. 选择并配置传输协议:

    • Stdio: 适用于本地通信,使用 'McpServer.createStdioTransport()' 创建 Stdio 传输实例。
    • SSE: 适用于 HTTP 通信,使用 'McpServer.createSseTransport()' 创建 SSE 传输实例,并配置端点和端口。
  4. 连接传输协议并启动服务器: 调用 'server.connect(transport)' 方法将服务器连接到选定的传输协议,启动服务器并开始监听客户端请求。

    final transport = McpServer.createStdioTransport(); // 或 McpServer.createSseTransport(...)
    server.connect(transport);
  5. 运行服务器: 在命令行终端中,使用 'dart run path/to/your/server_script.dart' 命令运行你的 Dart 服务器脚本。 确保 'path/to/your/server_script.dart' 替换为你的实际文件路径。 对于 Stdio 传输,服务器启动后会等待客户端通过标准输入输出进行连接和通信。 对于 SSE 传输,服务器会在指定的端口和端点监听 HTTP 连接。

通过以上步骤,你就可以使用 'mcp_server' 插件构建一个有效的 MCP 服务器,并将其配置到兼容的 MCP 客户端中使用。 更详细的功能和高级用法,请参考 'README.md' 文档和示例代码。

信息

分类

开发者工具