项目简介
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' 自定义存储路径。
安装步骤
-
安装 Node.js 和 npm: 确保你的系统中安装了 Node.js 和 npm (Node Package Manager)。你可以从 nodejs.org 下载并安装。
-
克隆仓库: 使用 git 克隆该 GitHub 仓库到本地:
git clone https://github.com/jpowersdev/mcp.git cd mcp -
安装依赖: 在仓库根目录下运行 npm 命令安装项目依赖:
npm install -
构建项目: 运行 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
基本使用方法
-
启动服务器: 根据你选择的服务器类型 (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" 提示信息。
-
配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到已启动的 MCP 服务器。你需要提供服务器的名称、启动命令、参数等信息,这些信息需要与上面 服务器配置 章节中的配置保持一致。
-
使用 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