项目简介
'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 等多个平台。
安装步骤
-
添加依赖: 在你的 'pubspec.yaml' 文件中添加 'mcp_server' 插件依赖:
dependencies: mcp_server: ^0.1.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' 文件。
基本使用方法
-
创建 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, ), ); -
添加资源、工具和 Prompt: 使用 'server.addResource()', 'server.addTool()', 'server.addPrompt()' 方法向服务器注册资源、工具和 Prompt。 具体实现需要根据你的应用场景编写相应的处理逻辑 (handler)。 'README.md' 提供了详细的代码示例,可以参考。
-
选择并配置传输协议:
- Stdio: 适用于本地通信,使用 'McpServer.createStdioTransport()' 创建 Stdio 传输实例。
- SSE: 适用于 HTTP 通信,使用 'McpServer.createSseTransport()' 创建 SSE 传输实例,并配置端点和端口。
-
连接传输协议并启动服务器: 调用 'server.connect(transport)' 方法将服务器连接到选定的传输协议,启动服务器并开始监听客户端请求。
final transport = McpServer.createStdioTransport(); // 或 McpServer.createSseTransport(...) server.connect(transport); -
运行服务器: 在命令行终端中,使用 'dart run path/to/your/server_script.dart' 命令运行你的 Dart 服务器脚本。 确保 'path/to/your/server_script.dart' 替换为你的实际文件路径。 对于 Stdio 传输,服务器启动后会等待客户端通过标准输入输出进行连接和通信。 对于 SSE 传输,服务器会在指定的端口和端点监听 HTTP 连接。
通过以上步骤,你就可以使用 'mcp_server' 插件构建一个有效的 MCP 服务器,并将其配置到兼容的 MCP 客户端中使用。 更详细的功能和高级用法,请参考 'README.md' 文档和示例代码。
信息
分类
开发者工具