使用说明

项目简介

'MCP Dart SDK' 是一个使用 Dart 语言开发的 Model Context Protocol (MCP) 软件开发工具包。它旨在帮助开发者快速构建基于 MCP 协议的应用程序,特别是用于大型语言模型 (LLM) 的上下文服务。该 SDK 同时提供了客户端和服务端的功能,方便开发者进行 MCP 应用的开发和测试。

主要功能点

  • MCP 服务器端实现: 提供 'FastMCP' 类,可以快速创建 MCP 服务器,用于托管资源、注册工具和管理 Prompt 模板。
  • 资源管理: 允许服务器注册和管理各种类型的资源,并通过 URI 提供客户端访问。
  • 工具注册: 支持服务器注册可被 LLM 客户端调用的工具函数,扩展 LLM 的能力。
  • Prompt 模板: 允许服务器定义和管理 Prompt 模板,为 LLM 交互提供灵活的定制选项。
  • 多传输协议支持: 服务器和客户端均支持 Stdio, WebSocket, SSE 等多种传输协议,适应不同的应用场景。
  • 客户端会话管理: 提供 'ClientSession' 类,方便客户端与 MCP 服务器建立连接、发送请求和接收响应。
  • 类型安全: 利用 Dart 语言的类型系统,提供类型安全的 API,减少开发错误。

安装步骤

  1. 在您的 'pubspec.yaml' 文件中添加依赖:

    dependencies:
      mcp_dart: ^0.1.0
  2. 运行 'dart pub get' 命令获取依赖。

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令和参数才能建立连接。以下是基于 'mcp_dart_sdk' 示例生成的服务器配置信息(JSON 格式):

{
  "serverName": "Echo Server",
  "command": "dart",
  "args": [
    "run",
    "example/servers/simple_echo.dart"
  ],
  "description": "这是一个简单的 Echo 服务器示例,用于演示 MCP 服务器的基本功能。"
}

配置参数说明:

  • 'serverName': 服务器的名称,可以自定义,用于标识服务器。
  • 'command': 启动 MCP 服务器的命令,通常是 Dart 运行命令 'dart'。
  • 'args': 启动命令的参数列表。
    • '"run"': Dart 命令的子命令,用于运行 Dart 程序。
    • '"example/servers/simple_echo.dart"': 要运行的 Dart 服务器程序文件路径,根据实际服务器文件位置修改。
  • 'description': 服务器的描述信息,可自定义,用于提供服务器的额外说明。

注意: 请确保您的 Dart 环境已正确安装,并且可以执行 'dart' 命令。'example/servers/simple_echo.dart' 仅为示例服务器程序,您可以根据实际需求创建和配置自己的 MCP 服务器程序。

基本使用方法

  1. 创建 MCP 客户端会话: 使用 'ClientSession.connect()' 方法连接到 MCP 服务器,需要提供连接服务器的方法,例如使用 'stdioClient' 连接到本地启动的服务器。

    final client = await ClientSession.connect(() async {
      return await stdioClient(
        StdioServerParameters(
          command: 'dart',
          args: ['run', 'example/servers/simple_echo.dart'], // 使用配置好的服务器启动命令和参数
        ),
      );
    });
  2. 初始化会话: 调用 'client.initialize()' 初始化客户端会话。

    await client.initialize();
  3. 发送请求: 使用 'client.sendRequest()' 方法向服务器发送请求,例如调用工具 ('call_tool')。

    final response = await client.sendRequest<String>(
      'call_tool',
      CallToolRequestParams(
        name: 'echo',
        params: 'Hello, world!',
      ),
    );
    print('Response: $response');
  4. 关闭会话: 完成交互后,调用 'client.close()' 关闭客户端会话。

    await client.close();

更多详细用法和高级功能,请参考项目文档和示例代码。

信息

分类

开发者工具