项目简介
这是一个实现模型上下文协议(Model Context Protocol - MCP)的服务器项目。它允许大型语言模型(LLM)客户端通过标准的MCP接口与 pub.dev(Dart和Flutter的软件包仓库)进行交互。
主要功能点
- 搜索软件包: 允许用户(通过LLM客户端)在pub.dev上搜索Dart和Flutter软件包。
- 获取软件包详情: 提供获取特定软件包详细信息的能力,包括最新版本、描述、项目链接(Homepage, Repository, Issue Tracker)、依赖列表(标准、开发、覆盖)、软件包评分(Likes, Pub Points, Popularity)以及最近的版本历史。
安装步骤
- 安装 Dart SDK: 如果您尚未安装 Dart SDK,请按照 Dart 安装指南 进行安装。
- 克隆仓库:
git clone <repository_url> cd pub_dev_mcp - 获取依赖: 运行以下命令下载项目所需的依赖库:
dart pub get - 运行服务器: 服务器使用 Stdio(标准输入输出)进行通信。运行以下命令启动服务器:
服务器启动后会打印 'Pub.dev MCP Server listening on stdio...' 表示已准备就绪。dart run bin/pub_dev_mcp.dart - (可选)编译为可执行文件: 您可以将服务器编译成独立的二进制文件,方便部署和使用:
然后运行编译好的可执行文件:dart compile exe bin/pub_dev_mcp.dart -o pub_dev_mcp_server./pub_dev_mcp_server
服务器配置
要让支持MCP协议的客户端(如某些LLM应用程序或开发工具)连接到这个服务器,您需要提供一个JSON格式的配置。这个配置告诉客户端如何启动并与服务器通信。
以下是两种常见的配置示例:
使用 'dart run' 方式启动服务器的配置:
{ "name": "Pub.dev Server (Dart Run)", "transport": { "type": "stdio", "command": "dart", "args": ["run", "bin/pub_dev_mcp.dart"], "cwd": "/path/to/your/pub_dev_mcp_project_directory" } }
- 'name': 服务器在客户端界面显示的名称。
- 'transport.type': 通信方式,这里是 'stdio'(标准输入输出)。
- 'transport.command': 启动服务器进程的命令,这里是 'dart' 可执行文件。
- 'transport.args': 传递给命令的参数,这里是 'run bin/pub_dev_mcp.dart',表示运行项目中的主文件。
- 'transport.cwd': 启动命令时的工作目录,需要设置为您克隆的 'pub_dev_mcp' 项目的路径。请将 '/path/to/your/pub_dev_mcp_project_directory' 替换为实际路径。
使用编译后的可执行文件启动服务器的配置:
{ "name": "Pub.dev Server (Executable)", "transport": { "type": "stdio", "command": "/path/to/your/pub_dev_mcp_project_directory/pub_dev_mcp_server", "args": [], "cwd": "/path/to/your/pub_dev_mcp_project_directory" } }
- 'name': 服务器在客户端界面显示的名称。
- 'transport.type': 通信方式,这里是 'stdio'。
- 'transport.command': 启动服务器进程的命令,这里是编译生成的可执行文件的完整路径。
- 'transport.args': 传递给命令的参数,这里为空数组,因为可执行文件不需要额外参数。
- 'transport.cwd': 启动命令时的工作目录,通常设置为可执行文件所在的目录或项目根目录。请将 '/path/to/your/pub_dev_mcp_project_directory' 替换为实际路径。
请确保您在客户端配置中提供的 'command' 和 'cwd' 路径是准确的,指向您本地的服务器文件位置。
基本使用方法
一旦MCP客户端成功连接到 Pub.dev MCP 服务器,LLM或其他客户端组件就可以通过标准的JSON-RPC请求调用服务器提供的工具(Tools)。
目前提供的工具包括:
- 'searchPubDev': 用于搜索pub.dev上的软件包,需要提供搜索关键词等参数。
- 'getPackageDetails': 用于获取特定软件包的详细信息,需要提供软件包名称。
具体的调用方式和参数格式由您使用的MCP客户端决定,客户端会根据服务器的能力声明(Capabilities)了解可用的工具及其输入输出规范。
信息
分类
开发者工具