项目简介

Effect MCP Servers CLI 是一个基于 Model Context Protocol (MCP) 的服务器集合,通过命令行界面 (CLI) 统一暴露。目前包含两个核心服务器:

  • Fetch Server: 提供从互联网抓取网页内容的功能,并能提取网页正文,为 LLM 提供最新的网络信息。
  • Memory Server: 提供基于内存的知识图谱管理功能,允许 LLM 存储和检索结构化知识。

这两个服务器都实现了 MCP 协议,可以作为 LLM 应用的后端,提供标准化的上下文信息和工具调用能力。

主要功能点

  • Fetch Server

    • 网页抓取: 根据 URL 从互联网获取网页内容。
    • 正文提取: 自动提取网页中的主要内容,去除 HTML 标签和噪音,方便 LLM 理解。
    • robots.txt 检查: 在抓取网页前,会检查目标网站的 'robots.txt' 协议,遵守网站的抓取规则。
    • 内容截取: 支持限制返回内容的最大长度和起始位置,方便处理长网页。
    • 原始内容返回: 可以选择返回原始 HTML 内容,或提取后的纯文本内容。
  • Memory Server

    • 知识图谱管理: 在内存中构建和管理知识图谱,包括实体、关系和观察。
    • 实体管理: 创建、删除实体,支持为实体添加多种类型的观察内容。
    • 关系管理: 创建、删除实体之间的关系,支持定义关系类型。
    • 观察管理: 为实体添加、删除观察内容,支持文本类型的观察。
    • 知识图谱查询: 支持关键词搜索实体和关系,以及根据实体名称打开相关节点。
    • 数据持久化: 知识图谱数据默认存储在 'memory.json' 文件中,支持通过环境变量 'MEMORY_FILE_PATH' 自定义存储路径。

安装步骤

  1. 安装 Node.js 和 npm: 确保你的系统中安装了 Node.js 和 npm (Node Package Manager)。你可以从 nodejs.org 下载并安装。

  2. 克隆仓库: 使用 git 克隆该 GitHub 仓库到本地:

    git clone https://github.com/jpowersdev/mcp.git
    cd mcp
  3. 安装依赖: 在仓库根目录下运行 npm 命令安装项目依赖:

    npm install
  4. 构建项目: 运行 npm 命令构建项目:

    npm run build

    构建成功后,会在项目根目录下生成 'dist' 目录,包含构建后的服务器代码。

服务器配置

MCP 客户端需要配置服务器的启动命令和参数才能连接到 MCP 服务器。以下是针对 'Fetch Server' 和 'Memory Server' 的配置信息示例 (JSON 格式):

Fetch Server 配置

{
  "serverName": "fetch-server",
  "command": "node",
  "args": [
    "./dist/bin.cjs",
    "fetch"
  ],
  "description": "用于抓取网页内容的 MCP 服务器"
}
  • 'serverName': 服务器名称,可以自定义。
  • 'command': 启动服务器的命令,这里使用 'node' 运行 Node.js 程序。
  • 'args': 命令参数,'"./dist/bin.cjs"' 指向构建后的 CLI 程序入口文件, '"fetch"' 子命令指定运行 Fetch Server。
  • 'description': 服务器描述,方便客户端识别。

Memory Server 配置

{
  "serverName": "memory-server",
  "command": "node",
  "args": [
    "./dist/bin.cjs",
    "memory"
  ],
  "description": "用于内存知识图谱管理的 MCP 服务器"
}
  • 配置项含义同 Fetch Server, '"memory"' 子命令指定运行 Memory Server。

环境变量配置 (Memory Server)

Memory Server 默认将知识图谱数据存储在项目运行目录下的 'memory.json' 文件中。你可以通过设置环境变量 'MEMORY_FILE_PATH' 来自定义数据存储路径。

例如,在 Linux 或 macOS 系统中,可以在启动 Memory Server 前设置环境变量:

export MEMORY_FILE_PATH=/path/to/your/memory_graph.json
node dist/bin.cjs memory

在 Windows 系统中,可以使用 'set' 命令设置环境变量:

set MEMORY_FILE_PATH=C:\path\to\your\memory_graph.json
node dist\bin.cjs memory

基本使用方法

  1. 启动服务器: 根据你选择的服务器类型 (Fetch Server 或 Memory Server),使用相应的配置信息和命令启动服务器。例如,启动 Fetch Server:

    node dist/bin.cjs fetch

    启动 Memory Server:

    node dist/bin.cjs memory

    服务器成功启动后,会在控制台输出 "Fetch MCP Server running on stdio" 或 "Knowledge Graph MCP Server running on stdio" 提示信息。

  2. 配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到已启动的 MCP 服务器。你需要提供服务器的名称、启动命令、参数等信息,这些信息需要与上面 服务器配置 章节中的配置保持一致。

  3. 使用 LLM 调用工具: 在 LLM 应用中,你可以通过 MCP 客户端调用 MCP 服务器提供的工具,例如:

    • 使用 Fetch Server 的 'fetch' 工具抓取网页内容。
    • 使用 Memory Server 的工具进行知识图谱的增删改查操作。

    具体的工具调用方法和参数,请参考各个服务器提供的 'ListTools' 接口返回的工具描述和输入 Schema。

示例:使用 Fetch Server 的 'fetch' 工具 (假设已配置好 MCP 客户端)

假设你的 MCP 客户端已经连接到 Fetch Server,你可以指示 LLM 调用 'fetch' 工具来获取指定 URL 的网页内容。例如,你可以在提示词中指示 LLM 执行以下操作:

请使用 fetch 工具抓取 https://www.example.com 的内容。

MCP 客户端会将这个请求转换为对 Fetch Server 'fetch' 工具的调用,并将抓取到的内容返回给 LLM。

示例:使用 Memory Server 的 'create_entities' 工具 (假设已配置好 MCP 客户端)

指示 LLM 使用 'create_entities' 工具在知识图谱中创建新的实体:

请使用 create_entities 工具创建两个实体,一个名字是 "苹果公司",类型是 "公司",观察是 "一家科技公司";另一个名字是 "史蒂夫·乔布斯",类型是 "人物",观察是 "苹果公司的创始人"。

MCP 客户端会将这个请求转换为对 Memory Server 'create_entities' 工具的调用,并将操作结果返回给 LLM。

注意事项

  • Effect.js: 本项目使用了 Effect.js 框架,代码风格可能与传统的 Node.js 项目有所不同。
  • Stdio 传输: 本项目使用 Stdio (标准输入输出) 作为 MCP 服务器的传输协议,适用于本地或同一机器上的客户端-服务器通信。
  • 错误日志: 服务器运行过程中产生的错误信息会输出到标准错误 (stderr)。

信息

分类

网页与API