使用说明
项目简介
mcp-d 是一个使用 D 语言实现的 Model Context Protocol (MCP) 服务器库。它旨在帮助开发者快速构建 MCP 服务器,为 AI 语言模型提供资源管理、工具调用和 Prompt 模板等功能,并通过标准的 MCP 协议与客户端进行通信。该库专注于 stdio 传输,并提供了类型安全的 API 和丰富的功能特性。
主要功能点
- 资源管理: 支持静态资源、动态资源和模板资源,允许服务器托管和管理各种类型的数据,并按需提供给 LLM 客户端。
- 工具注册与执行: 允许注册外部功能作为工具,并定义工具的输入参数 Schema,使 LLM 客户端可以安全地调用这些工具执行特定任务。
- Prompt 模板: 支持定义和渲染 Prompt 模板,包括文本、图像和资源内容,实现可定制的 LLM 交互模式。
- 变更通知: 支持资源和 Prompt 的变更通知,当服务器端数据更新时,可以及时通知客户端。
- Schema 构建器: 提供类型安全的 Schema 构建器,方便开发者定义工具参数和数据结构。
- 自定义传输协议: 默认使用 stdio 传输,但也支持自定义传输协议的实现,具有良好的扩展性。
安装步骤
- 安装 D 语言环境: 确保你的系统已安装 D 语言环境 (DMD, GDC 或 LDC) 和 Dub 包管理器。
- 添加依赖: 在你的 D 项目的 'dub.json' 文件中添加 'mcp-d' 依赖:
{ "dependencies": { "mcp": "~>0.1.0" } } - 获取依赖: 运行 'dub get' 命令下载并安装 'mcp-d' 库。
服务器配置
MCP 客户端需要配置以下 JSON 信息以连接到 mcp-d 服务器。请注意,以下配置为基础示例,你需要根据实际部署情况修改 'command' 和 'args' 字段。
{ "serverName": "My MCP Server", // MCP 服务器名称,与服务器代码中 MCPServer 构造函数的 serverName 参数一致 "command": "path/to/your/executable", // MCP 服务器可执行文件的路径。你需要先编译 D 代码生成可执行文件,并替换此处的路径。例如,如果使用 dub run 运行,则需要指定 dub 生成的可执行文件路径。 "args": [], // 启动服务器可执行文件时传递的命令行参数,当前示例无需参数 "transport": "stdio" // 指定传输协议为 stdio }
配置说明:
- 'serverName': MCP 服务器的名称,这个名称应该与你在 'MCPServer' 实例化时提供的名称一致。客户端可能会使用这个名称来识别服务器。
- 'command': 重要。这是 MCP 服务器可执行文件的完整路径。你需要先使用 'dub build' 命令编译 D 代码,然后在 'bin' 目录下找到生成的可执行文件(例如,在 Linux 或 macOS 上可能是 'bin/your_project_name',在 Windows 上可能是 'bin/your_project_name.exe')。将此路径替换 'path/to/your/executable'。
- 'args': 如果你的 MCP 服务器程序需要任何命令行参数才能启动,你可以在这里以字符串数组的形式提供。本示例中的服务器代码没有使用命令行参数,因此这里为空数组 '[]'。
- 'transport': 指定客户端与服务器通信使用的传输协议。对于 'mcp-d' 默认配置,以及示例代码,这里应该设置为 '"stdio"'。
重要提示: 在配置 'command' 字段时,请确保路径正确,并且 MCP 客户端有权限执行该文件。你需要根据你的 D 项目编译输出路径,以及你的操作系统来确定正确的可执行文件路径。
基本使用方法
- 编写 D 语言 MCP 服务器代码: 参考仓库 'README.md' 中的 "Usage" 部分的代码示例,编写你的 D 语言 MCP 服务器程序,定义你的工具、资源和 Prompt。
- 编译 D 代码: 使用 'dub build' 命令编译你的 D 语言项目,生成可执行文件。
- 配置 MCP 客户端: 根据 "服务器配置" 部分的说明,配置 MCP 客户端的连接信息,确保 'command' 字段指向你编译生成的可执行文件。
- 启动 MCP 服务器: 当 MCP 客户端尝试连接时,它会根据配置的 'command' 和 'args' 启动你的 D 语言 MCP 服务器程序。
- 客户端与服务器交互: 客户端将通过 stdio 与服务器进行 JSON-RPC 通信,调用工具、访问资源和获取 Prompt,实现 MCP 协议定义的功能。
信息
分类
AI与计算