Doramagic 项目包 · 项目说明书

servers 项目

生成时间:2026-05-11 07:54:27 UTC

项目简介

Model Context Protocol Servers(简称 MCP Servers)是一个开源的服务器集合仓库,为 Model Context Protocol (MCP) 提供标准化的工具、资源和提示实现。该项目由 Model Context Protocol 团队维护,旨在为 AI 助手(如 Claude)提供可扩展的上下文访问能力。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 服务器类型分布

继续阅读本节完整说明和来源证据。

章节 目录结构

继续阅读本节完整说明和来源证据。

章节 TypeScript 服务器要求

继续阅读本节完整说明和来源证据。

项目概述

Model Context Protocol Servers(简称 MCP Servers)是一个开源的服务器集合仓库,为 Model Context Protocol (MCP) 提供标准化的工具、资源和提示实现。该项目由 Model Context Protocol 团队维护,旨在为 AI 助手(如 Claude)提供可扩展的上下文访问能力。

项目仓库地址:https://github.com/modelcontextprotocol/servers

资料来源:README.md

核心功能

MCP Servers 提供了多种类型的服务器实现,使 AI 模型能够:

功能类型说明
文件系统访问读写本地文件、目录操作、文件搜索
网络内容获取抓取网页内容、支持 robots.txt 配置
时间与时区获取当前时间、时区转换
知识图谱存储实体关系管理、持久化记忆
通用工具综合测试服务器
顺序推理结构化思维推理能力

资料来源:CLAUDE.md

技术架构

服务器类型分布

项目包含两大技术栈的服务器实现:

graph TD
    A[MCP Servers 仓库] --> B[TypeScript 服务器]
    A --> C[Python 服务器]
    
    B --> B1[everything]
    B --> B2[filesystem]
    B --> B3[memory]
    B --> B4[sequential-thinking]
    
    C --> C1[fetch]
    C --> C2[time]

目录结构

servers/
├── src/
│   ├── everything/          # TypeScript 综合测试服务器
│   ├── filesystem/          # TypeScript 文件系统服务器
│   ├── memory/              # TypeScript 知识图谱服务器
│   ├── sequential-thinking/ # TypeScript 顺序推理服务器
│   ├── fetch/               # Python 网页抓取服务器
│   └── time/                # Python 时间服务器
├── README.md
├── package.json
└── CLAUDE.md

资料来源:README.md

支持的客户端

MCP Servers 可与多种 AI 客户端集成:

客户端支持的安装方式
Claude Desktopuvx、pip、npm/npx、Docker
VS Code一键安装按钮、uvx、npx
Zeduvx、pip
Zencoderuvx
Codex CLInpx

资料来源:src/fetch/README.md, src/filesystem/README.md, src/time/README.md

开发规范

TypeScript 服务器要求

规范项要求
目标环境ES2022, Node16
模块系统ES modules
类型检查严格模式
测试框架vitest + @vitest/coverage-v8
输入验证Zod schemas
缩进2 空格
命名规范变量/函数 camelCase,类型/类 PascalCase,常量 UPPER_CASE
文件命名kebab-case
工具命名动词优先 (如 get-file-info)

Python 服务器要求

规范项要求
Python 版本>= 3.10
构建系统hatchling
包管理器uv
测试框架pytest
类型检查pyright
代码检查ruff

资料来源:CLAUDE.md

快速开始

使用 uvx 运行(推荐)

{
  "mcpServers": {
    "server-name": {
      "command": "uvx",
      "args": ["mcp-server-name"]
    }
  }
}

使用 Docker 运行

{
  "mcpServers": {
    "server-name": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "mcp/server-name"]
    }
  }
}

本地开发

# TypeScript 服务器
cd src/<server-name>
npm install
npm run build

# Python 服务器
cd src/<server-name>
uv sync --frozen --all-extras --dev
uv run pytest

资料来源:CLAUDE.md, src/fetch/README.md

主要服务器介绍

文件系统服务器 (filesystem)

提供安全的本地文件系统访问能力,支持以下工具:

工具名称功能
read_file读取单个文件内容
read_multiple_files批量读取多个文件
write_file创建或覆盖文件
edit_file编辑文件内容
move_file移动/重命名文件
list_directory列出目录内容
search_files搜索文件
get_file_info获取文件元信息

文件系统服务器支持配置只读目录,通过 ro 标志限制写入权限。

资料来源:src/filesystem/README.md

时间服务器 (time)

提供时间和时区相关功能:

  • get_current_time: 获取当前时间(支持指定时区)
  • convert_time: 时区时间转换

支持通过 --local-timezone 参数自定义本地时区。

资料来源:src/time/README.md

记忆服务器 (memory)

基于知识图谱的持久化存储系统:

工具名称功能
create_entities创建实体
create_relations创建实体关系
add_observations添加实体观察
delete_entities删除实体
delete_observations删除观察记录

存储格式为 JSONL,可通过 MEMORY_FILE_PATH 环境变量自定义存储路径。

资料来源:src/memory/README.md

配置示例

Claude Desktop 配置

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "${workspaceFolder}"]
    },
    "fetch": {
      "command": "python",
      "args": ["-m", "mcp_server_fetch"]
    }
  }
}

VS Code 配置

通过一键安装按钮或手动配置 JSON:

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}

Windows 特殊配置

Windows 系统可能需要设置环境变量解决字符编码问题:

{
  "mcpServers": {
    "server-name": {
      "command": "uvx",
      "args": ["mcp-server-name"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

资料来源:src/fetch/README.md, src/filesystem/README.md

许可协议

本项目采用 MIT License 开源许可协议,允许自由使用、修改和分发软件。

资料来源:src/sequentialthinking/README.md, src/filesystem/README.md

参与贡献

欢迎提交 Pull Request 贡献代码、修复问题或增强功能。项目接受以下类型的贡献:

  • 错误修复
  • 可用性改进
  • 新功能开发
  • 文档完善

建议查看其他 MCP 服务器的实现模式和最佳实践作为参考。

资料来源:src/fetch/README.md, CLAUDE.md

资料来源:[README.md]()

仓库结构与构建系统

Model Context Protocol (MCP) Servers 仓库是一个多包 Monorepo,托管于 GitHub (https://github.com/modelcontextprotocol/servers),旨在提供标准化的 MCP 服务器实现。该仓库包含多个独立发布的 MCP 服务器,每个服务器封装特定功能域,如文件系统访问、内存管理、HTTP 请求...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 整体结构

继续阅读本节完整说明和来源证据。

章节 服务器包类型

继续阅读本节完整说明和来源证据。

章节 构建工具链

继续阅读本节完整说明和来源证据。

概述

Model Context Protocol (MCP) Servers 仓库是一个多包 Monorepo,托管于 GitHub (https://github.com/modelcontextprotocol/servers),旨在提供标准化的 MCP 服务器实现。该仓库包含多个独立发布的 MCP 服务器,每个服务器封装特定功能域,如文件系统访问、内存管理、HTTP 请求抓取等。

仓库采用 TypeScript 作为主要开发语言,使用 npm 作为包管理器和构建工具,并通过统一的构建系统确保各服务器的一致性和可维护性。

仓库架构

整体结构

MCP Servers 仓库采用分层目录结构,每个子目录代表一个独立的 MCP 服务器包:

modelcontextprotocol/servers/
├── src/
│   ├── everything/      # 全功能演示服务器
│   ├── filesystem/      # 文件系统访问服务器
│   ├── memory/          # 知识图谱内存服务器
│   ├── fetch/           # HTTP 请求抓取服务器
│   ├── time/            # 时间信息服务器
│   ├── sequentialthinking/  # 顺序推理服务器
│   └── ...              # 其他服务器
├── scripts/             # 构建和发布脚本
├── CLAUDE.md            # AI 辅助开发指南
└── package.json         # 根级配置(可选)

服务器包类型

包名称类型主要语言传输协议支持
server-everything全功能演示TypeScriptstdio, SSE, Streamable HTTP
server-filesystem功能型TypeScriptstdio
server-memory功能型TypeScriptstdio
server-fetch功能型Pythonstdio
server-time功能型Pythonstdio
server-sequentialthinking功能型TypeScriptstdio

构建系统

构建工具链

各 TypeScript 服务器使用统一的构建工具链:

工具用途配置位置
TypeScript (tsc)TypeScript 编译tsconfig.json
Vitest单元测试与覆盖率vitest.config.ts
shx跨平台 Shell 命令-
Prettier代码格式化.prettierrc

标准构建流程

每个 TypeScript 服务器包定义了标准化的 npm 构建脚本:

{
  "scripts": {
    "build": "tsc && shx chmod +x dist/*.js",
    "prepare": "npm run build",
    "watch": "tsc --watch",
    "test": "vitest run --coverage"
  }
}

构建流程包含以下步骤:

graph TD
    A[TypeScript 源码] --> B[tsc 编译]
    B --> C{编译成功?}
    C -->|是| D[复制资源文件]
    C -->|否| E[输出错误]
    D --> F[设置可执行权限]
    F --> G[生成 dist/ 目录]
    G --> H[prepare 钩子触发]

资料来源src/everything/package.json:16-19

包发布配置

服务器包通过 npm 的标准字段定义发布信息:

{
  "name": "@modelcontextprotocol/server-everything",
  "version": "2.0.0",
  "description": "MCP server that exercises all the features of the MCP protocol",
  "type": "module",
  "bin": {
    "mcp-server-everything": "dist/index.js"
  },
  "files": ["dist"]
}

资料来源src/everything/package.json:1-12

服务器注册模式

MCP 服务器遵循统一的架构模式进行功能注册:

核心注册函数

注册函数功能适用服务器
registerTools(server)注册工具能力所有服务器
registerResources(server)注册资源能力所有服务器
registerPrompts(server)注册提示模板部分服务器
registerResourceTemplates(server)注册资源模板部分服务器

服务器初始化流程

graph TD
    A[创建 McpServer 实例] --> B[加载配置参数]
    B --> C[registerTools 调用]
    C --> D[registerResources 调用]
    D --> E[registerPrompts 调用]
    E --> F[初始化传输层]
    F --> G[启动服务器]

资料来源CLAUDE.md:14-15

工具注解规范

根据 MCP 规范,工具应设置以下注解以提供语义信息:

{
  annotations: {
    readOnlyHint: boolean,      // 是否只读
    idempotentHint: boolean,    // 是否幂等
    destructiveHint: boolean    // 是否具有破坏性
  }
}

资料来源CLAUDE.md:17-19

传输层支持

传输协议类型

协议状态启动参数说明
stdio✅ 稳定stdio标准输入输出,默认协议
SSE⚠️ 已弃用sseServer-Sent Events,自 2025-03-26 起弃用
Streamable HTTP✅ 稳定streamableHttpHTTP 流式传输,当前推荐

启动命令示例

# 启动 stdio 服务器(默认)
npx @modelcontextprotocol/server-everything

# 启动 SSE 服务器
npx @modelcontextprotocol/server-everything sse

# 启动 Streamable HTTP 服务器
npx @modelcontextprotocol/server-everything streamableHttp

资料来源src/everything/package.json:21-23

依赖管理

核心依赖

所有 TypeScript MCP 服务器共享以下核心依赖:

{
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.26.0"
  }
}

可选功能依赖

服务器额外依赖用途
filesystemdiff, glob, minimatch, zod-to-json-schema文件操作与模式匹配
sequentialthinkingchalk, yargs命令行输出与参数解析
fetchhttpx, trafilaturaHTTP 请求与内容提取
everythingcors跨域资源共享

资料来源src/filesystem/package.json:26-31

开发工作流

本地开发

# 克隆仓库
git clone https://github.com/modelcontextprotocol/servers.git
cd servers

# 进入服务器目录
cd src/everything

# 安装依赖
npm install

# 监听模式开发
npm run watch

# 运行测试
npm test

测试框架

使用 Vitest 进行测试,测试命令为:

npm test
# 等价于: vitest run --coverage

资料来源src/everything/package.json:24

代码质量

# 格式化检查
npm run prettier:check

# 自动格式化
npm run prettier:fix

目录结构规范

文件命名约定

类型命名规范示例
文件/变量camelCasefileName.ts, getUserData()
类型/类PascalCaseUserProfile, McpServer
常量UPPER_CASEMAX_RETRY_COUNT
文件名(kebab-case)kebab-caseresource-link.ts
工具名称kebab-case + 动词get-annotated-message

资料来源src/everything/AGENTS.md:4-6

模块组织

每个服务器遵循统一的模块划分:

src/<server-name>/
├── server/           # 服务器核心逻辑
│   ├── index.ts      # 主入口
│   └── logging.ts    # 日志工具
├── tools/            # 工具定义
│   └── index.ts      # 工具注册入口
├── resources/        # 资源定义
│   ├── index.ts      # 资源注册入口
│   └── subscriptions.ts  # 订阅机制
├── prompts/          # 提示模板
│   └── index.ts      # 提示注册入口
├── docs/             # 文档资源
├── dist/             # 编译输出
└── package.json      # 包配置

资料来源src/everything/AGENTS.md:15-26

扩展机制

添加新功能

扩展 MCP 服务器的标准流程:

  1. 创建模块:在对应目录(tools/resources/prompts)创建新文件
  2. 定义导出:导出 registerX(server) 函数
  3. 更新索引:在 index.ts 中导入并注册新模块
  4. 编写文档:更新 docs/ 目录下的相关文档
graph TD
    A[创建新模块文件] --> B[定义 registerX 函数]
    B --> C[导出模块]
    C --> D[更新 index.ts 导入]
    D --> E[注册到服务器]
    E --> F[测试功能]
    F --> G[更新文档]

资料来源src/everything/AGENTS.md:1-13

服务器工厂模式

服务器工厂位于 src/everything/server/index.ts,负责:

  • 初始化时注册所有功能
  • 处理连接后设置
  • 管理生命周期
// 工厂函数签名示例
export const createServer = (config: ServerConfig) => McpServer

构建系统配置示例

TypeScript 配置

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "outDir": "./dist",
    "rootDir": "./src",
    "strict": true
  }
}

NPM 脚本映射

脚本命令实际执行触发时机
npm install安装依赖项目初始化
npm run buildtsc + 权限设置发布前
npm run preparenpm run buildpostinstall
npm run testvitest run --coverage质量检查

资料来源src/everything/package.json:18 资料来源src/memory/package.json:16

快速参考

服务器构建检查清单

  • [ ] TypeScript 编译无错误
  • [ ] 所有测试通过 (npm test)
  • [ ] 代码格式正确 (npm run prettier:check)
  • [ ] package.json 字段完整
  • [ ] README.md 文档更新
  • [ ] 发布版本号正确

常用命令速查

# 构建所有更改
npm run build

# 运行测试
npm test

# 启动 stdio 传输
npm run start:stdio

# 启动 SSE 传输
npm run start:sse

# 启动 Streamable HTTP 传输
npm run start:streamableHttp

总结

MCP Servers 仓库采用成熟的 Monorepo 架构,通过统一的 TypeScript 构建系统和标准化的模块注册模式,实现了多个 MCP 服务器的高效开发和维护。仓库设计遵循清晰的目录规范和命名约定,便于社区贡献和功能扩展。所有服务器共享核心 SDK 依赖,同时保持各自功能域的独立性,通过标准化的传输层接口与 MCP 客户端通信。

来源:https://github.com/modelcontextprotocol/servers / 项目说明书

Everything 服务器架构

Everything 服务器是 Model Context Protocol (MCP) 服务器生态中的核心组件之一,旨在提供一个功能全面的参考实现。该服务器作为一个功能展示平台,演示了 MCP 协议的各种能力,包括工具调用、资源管理、提示模板以及多种传输协议支持。Everything 服务器采用模块化架构设计,允许开发者在此基础上进行扩展和定制,以满足特定的业务需求。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 模块化组织

继续阅读本节完整说明和来源证据。

章节 扩展点机制

继续阅读本节完整说明和来源证据。

章节 服务器工厂

继续阅读本节完整说明和来源证据。

概述

Everything 服务器是 Model Context Protocol (MCP) 服务器生态中的核心组件之一,旨在提供一个功能全面的参考实现。该服务器作为一个功能展示平台,演示了 MCP 协议的各种能力,包括工具调用、资源管理、提示模板以及多种传输协议支持。Everything 服务器采用模块化架构设计,允许开发者在此基础上进行扩展和定制,以满足特定的业务需求。

该服务器的核心价值在于其示范性——它展示了如何正确实现 MCP 协议的各种特性,同时也是开发新服务器时的参考模板。通过研究 Everything 服务器的架构和实现,开发者可以深入理解 MCP 协议的设计理念和最佳实践。

架构设计原则

Everything 服务器的架构设计遵循一系列明确的原则,这些原则确保了代码的可维护性、可扩展性和一致性。

模块化组织

服务器采用高度模块化的组织结构,每个功能域都有明确的职责边界。工具(Tools)、资源(Resources)和提示(Prompts)分别位于独立的目录下,通过统一的注册接口与主服务器集成。这种组织方式使得添加新功能变得简单直接,同时降低了代码耦合度,提高了测试的可覆盖性。

核心模块包括:

扩展点机制

Everything 服务器被设计为可在明确的扩展点进行定制。服务器工厂位于 src/everything/server/index.ts,负责在启动时注册所有功能组件,并处理连接后的设置工作。资料来源:src/everything/AGENTS.md:1-20

核心组件

服务器工厂

服务器工厂是 Everything 服务器的中央协调器,负责初始化 MCP 服务器实例并注册所有功能模块。工厂函数接收配置参数,返回配置完整的服务器实例。

// 核心架构伪代码
export function createServer(config: ServerConfig): McpServer {
  const server = new McpServer(config);
  registerTools(server);
  registerResources(server);
  registerPrompts(server);
  return server;
}

工具系统

工具是 Everything 服务器提供的核心功能之一。每个工具都是一个独立的模块,遵循统一的注册模式。工具的命名规范要求使用 kebab-case 格式,并以动词开头,例如 get-annotated-message 而不是 annotated-message。资料来源:src/everything/AGENTS.md:10-12

#### 工具注册模式

所有工具必须导出 registerX(server) 函数,该函数接收 MCP SDK 服务器实例并注册相应的工具。工具定义包含以下关键属性:

属性说明示例
name工具名称(kebab-case)get-file-info
description功能描述工具用途说明
inputSchema输入参数 schemaZod schema 定义
outputSchema输出结果 schema返回值结构定义
annotations提示注解readOnlyHint、idempotentHint 等

#### 工具注解系统

MCP 协议定义了工具的重要注解,用于向客户端传达工具的行为特性:

工具名称readOnlyHintidempotentHintdestructiveHint说明
read_filetrue--纯读取操作
read_multiple_filestrue--批量读取
list_directorytrue--列表操作
write_filefalsetruetrue覆盖写入
edit_filefalsefalsetrue编辑可能重复应用
move_filefalsefalsetrue移动操作会删除源文件

资料来源:src/filesystem/index.ts:1-50

资源系统

资源系统允许服务器提供可寻址的数据内容。Everything 服务器实现了动态资源注册机制,支持文本和二进制两种资源类型。

#### 资源注册流程

export const registerSessionResource = (
  server: McpServer,
  resource: Resource,
  type: "text" | "blob",
  payload: string
): ResourceLink => {
  // 检查是否已存在同名资源,如存在则移除
  const existingResource = registeredResources.get(uri);
  if (existingResource) {
    existingResource.remove();
    registeredResources.delete(uri);
  }

  // 注册新资源
  const registeredResource = server.registerResource(
    name,
    uri,
    { mimeType, description, title, annotations, icons, _meta },
    async () => {
      return {
        contents: [resourceContent],
      };
    }
  );

  // 跟踪已注册资源以便后续移除
  registeredResources.set(uri, registeredResource);

  return { type: "resource_link", ...resource };
};

资料来源:src/everything/resources/session.ts:1-65

提示模板

提示(Prompts)为预定义的交互模板,可被客户端调用。每个提示定义包含名称、描述、参数 schema 和生成逻辑。提示模板存储在 src/everything/prompts/ 目录下。

订阅与更新机制

Everything 服务器实现了资源订阅功能,允许客户端订阅特定资源的变化。订阅例程位于 src/everything/resources/subscriptions.ts,支持模拟更新推送。资料来源:src/everything/AGENTS.md:15

日志系统

日志辅助模块位于 src/everything/server/logging.ts,提供统一的日志记录接口。日志系统与服务器核心 (src/everything/server/index.ts) 紧密集成,同时也应用于订阅模块。资料来源:src/everything/AGENTS.md:16

传输协议支持

Everything 服务器支持多种传输协议,以适应不同的部署场景和客户端需求。

标准输入输出 (stdio)

stdio 是默认的传输方式,适用于命令行工具和本地集成场景。服务器通过标准输入输出流进行 JSON-RPC 通信。

服务器发送事件 (SSE)

SSE 传输支持服务器向客户端推送事件。启用方式:

npx @modelcontextprotocol/server-everything sse

从源码运行 SSE 服务器:

cd src/everything
npm install
npm run start:sse

资料来源:src/everything/README.md:1-30

流式 HTTP (Streamable HTTP)

流式 HTTP 传输是自 2025-03-26 起推荐的传输方式,取代了 SSE。运行命令:

npx @modelcontextprotocol/server-everything streamableHttp

从源码运行:

cd src/everything
npm install
npm run start:streamableHttp

资料来源:src/everything/README.md:1-30

graph TD
    A[客户端] --> B{传输协议选择}
    B --> C[stdio]
    B --> D[SSE]
    B --> E[Streamable HTTP]
    C --> F[标准输入输出通信]
    D --> G[HTTP + Server-Sent Events]
    E --> H[流式 HTTP 响应]
    F --> I[MCP 服务器]
    G --> I
    H --> I

目录结构

Everything 服务器遵循标准的 TypeScript 项目结构,目录组织如下:

src/everything/
├── server/
│   ├── index.ts          # 服务器工厂
│   └── logging.ts        # 日志辅助
├── tools/
│   ├── index.ts          # 工具注册入口
│   └── *.ts              # 各工具实现
├── resources/
│   ├── index.ts          # 资源注册入口
│   ├── session.ts        # 会话资源
│   └── subscriptions.ts  # 订阅管理
├── prompts/
│   ├── index.ts          # 提示注册入口
│   └── *.ts              # 提示模板
├── transports/
│   └── *.ts              # 传输协议实现
├── docs/
│   ├── architecture.md   # 架构文档
│   ├── structure.md      # 项目结构
│   ├── features.md       # 功能说明
│   └── extension.md      # 扩展指南
└── package.json

资料来源:src/everything/AGENTS.md:1-25

类型命名规范

Everything 服务器对不同类型的代码元素采用了明确的命名约定,这些规范确保了代码库的一致性和可读性:

类型命名风格示例
变量和函数camelCasereadMultipleFiles, getFileInfo
类型和类PascalCaseMcpServer, ResourceLink
常量UPPER_CASEDEFAULT_TIMEOUT, MAX_RETRIES
文件名kebab-caseget-roots-list.ts, session.ts
注册的工具/提示/资源kebab-caseget-file-info, list-directory

资料来源:src/everything/AGENTS.md:7-11

扩展指南

添加新工具

添加新工具的步骤如下:

  1. src/everything/tools/ 目录下创建新的工具文件,命名使用 kebab-case
  2. 定义工具的 Zod schema,确保包含准确的描述和示例
  3. 导出 registerXxx(server) 函数
  4. tools/index.ts 中导入并调用新工具的注册函数

工具 schema 应遵循 JSON Schema 标准,包含完整的类型定义和验证规则。

添加新资源

资源扩展遵循类似的模式:

  1. src/everything/resources/ 下创建资源模块
  2. 实现资源内容的生成逻辑
  3. 导出注册函数并在 resources/index.ts 中集成

添加新提示

提示模板的添加流程:

  1. src/everything/prompts/ 下创建提示定义
  2. 定义提示参数 schema
  3. 实现提示内容生成函数
  4. prompts/index.ts 中注册

MCP 协议特性演示

Everything 服务器作为功能展示平台,演示了 MCP 协议的多个核心特性:

根目录 (Roots) 支持

服务器实现了根目录协议能力,通过 get-roots-list 工具展示根目录的使用方式。根目录由 MCP 客户端提供,可供需要文件系统访问的服务器使用。资料来源:src/everything/tools/get-roots-list.ts:1-60

// 根目录列表输出格式
return {
  content: [
    {
      type: "text",
      text: `Current MCP Roots (${currentRoots!.length} total):\n\n${rootsList}\n\n` +
        "Note: This server demonstrates the roots protocol capability..."
    },
  ],
};

资源注解

服务器展示了对资源的注解支持,包括只读提示、可变性提示和唯一性提示。这些注解帮助客户端理解资源的行为特性。

双向通信

通过订阅机制,服务器可以主动向客户端推送更新,实现双向通信模式。

构建与部署

Docker 构建

docker build -t mcp/sequentialthinking -f src/sequentialthinking/Dockerfile .

从源码安装

npm install -g @modelcontextprotocol/server-everything@latest

开发模式

cd src/everything
npm install
npm run start:streamableHttp

许可证

Everything MCP 服务器采用 MIT 许可证授权,这意味着用户可以自由使用、修改和分发该软件,但需遵守 MIT 许可证的条款和条件。资料来源:src/everything/README.md

资料来源:[src/filesystem/index.ts:1-50]()

传输层与通信协议

Model Context Protocol (MCP) 服务器支持多种传输层协议,以适应不同的部署场景和客户端环境。传输层是 MCP 架构中的核心组件,负责在客户端与服务端之间建立通信通道、处理请求与响应的序列化与反序列化,以及管理连接生命周期。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 传输层选择决策流程

继续阅读本节完整说明和来源证据。

章节 工作原理

继续阅读本节完整说明和来源证据。

章节 启动命令

继续阅读本节完整说明和来源证据。

概述

Model Context Protocol (MCP) 服务器支持多种传输层协议,以适应不同的部署场景和客户端环境。传输层是 MCP 架构中的核心组件,负责在客户端与服务端之间建立通信通道、处理请求与响应的序列化与反序列化,以及管理连接生命周期。

MCP 服务器的传输层设计遵循以下核心原则:

设计原则说明
多协议支持同时支持 stdio、SSE 和 Streamable HTTP 等多种传输协议
环境适配针对不同运行环境(本地、容器化、远程)提供最优传输方案
协议演进从已弃用的 HTTP+SSE 过渡到标准化的 Streamable HTTP
标准化接口所有传输层实现遵循统一的 MCP 协议规范
资料来源:src/everything/README.md

传输层架构

MCP 服务器的传输层采用模块化设计,每种传输协议都有独立的实现模块。项目结构如下:

src/everything/
├── transports/
│   ├── stdio.ts           # 标准输入/输出传输
│   ├── sse.ts             # Server-Sent Events 传输
│   └── streamableHttp.ts  # 流式 HTTP 传输
├── server/
│   └── index.ts           # 服务器工厂,注册所有传输层
└── package.json
资料来源:src/everything/transports/stdio.ts

传输层选择决策流程

graph TD
    A[开始] --> B{运行环境}
    B -->|本地 Claude Desktop| C[Stdio 传输]
    B -->|Web/浏览器环境| D{SSE vs Streamable HTTP}
    B -->|VS Code / Zed| E{协议版本}
    D -->|旧版协议| F[SSE 传输]
    D -->|2025-03-26 后| G[Streamable HTTP]
    E -->|2025-03-26 前| F
    E -->|2025-03-26 后| H[Streamable HTTP]
    C --> I[进程间通信]
    F --> J[HTTP 长连接]
    G --> K[流式 HTTP 请求/响应]
    H --> K

Stdio 传输

工作原理

Stdio(标准输入/输出)是 MCP 服务器的默认传输方式,特别适用于本地进程间通信。当 MCP 客户端在本地启动服务器进程时,通过标准输入读取客户端请求,向标准输出写入服务端响应。

sequenceDiagram
    participant C as MCP 客户端
    participant S as MCP 服务器进程
    
    Note over C,S: 进程启动
    C->>S: 启动子进程,stdin/stdout 绑定
    C->>S: JSON-RPC 请求 (stdin)
    S->>S: 处理请求
    S->>C: JSON-RPC 响应 (stdout)
    C->>S: 下一个请求 (stdin)
    S->>C: 响应 (stdout)

启动命令

Stdio 传输是默认模式,无需显式指定:

# 默认使用 stdio
npx @modelcontextprotocol/server-everything

# 显式指定 stdio
npx @modelcontextprotocol/server-everything stdio

配置示例

Claude Desktop 配置:

{
  "mcpServers": {
    "everything": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-everything"]
    }
  }
}

Windows 系统配置:

{
  "mcpServers": {
    "everything": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@modelcontextprotocol/server-everything"]
    }
  }
}
资料来源:src/everything/README.md

SSE 传输

协议说明

Server-Sent Events (SSE) 是一种基于 HTTP 的单向通信协议,允许服务器主动向客户端推送数据。SSE 传输在 MCP 协议早期版本中被广泛使用。

状态说明

状态说明
弃用日期2025-03-26
当前状态已弃用,不建议新项目使用
替代方案Streamable HTTP
资料来源:src/everything/README.md

启动命令

cd src/everything
npm install
npm run start:sse

配置示例

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"]
    }
  }
}
资料来源:src/fetch/README.md

Streamable HTTP 传输

协议说明

Streamable HTTP 是 MCP 协议的当前标准传输方式,于 2025-03-26 正式成为规范定义的传输层。它支持请求/响应流式传输,提供了比 SSE 更灵活的双向通信能力。

工作原理

graph LR
    A[HTTP 客户端] -->|1. 建立连接| B[Streamable HTTP 服务器]
    A -->|2. 发送请求流| B
    B -->|3. 返回响应流| A
    A -->|4. 后续请求| B
    B -->|5. 持续响应| A

启动命令

cd src/everything
npm install
npm run start:streamableHttp

作为独立包运行

# 使用 npx 运行
npx @modelcontextprotocol/server-everything streamableHttp

# 全局安装后运行
npm install -g @modelcontextprotocol/server-everything@latest
资料来源:src/everything/README.md

传输层配置对比

各传输方式特性对比

特性StdioSSEStreamable HTTP
通信方向双向单向(服务端推送)双向流式
连接类型进程管道HTTP 长连接HTTP 流式
适用场景本地进程Web 推送Web 应用
延迟极低低至中
防火墙友好
标准化程度MCP 默认已弃用MCP 标准
状态活跃弃用活跃
资料来源:src/everything/transports/streamableHttp.ts

运行时环境配置

#### Docker 环境

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount", "type=bind,src=${workspaceFolder},dst=/projects/workspace",
        "mcp/filesystem",
        "/projects"
      ]
    }
  }
}
资料来源:src/filesystem/README.md

#### uvx 环境(Python 服务器)

{
  "mcpServers": {
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time"]
    }
  }
}
资料来源:src/time/README.md

工具注册与传输层集成

服务器启动流程

MCP 服务器在启动时通过服务器工厂注册传输层。以下是工具注册的典型模式:

server.registerTool(
  "write_file",
  {
    title: "Write File",
    description: "创建新文件或完全覆盖现有文件",
    inputSchema: { path: z.string(), content: z.string() },
    outputSchema: { content: z.string() },
    annotations: { 
      readOnlyHint: false, 
      idempotentHint: true, 
      destructiveHint: true 
    }
  },
  async (args) => {
    // 处理请求逻辑
  }
);
资料来源:src/filesystem/index.ts

资源引用工具示例

export const registerGetResourceReferenceTool = (server: McpServer) => {
  server.registerTool(name, config, async (args): Promise<CallToolResult> => {
    // 验证资源类型
    const { resourceType } = args;
    if (!RESOURCE_TYPES.includes(resourceType)) {
      throw new Error(`Invalid resourceType...`);
    }
    
    // 验证资源ID
    const resourceId = Number(args?.resourceId);
    if (!Number.isFinite(resourceId) || resourceId < 1) {
      throw new Error(`Invalid resourceId...`);
    }
    
    // 根据类型获取资源
    const uri = resourceType === RESOURCE_TYPE_TEXT 
      ? textResourceUri(resourceId) 
      : blobResourceUri(resourceId);
    
    return { content: [...] };
  });
};
资料来源:src/everything/tools/get-resource-reference.ts

调试与测试

MCP Inspector 使用

MCP Inspector 是官方提供的调试工具,支持所有传输层协议:

# 调试 stdio 服务器
npx @modelcontextprotocol/inspector uv run mcp-server-time

# 调试 uvx 安装的服务器
npx @modelcontextprotocol/inspector uvx mcp-server-fetch

# 调试本地开发服务器
cd path/to/servers/src/fetch
npx @modelcontextprotocol/inspector uv run mcp-server-fetch
资料来源:src/fetch/README.md

最佳实践

传输层选择指南

场景推荐传输层
Claude Desktop 本地集成Stdio
VS Code / Zed 编辑器Stdio 或 Streamable HTTP
Web 应用前端Streamable HTTP
微服务架构Streamable HTTP
遗留系统维护SSE(临时)→ Streamable HTTP(迁移)

性能考虑

  • Stdio:适用于低延迟要求的本地场景,进程启动开销约 50-100ms
  • Streamable HTTP:适合需要横向扩展的服务端部署,支持连接复用
  • SSE:已弃用,仅用于兼容旧版客户端
资料来源:src/everything/transports/sse.ts

技术规格

项目技术栈

组件规格
TypeScript 目标ES2022
模块系统Node16
类型检查严格模式
Node 版本22+
测试框架Vitest + @vitest/coverage-v8
资料来源:CLAUDE.md

扩展传输层

添加新的传输实现

根据 AGENTS.md 中的指导,扩展传输层的步骤如下:

  1. src/everything/transports/ 目录下创建新的传输模块文件
  2. 实现标准化的传输接口
  3. 在服务器工厂中注册新传输
  4. 更新 package.json 添加对应的 npm scripts

命名规范

  • 文件命名:kebab-case(例:custom-transport.ts
  • 导出函数:registerXxxTransport(server)
  • 内部类型:PascalCase
资料来源:src/everything/AGENTS.md

来源:https://github.com/modelcontextprotocol/servers / 项目说明书

Filesystem 服务器

Filesystem 服务器是 Model Context Protocol (MCP) 生态系统中专门用于文件系统操作的 MCP 服务器实现。该服务器为 AI 模型提供了一套完整的文件系统交互工具,使其能够在受控和安全的沙箱环境中读取、写入、搜索和管理本地文件系统中的文件和目录。资料来源:[src/filesystem/README.md]()

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 整体架构

继续阅读本节完整说明和来源证据。

章节 工具分类

继续阅读本节完整说明和来源证据。

章节 读取类工具

继续阅读本节完整说明和来源证据。

概述

Filesystem 服务器是 Model Context Protocol (MCP) 生态系统中专门用于文件系统操作的 MCP 服务器实现。该服务器为 AI 模型提供了一套完整的文件系统交互工具,使其能够在受控和安全的沙箱环境中读取、写入、搜索和管理本地文件系统中的文件和目录。资料来源:src/filesystem/README.md

核心功能

Filesystem 服务器的核心职责是为 AI 助手提供文件系统访问能力,同时通过路径验证和沙箱机制确保操作的安全性。该服务器遵循 MCP 协议规范,支持通过 stdio、Streamable HTTP 和 SSE 等多种传输协议进行通信。资料来源:src/filesystem/index.ts:1-50

架构设计

整体架构

graph TD
    A[AI 模型] -->|MCP 协议| B[Filesystem 服务器]
    B -->|stdin/stdout| A
    B -->|路径验证| C[沙箱目录]
    B -->|Roots API| D[配置的根目录]
    C -->|文件操作| E[本地文件系统]
    
    F[read_text_file] -->|纯读取| C
    G[read_media_file] -->|纯读取| C
    H[write_file] -->|写入操作| C
    I[edit_file] -->|编辑操作| C
    J[move_file] -->|移动操作| C
    K[create_directory] -->|创建操作| C

工具分类

Filesystem 服务器将所有工具按功能特性进行标注,每个工具都包含 readOnlyHintidempotentHintdestructiveHint 三个关键注解,用于指示工具的行为特性。资料来源:src/filesystem/README.md

工具 API

读取类工具

工具名称读取操作幂等操作破坏性操作说明
read_text_file--纯文本读取
read_media_file--纯读取
read_multiple_files--纯读取
list_directory--纯读取
list_directory_with_sizes--纯读取
directory_tree--纯读取
search_files--纯读取
get_file_info--纯读取
list_allowed_directories--纯读取

写入类工具

工具名称读取操作幂等操作破坏性操作说明
create_directory重建相同目录为空操作
write_file覆盖现有文件
edit_file重新应用编辑可能失败或重复应用
move_file删除源文件
注意:根据 MCP 协议规范,idempotentHintdestructiveHint 仅在 readOnlyHintfalse 时才有意义。资料来源:src/filesystem/README.md

read_text_file

读取文件的完整文本内容作为纯文本返回。

输入参数:

参数类型必填说明
pathstring文件路径
headnumber返回前 N 行
tailnumber返回最后 N 行

使用限制:

  • 不能同时指定 headtail
  • 无论文件扩展名如何,始终将文件视为 UTF-8 文本处理
  • 仅在允许的目录范围内工作

资料来源:src/filesystem/README.md

read_media_file

读取图像或音频文件,以 base64 编码的数据和对应的 MIME 类型返回。

输入参数:

参数类型必填说明
pathstring文件路径

返回格式:

{
  "mimeType": "image/png",
  "data": "<base64编码的二进制数据>"
}

read_multiple_files

同时读取多个文件内容。

输入参数:

参数类型必填说明
pathsstring[]文件路径数组

特性: 单个文件读取失败不会中断整个操作,失败的读取会返回错误信息。资料来源:src/filesystem/index.ts

write_file

创建新文件或完全覆盖现有文件内容。

输入参数:

参数类型必填说明
pathstring文件路径
contentstring文件内容

安全提示: 此操作会覆盖现有文件,使用时需谨慎。资料来源:src/filesystem/index.ts

edit_file

使用高级模式匹配和格式化进行选择性编辑。

支持的功能:

  • 基于行和多行内容匹配
  • 保留缩进格式的空白符规范化
  • 多个同时编辑,位置计算正确
  • 缩进风格自动检测和保留
  • 带上下文的 Git 风格 diff 输出
  • 预览更改的干运行模式

输入参数:

{
  path: string;        // 要编辑的文件路径
  edits: Array<{
    oldText: string;   // 要搜索的文本(可以是子字符串)
    newText: string;   // 替换的新文本
  }>;
}

资料来源:src/filesystem/README.md

目录管理工具

工具名称功能描述
create_directory创建新目录
list_directory列出目录内容
list_directory_with_sizes列出目录内容及文件大小
directory_tree显示目录树结构
move_file移动或重命名文件/目录

搜索与信息工具

工具名称功能描述
search_files在目录中搜索文件
get_file_info获取文件元数据信息
list_allowed_directories列出允许访问的目录

安全机制

路径验证

Filesystem 服务器实现了严格的路径验证机制,确保所有文件操作都在配置的沙箱目录范围内进行。路径验证模块 (path-validation.ts) 负责检查每个文件路径是否在允许访问的目录树内。资料来源:src/filesystem/path-validation.ts

根目录 (Roots)

服务器使用 MCP 的 Roots 机制来定义允许访问的目录范围。通过 roots-utils.ts 模块,服务器可以动态获取和验证允许的根目录列表。资料来源:src/filesystem/roots-utils.ts

操作注解

服务器为每个工具提供标准化的注解,帮助 AI 模型理解工具行为的潜在影响:

graph LR
    A[工具执行] --> B{readOnlyHint}
    B -->|true| C[安全执行]
    B -->|false| D{检查幂等性}
    D -->|idempotentHint| E[可安全重复执行]
    D -->|destructiveHint| F[可能产生破坏性后果]

安装与配置

Claude Desktop 配置

#### Docker 安装

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "mcp/filesystem",
        "/projects"
      ]
    }
  }
}
注意:所有目录必须挂载到容器的 /projects 路径。添加 ro 标志会使目录对服务器只读。资料来源:src/filesystem/README.md

#### NPX 安装

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/path/to/other/allowed/dir"
      ]
    }
  }
}

#### Windows 配置

在 Windows 上,使用 cmd /c 启动 npx:

{
  "mcpServers": {
    "filesystem": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "${workspaceFolder}"
      ]
    }
  }
}

VS Code 配置

通过一键安装按钮快速配置:

![Install with NPX in VS Code](https://insiders.vscode.dev/redirect/mcp/install?name=filesystem&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-filesystem%22%2C%22%24%7BworkspaceFolder%7D%22%5D%7D)

Docker 构建

手动构建 Docker 镜像:

docker build -t mcp/filesystem -f src/filesystem/Dockerfile .

项目结构

src/filesystem/
├── index.ts              # 主入口文件,定义所有工具
├── path-validation.ts    # 路径验证模块
├── roots-utils.ts        # 根目录工具模块
├── package.json          # NPM 包配置
├── tsconfig.json         # TypeScript 配置
└── Dockerfile            # Docker 镜像配置

package.json 主要配置

{
  "name": "@modelcontextprotocol/server-filesystem",
  "version": "最新版本",
  "type": "module",
  "description": "MCP 服务器,提供文件系统访问能力"
}

资料来源:src/filesystem/package.json

开发指南

运行环境

  • Node.js 版本: Node 22
  • TypeScript 目标: ES2022
  • 模块系统: Node16
  • 测试框架: Vitest
  • 类型检查: TypeScript strict 模式

代码规范

  • 使用 ES modules,导入路径带 .js 扩展名
  • 所有函数和变量使用严格的 TypeScript 类型
  • 使用 Zod schema 进行工具输入验证
  • 2 空格缩进,多行对象使用尾随逗号
  • 变量/函数使用 camelCase
  • 类型/类使用 PascalCase
  • 常量使用 UPPER_CASE
  • 文件名和注册工具使用 kebab-case
  • 工具名称使用动词优先(如 get-file-info)资料来源:CLAUDE.md

运行测试

npm install
npm test

许可证

Filesystem 服务器采用 MIT 许可证开源,允许自由使用、修改和分发软件。资料来源:src/filesystem/README.md

资料来源:[src/filesystem/README.md]()

Memory 服务器

Memory 服务器是 Model Context Protocol (MCP) 生态系统中专注于知识图谱与记忆管理的 MCP 服务器实现。该服务器通过知识图谱结构为 AI 助手提供持久化记忆能力,使模型能够在多轮对话中保持上下文一致性,并主动管理用户信息、行为模式和偏好设置。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 知识图谱管理

继续阅读本节完整说明和来源证据。

章节 记忆操作流程

继续阅读本节完整说明和来源证据。

章节 组件架构图

继续阅读本节完整说明和来源证据。

概述

Memory 服务器是 Model Context Protocol (MCP) 生态系统中专注于知识图谱与记忆管理的 MCP 服务器实现。该服务器通过知识图谱结构为 AI 助手提供持久化记忆能力,使模型能够在多轮对话中保持上下文一致性,并主动管理用户信息、行为模式和偏好设置。

核心特性包括:

  • 基于知识图谱的实体与关系存储
  • JSONL 格式的持久化存储
  • 支持记忆的创建、检索与更新操作
  • 与 Claude 等 MCP 客户端无缝集成

资料来源:src/memory/package.json:3-4

核心功能

知识图谱管理

Memory 服务器采用实体-关系模型组织信息,支持以下核心实体类型:

实体类型描述关系示例
用户身份基本身份信息(年龄、性别、位置、职位等)has_identity
行为数据兴趣、习惯等行为信息has_behavior
偏好设置沟通风格、首选语言等has_preference
目标规划目标、期望、 aspirationshas_goal
关系网络个人与职业关系(最多3度分离)knows, works_with

记忆操作流程

graph TD
    A[用户交互] --> B{是否识别用户}
    B -->|否| C[尝试识别用户]
    B -->|是| D[检索相关记忆]
    C --> D
    D --> E{发现新信息?}
    E -->|是| F[更新知识图谱]
    E -->|否| G[继续对话]
    F --> H[创建实体/关系]
    H --> G
    G --> I[响应用户]
    
    style F fill:#e1f5fe
    style H fill:#e1f5fe

资料来源:src/memory/README.md:73-88

系统架构

组件架构图

graph TD
    subgraph 客户端层
        A[Claude / MCP Client]
    end
    
    subgraph MCP 协议层
        B[Stdio Transport]
        C[HTTP + SSE Transport]
    end
    
    subgraph Memory 服务器
        D[知识图谱引擎]
        E[JSONL 存储适配器]
        F[实体管理器]
        G[关系管理器]
    end
    
    subgraph 存储层
        H[memory.jsonl]
    end
    
    A --> B
    A --> C
    B --> D
    C --> D
    D --> E
    E --> H
    D --> F
    D --> G
    F -.->|管理| H
    G -.->|管理| H

技术栈

组件技术选型版本要求
运行时Node.js22+
语言TypeScriptES2022
SDK@modelcontextprotocol/sdk^1.26.0
包管理npm-
测试框架vitest^2.1.8
类型检查TypeScript^5.6.2

资料来源:src/memory/package.json:8-31

安装与配置

环境要求

  • Node.js 22 或更高版本
  • npm 或 yarn 包管理器

安装方式

#### NPX 方式

适用于快速测试和临时使用场景:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
      }
    }
  }
}

资料来源:src/memory/README.md:1-14

#### Windows 配置

在 Windows 系统上需要使用 cmd 作为入口:

{
  "mcpServers": {
    "memory": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "C:\\path\\to\\memory.jsonl"
      }
    }
  }
}

资料来源:src/memory/README.md:17-32

#### Docker 方式

适用于生产环境和隔离部署:

{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-v",
        "claude-memory:/app/dist",
        "--rm",
        "mcp/memory"
      ]
    }
  }
}

VS Code 快速安装

支持一键安装按钮,可在 VS Code Insiders 中快速配置:

[![Install with NPX in VS Code](https://img.shields.io/badge/VS_Code-NPM-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=memory&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40modelcontextprotocol%2Fserver-memory%22%5D%7D)

资料来源:src/memory/README.md:44-45

配置选项

环境变量

变量名类型默认值描述
MEMORY_FILE_PATHstringmemory.jsonl (服务器目录内)记忆存储 JSONL 文件的路径

配置文件结构

graph LR
    A[memory.jsonl] --> B{记录格式}
    B --> C[JSONL 每行一个 JSON 对象]
    C --> D[实体定义]
    C --> E[关系定义]
    
    D --> D1[id]
    D --> D2[type]
    D --> D3[properties]
    
    E --> E1[source]
    E --> E2[target]
    E --> E3[relation_type]

#### JSONL 存储格式示例

{"id": "entity_1", "type": "user", "properties": {"name": "张三", "job": "工程师"}}
{"id": "entity_2", "type": "interest", "properties": {"category": "技术", "topics": ["AI", "区块链"]}}
{"source": "entity_1", "target": "entity_2", "relation_type": "has_interest"}

资料来源:src/memory/README.md:14

使用方法

系统提示词配置

为实现个性化聊天体验,建议在 Claude.ai Project 的"自定义说明"字段中添加以下提示词:

Follow these steps for each interaction:

1. User Identification:
   - You should assume that you are interacting with default_user
   - If you have not identified default_user, proactively try to do so.

2. Memory Retrieval:
   - Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph
   - Always refer to your knowledge graph as your "memory"

3. Memory
   - While conversing with the user, be attentive to any new information that falls into these categories:
     a) Basic Identity (age, gender, location, job title, education level, etc.)
     b) Behaviors (interests, habits, etc.)
     c) Preferences (communication style, preferred language, etc.)
     d) Goals (goals, targets, aspirations, etc.)
     e) Relationships (personal and professional relationships up to 3 degrees of separation)

4. Memory Update:
   - If any new information was gathered during the interaction, update your memory as follows:
     a) Create entities for recurring organizations, people, and significant events
     b) Connect them to the current entities using relations

资料来源:src/memory/README.md:73-94

记忆检索流程

sequenceDiagram
    participant U as 用户
    participant C as Claude
    participant M as Memory 服务器
    participant KG as 知识图谱
    
    U->>C: 开始对话
    C->>M: 检索相关记忆
    M->>KG: 查询实体与关系
    KG-->>M: 返回记忆数据
    M-->>C: 格式化记忆
    C->>U: "Remembering..." + 相关记忆
    U->>C: 继续对话
    C->>M: 更新记忆(如有新信息)
    M->>KG: 创建/更新实体关系

记忆分类

类别内容优先级
基础身份年龄、性别、位置、职位、学历等
行为模式兴趣、习惯等
偏好设置沟通风格、首选语言等
目标规划目标、期望、志向等
关系网络个人与职业关系(最多3度分离)

开发者指南

本地开发

#### 克隆与安装

git clone https://github.com/modelcontextprotocol/servers.git
cd servers/src/memory
npm install

#### 构建

npm run build

构建产物输出至 dist/ 目录,TypeScript 编译目标为 ES2022,模块系统为 Node16。

资料来源:CLAUDE.md:6-9

#### 开发模式监视

npm run watch

此命令启动 TypeScript 编译器监视模式,文件变更时自动重新编译。

#### 测试

npm run test

测试框架采用 vitest,支持覆盖率报告:

npm test -- --coverage

代码规范

#### TypeScript 规范

  • 使用 ES modules,导入路径带 .js 扩展名
  • 严格 TypeScript 类型检查
  • 使用 Zod schemas 进行工具输入验证
  • 2 空格缩进,多行对象保留尾随逗号
  • 变量/函数命名:camelCase
  • 类型/类命名:PascalCase
  • 常量命名:UPPER_CASE
  • 文件名:kebab-case

资料来源:CLAUDE.md:24-30

项目结构

src/memory/
├── index.ts          # 主入口文件
├── package.json      # 项目配置
├── tsconfig.json     # TypeScript 配置
├── dist/             # 编译输出目录
└── test/             # 测试文件目录

API 参考

MCP 工具接口

Memory 服务器提供以下 MCP 协议接口:

工具名称输入参数返回类型描述
记忆检索queryMemory[]根据查询条件检索记忆
记忆创建entity, relationsMemory创建新实体和关系
记忆更新id, updatesMemory更新现有实体
记忆删除idboolean删除指定实体及关联关系

资源接口

interface Resource {
  uri: string;           // 资源唯一标识符
  name: string;          // 资源名称
  mimeType: string;     // MIME 类型
  description?: string; // 资源描述
  annotations?: object;  // 注解信息
}

资料来源:src/everything/resources/session.ts:1-9

版本信息

版本发布日期关键更新
0.6.3当前版本知识图谱优化、存储增强

当前包版本信息存储于 package.jsonversion 字段:

{
  "name": "@modelcontextprotocol/server-memory",
  "version": "0.6.3",
  "description": "MCP server for enabling memory for Claude through a knowledge graph"
}

资料来源:src/memory/package.json:2-4

相关资源

资料来源:[src/memory/package.json:3-4]()

Sequential Thinking 服务器

Sequential Thinking 服务器是 Model Context Protocol (MCP) 生态系统中的一款 MCP 服务器,专门提供顺序推理(Sequential Thinking)能力。该服务器允许 AI 模型执行链式思维推理过程,通过结构化的思考步骤来分解和解决复杂问题。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 链式思维推理

继续阅读本节完整说明和来源证据。

章节 思考日志管理

继续阅读本节完整说明和来源证据。

章节 系统架构图

继续阅读本节完整说明和来源证据。

概述

Sequential Thinking 服务器是 Model Context Protocol (MCP) 生态系统中的一款 MCP 服务器,专门提供顺序推理(Sequential Thinking)能力。该服务器允许 AI 模型执行链式思维推理过程,通过结构化的思考步骤来分解和解决复杂问题。

该服务器的核心价值在于为 AI 助手提供一种可控、可追溯的推理框架,使模型能够在处理多步骤问题时保持逻辑连贯性,并能够回溯和修正推理路径。

核心功能

链式思维推理

Sequential Thinking 服务器提供了一套完整的链式思维推理工具集,使 AI 模型能够:

  • 将复杂问题分解为多个可管理的推理步骤
  • 沿着逻辑链路逐步推进思考过程
  • 在每个步骤中记录中间结果和推理依据
  • 支持条件分支和回溯操作

思考日志管理

服务器内置思考日志功能,可记录整个推理过程的详细信息。通过环境变量 DISABLE_THOUGHT_LOGGING 可以控制是否记录思考日志:

# 禁用思考日志记录
export DISABLE_THOUGHT_LOGGING=true
// 在 JSON 配置中设置
{
  "env": {
    "DISABLE_THOUGHT_LOGGING": "true"
  }
}

架构设计

系统架构图

graph TD
    A[客户端/AI模型] --> B[Sequential Thinking 服务器]
    B --> C[推理引擎]
    C --> D[状态管理器]
    D --> E[日志系统]
    C --> F[工具集]
    
    F --> F1[分解问题工具]
    F --> F2[推理步骤工具]
    F --> F3[回溯工具]
    F --> F4[总结工具]
    
    E -->|可选| G[外部日志服务]

组件关系

组件职责数据流向
推理引擎处理链式思维逻辑接收输入 → 执行推理 → 输出结果
状态管理器维护推理上下文状态存储当前状态 → 支持回溯
日志系统记录推理过程捕获步骤 → 格式化日志
工具集提供可调用接口暴露给 MCP 客户端

安装与配置

环境要求

  • Node.js 环境(推荐 Node 22+)
  • Docker(可选,用于容器化部署)

安装方式

#### 方式一:NPX 远程执行

macOS/Linux 配置:

{
  "servers": {
    "sequential-thinking": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sequential-thinking"
      ]
    }
  }
}

Windows 配置:

{
  "servers": {
    "sequential-thinking": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-sequential-thinking"
      ]
    }
  }
}

#### 方式二:Docker 容器部署

{
  "servers": {
    "sequential-thinking": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "mcp/sequentialthinking"
      ]
    }
  }
}

Docker 构建命令:

docker build -t mcp/sequentialthinking -f src/sequentialthinking/Dockerfile .

Claude Desktop 配置

claude_desktop_config.json 中添加以下配置:

{
  "servers": {
    "sequential-thinking": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
    }
  }
}

VS Code 配置

支持一键安装,可通过 VS Code 安装按钮直接添加:

使用方法

与 Codex CLI 集成

使用 npx 运行 Sequential Thinking 服务器:

codex mcp add sequential-thinking npx -y @modelcontextprotocol/server-sequential-thinking

典型工作流程

graph LR
    A[输入复杂问题] --> B[分解为子问题]
    B --> C[执行第一步推理]
    C --> D{是否完成?}
    D -->|否| E[记录中间结果]
    E --> F[执行下一步推理]
    F --> D
    D -->|是| G[生成最终答案]

工具接口

可用工具

工具名称功能描述使用场景
sequentialthinking主推理工具执行链式思维推理
log_thought记录思考步骤追踪推理过程
reset_thinking重置推理状态开始新的推理链

输入参数

参数名类型必填说明
querystring需要推理的问题或任务
contextobject额外的上下文信息
maxStepsnumber最大推理步骤数

输出格式

{
  "thought": "推理思考内容",
  "nextStep": "下一步推理方向",
  "conclusion": "阶段性结论",
  "metadata": {
    "stepNumber": 1,
    "totalSteps": 5
  }
}

环境变量配置

变量名默认值说明
DISABLE_THOUGHT_LOGGINGfalse设置为 true 可禁用思考日志

调试与故障排查

MCP Inspector 调试

使用 MCP Inspector 可以对服务器进行调试:

npx @modelcontextprotocol/inspector npx -y @modelcontextprotocol/server-sequential-thinking

常见问题

问题:服务器启动超时

解决方案:确保 Node.js 版本符合要求(Node 22+),并检查网络连接。

问题:日志记录过多

解决方案:设置 DISABLE_THOUGHT_LOGGING=true 环境变量。

许可证

Sequential Thinking 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但需遵守 MIT 许可证的条款和条件。

资料来源:src/sequentialthinking/README.md:66-68

相关资源

  • MCP 官方规范:https://modelcontextprotocol.io/specification
  • 服务器源码仓库:https://github.com/modelcontextprotocol/servers
  • 官方文档:https://modelcontextprotocol.io

资料来源:[src/sequentialthinking/README.md:66-68]()

Everything 服务器扩展指南

Everything 服务器是 Model Context Protocol (MCP) 生态系统中功能最全面的服务器实现之一,采用 TypeScript 开发,专门设计用于展示 MCP 协议的各项特性。服务器提供工具(Tools)、资源(Resources)和提示(Prompts)三大核心功能模块。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 高层架构

继续阅读本节完整说明和来源证据。

章节 功能模块布局

继续阅读本节完整说明和来源证据。

章节 命名约定

继续阅读本节完整说明和来源证据。

概述

Everything 服务器是 Model Context Protocol (MCP) 生态系统中功能最全面的服务器实现之一,采用 TypeScript 开发,专门设计用于展示 MCP 协议的各项特性。服务器提供工具(Tools)、资源(Resources)和提示(Prompts)三大核心功能模块。

本扩展指南将帮助开发者理解如何在 Everything 服务器中添加新功能、注册工具和资源,以及遵循项目既定的代码规范进行开发。

架构设计

高层架构

Everything 服务器采用模块化架构设计,核心服务器工厂位于 src/everything/server/index.ts,负责在启动时注册所有功能模块并处理连接后的设置。

graph TD
    A[Server Factory<br/>server/index.ts] --> B[Tools 模块]
    A --> C[Resources 模块]
    A --> D[Prompts 模块]
    A --> E[Transports 模块]
    B --> B1[registerTools]
    C --> C1[registerResources]
    D --> D1[registerPrompts]
    E --> E1[HTTP+SSE Transport]
    E --> E2[Streamable HTTP Transport]

资料来源:src/everything/AGENTS.md:52-53

功能模块布局

模块路径注册函数
工具src/everything/tools/registerTools(server)
资源src/everything/resources/registerResources(server)
提示src/everything/prompts/registerPrompts(server)
订阅与模拟更新src/everything/resources/subscriptions.ts-
日志辅助src/everything/server/logging.ts-
传输管理src/everything/transports/-

资料来源:src/everything/AGENTS.md:35-41

代码风格规范

命名约定

Everything 服务器遵循统一的命名规范,确保代码库的一致性和可维护性:

类型规范示例
变量/函数camelCasegetFileInfo, currentRoots
类型/类PascalCaseMcpServer, Resource
常量UPPER_CASEDEFAULT_TIMEOUT
文件名及注册项kebab-caseget-annotated-message.ts, get-file-info
工具名称动词优先get-file-info(而非 file-info

资料来源:src/everything/AGENTS.md:19-23

文件组织规则

每个功能模块应遵循现有的文件/模块模式,包括:

  • 命名规范
  • 导出结构
  • 注册函数命名(registerX 格式)

添加新功能

扩展工具模块

#### 步骤一:创建工具文件

src/everything/tools/ 目录下创建新的工具文件,使用 kebab-case 命名:

// src/everything/tools/get-roots-list.ts

import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

export const registerGetRootsListTool = (server: McpServer) => {
  // 实现工具逻辑
};

#### 步骤二:导出注册函数

每个工具模块需要导出 registerX(server) 函数,用于将新工具注册到 MCP SDK:

export const registerGetRootsListTool = (server: McpServer) => {
  server.setRequestHandler(
    ListToolsRequestSchema,
    async () => {
      return {
        tools: [
          {
            name: "get-roots-list",
            description: "获取当前 MCP Roots 列表",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
        ],
      };
    }
  );
};

资料来源:src/everything/tools/get-roots-list.ts:1-35

#### 步骤三:更新索引文件

将新工具集成到中央索引中,更新 src/everything/tools/index.ts 文件。

扩展资源模块

#### 资源注册流程

资源模块的注册遵循类似的模式,位于 src/everything/resources/ 目录:

// 资源注册函数签名
export const registerSessionResource = (
  server: McpServer,
  resource: Resource,
  type: "text" | "blob",
  payload: string
): ResourceLink => {
  // 1. 解构资源对象
  const { uri, name, mimeType, description, title, annotations, icons, _meta } = resource;
  
  // 2. 准备资源内容
  const resourceContent = type === "text" 
    ? { uri: uri.toString(), mimeType, text: payload }
    : { uri: uri.toString(), mimeType, blob: payload };

  // 3. 检查并移除已存在的同名资源
  const existingResource = registeredResources.get(uri);
  if (existingResource) {
    existingResource.remove();
    registeredResources.delete(uri);
  }

  // 4. 注册新资源
  const registeredResource = server.registerResource(
    name,
    uri,
    { mimeType, description, title, annotations, icons, _meta },
    async () => ({
      contents: [resourceContent],
    })
  );

  // 5. 追踪已注册资源以便后续移除
  registeredResources.set(uri, registeredResource);

  return { type: "resource_link", ...resource };
};

资料来源:src/everything/resources/session.ts:25-63

扩展提示模块

提示(Prompts)模块位于 src/everything/prompts/ 目录,遵循与工具和资源相同的注册模式:

  1. 在对应目录下创建新文件
  2. 导出 registerPrompts(server) 函数
  3. 更新中央索引 src/everything/prompts/index.ts

更新中央索引

添加新功能后,必须将新模块连接到中央索引:

索引文件需要更新的内容
tools/index.ts导入并注册新工具
resources/index.ts导入并注册新资源
prompts/index.ts导入并注册新提示

资料来源:src/everything/AGENTS.md:49-51

工具输入验证

JSON Schema 要求

所有工具的 inputSchema 必须符合准确的 JSON Schema 规范,并包含有用的描述和示例:

inputSchema: {
  type: "object",
  properties: {
    url: {
      type: "string",
      description: "要获取的 URL 地址",
      examples: ["https://example.com"]
    },
    maxLength: {
      type: "integer",
      description: "返回的最大字符数",
      default: 5000,
      minimum: 1,
      maximum: 1000000
    }
  },
  required: ["url"]
}

资料来源:src/everything/AGENTS.md:51

服务器工厂模式

初始化流程

src/everything/server/index.ts 是服务器的中央入口点,负责:

sequenceDiagram
    participant Start as 启动服务器
    participant Factory as Server Factory<br/>server/index.ts
    participant Tools as Tools 模块
    participant Resources as Resources 模块
    participant Prompts as Prompts 模块
    
    Start->>Factory: 初始化 McpServer 实例
    Factory->>Tools: registerTools(server)
    Factory->>Resources: registerResources(server)
    Factory->>Prompts: registerPrompts(server)
    Factory->>Factory: 处理连接后设置

运行和测试

开发模式运行

#### 使用 Streamable HTTP Transport(推荐)

cd src/everything
npm install
npm run start:streamableHttp

#### 使用 HTTP+SSE Transport(已弃用)

cd src/everything
npm install
npm run start:sse

#### 直接运行已安装包

# 全局安装
npm install -g @modelcontextprotocol/server-everything@latest

# 运行 stdio 服务器
npx @modelcontextprotocol/server-everything

# 运行 SSE 服务器
npx @modelcontextprotocol/server-everything sse

# 运行 Streamable HTTP 服务器
npx @modelcontextprotocol/server-everything streamableHttp

资料来源:src/everything/README.md:75-98

项目配置要求

TypeScript 配置

配置项
目标版本ES2022
模块系统Node16
模式严格模式
测试框架vitest + @vitest/coverage-v8
Node 版本22

依赖项分组

导入语句应按以下顺序分组:

  1. 外部依赖
  2. 内部依赖
// ✅ 正确的导入顺序
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { registerTools } from "./tools/index.js";
import { registerResources } from "./resources/index.js";

文档维护

添加或修改重要功能后,必须更新以下文档:

资料来源:src/everything/AGENTS.md:53-54

总结

Everything 服务器的扩展遵循清晰的设计模式:

  1. 遵循命名规范 - camelCase、PascalCase、UPPER_CASE、kebab-case 各有其用
  2. 模块化组织 - 工具、资源、提示各有独立目录
  3. 统一注册函数 - 每个模块导出 registerX(server) 格式的注册函数
  4. 中央索引管理 - 通过 index.ts 文件统一管理模块导出
  5. Schema 验证 - 工具输入必须使用准确的 JSON Schema 并包含描述和示例

资料来源:[src/everything/AGENTS.md:52-53]()

Fetch 服务器

Fetch 服务器是 Model Context Protocol (MCP) 生态系统中专注于网页内容获取的服务器实现。它使大语言模型能够检索并处理网页内容,将 HTML 转换为 Markdown 格式,便于模型理解和分析。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 系统组件

继续阅读本节完整说明和来源证据。

章节 工作流程

继续阅读本节完整说明和来源证据。

章节 fetch 工具

继续阅读本节完整说明和来源证据。

资料来源:src/fetch/README.md:1-15

核心功能概述

Fetch 服务器的核心能力体现在以下方面:

  • 网页内容获取:根据提供的 URL 抓取网页原始内容
  • HTML 转 Markdown:自动将 HTML 内容转换为结构化的 Markdown 格式
  • 内容分块读取:支持通过 start_index 参数实现内容的分段获取
  • 灵活配置:支持自定义 User-Agent、robots.txt 策略和代理设置

资料来源:src/fetch/README.md:15-30

架构设计

系统组件

graph TD
    A[用户/模型] --> B[Fetch 服务器]
    B --> C{请求类型判断}
    C -->|工具调用| D[Model User-Agent]
    C -->|用户提示| E[User-Specified User-Agent]
    D --> F[HTTP 请求]
    E --> F
    F --> G{响应内容类型}
    G -->|HTML| H[Markdown 转换]
    G -->|其他| I[原始内容返回]
    H --> J[内容截断/分页]
    I --> J
    J --> K[返回给调用方]

工作流程

Fetch 服务器的处理流程遵循以下步骤:

  1. 接收请求并解析 URL 和参数
  2. 根据请求来源(工具调用或用户提示)设置 User-Agent
  3. 发起 HTTP 请求获取网页内容
  4. 检测内容类型并执行相应处理
  5. 如为 HTML 且未强制返回原始内容,则转换为 Markdown
  6. 根据 max_lengthstart_index 进行内容截断
  7. 返回结果给调用方

资料来源:src/fetch/README.md:45-60

工具接口

fetch 工具

Fetch 服务器提供单一工具 fetch,用于获取网页内容。

资料来源:src/fetch/README.md:30-45

#### 输入参数

参数类型必填默认值说明
urlstring-要获取的网页 URL
max_lengthinteger5000返回内容的最大字符数
start_indexinteger0内容提取的起始字符索引
rawbooleanfalse是否返回原始 HTML 内容(不做 Markdown 转换)

资料来源:src/fetch/src/mcp_server_fetch/server.py:70-85

#### 参数约束

class Fetch(BaseModel):
    """Parameters for fetching a URL."""

    url: Annotated[AnyUrl, Field(description="URL to fetch")]
    max_length: Annotated[
        int,
        Field(
            default=5000,
            description="Maximum number of characters to return.",
            gt=0,
            lt=1000000,
        ),
    ]
    start_index: Annotated[
        int,
        Field(
            default=0,
            description="On return output starting at this character index...",
            ge=0,
        ),
    ]
    raw: Annotated[
        bool,
        Field(
            default=False,
            description="Get the actual HTML content of the requested page...",
        ),
    ]
  • max_length 必须大于 0 且小于 1000000
  • start_index 必须大于等于 0

资料来源:src/fetch/src/mcp_server_fetch/server.py:30-55

服务器配置

serve 函数参数

async def serve(
    custom_user_agent: str | None = None,
    ignore_robots_txt: bool = False,
    proxy_url: str | None = None,
) -> None:
    """Run the fetch MCP server.
    
    Args:
        custom_user_agent: Optional custom User-Agent string
        ignore_robots_txt: Whether to ignore robots.txt restrictions
        proxy_url: Optional proxy URL to use
    """

资料来源:src/fetch/src/mcp_server_fetch/server.py:90-100

配置选项总览

配置项类型默认值说明
--user-agentstringModelContextProtocol/1.0自定义 User-Agent
--ignore-robots-txtflagfalse是否忽略 robots.txt
--proxy-urlstringnull代理服务器地址

资料来源:src/fetch/README.md:60-75

User-Agent 策略

Fetch 服务器根据请求来源使用不同的 User-Agent:

请求来源User-Agent说明
工具调用(通过 MCP 工具)ModelContextProtocol/1.0 (Autonomous; +https://github.com/modelcontextprotocol/servers)标识为自主行为
用户提示(用户直接请求)ModelContextProtocol/1.0 (User-Specified; +https://github.com/modelcontextprotocol/servers)标识为用户指定

此设计使目标网站能够区分自动化工具请求和用户直接访问请求。

资料来源:src/fetch/README.md:55-65

内容处理逻辑

HTML 检测

服务器通过以下方式判断响应是否为 HTML:

content_type = response.headers.get("content-type", "")
is_page_html = (
    "<html" in page_raw[:100] or 
    "text/html" in content_type or 
    not content_type
)

判断依据:

  • 响应前 100 个字符包含 <html 标签
  • Content-Type 包含 text/html
  • Content-Type 为空

资料来源:src/fetch/src/mcp_server_fetch/server.py:20-25

内容处理流程

graph TD
    A[HTTP 响应] --> B{是否为 HTML?}
    B -->|是| C{force_raw 参数?}
    B -->|否| D[返回原始内容]
    C -->|是| D
    C -->|否| E[提取并转换为 Markdown]
    E --> F[添加说明前缀]
    D --> G[内容截断处理]
    F --> G
    G --> H[返回结果]

资料来源:src/fetch/src/mcp_server_fetch/server.py:25-35

安装与部署

安装方式对比

安装方式命令适用场景
uvx(推荐)uvx mcp-server-fetch快速使用,无需安装
pippip install mcp-server-fetch持久化安装
Dockerdocker run -i --rm mcp/fetch隔离环境

资料来源:src/fetch/README.md:70-90

Claude Desktop 配置

资料来源:src/fetch/README.md:90-125

Windows 特殊配置

在 Windows 系统上,建议设置 PYTHONIOENCODING 环境变量以避免字符编码问题导致的超时:

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

资料来源:src/fetch/README.md:40-50

调试与开发

MCP Inspector

使用 MCP Inspector 可以调试服务器:

# uvx 安装
npx @modelcontextprotocol/inspector uvx mcp-server-fetch

# 源码调试
cd path/to/servers/src/fetch
npx @modelcontextprotocol/inspector uv run mcp-server-fetch

资料来源:src/fetch/README.md:55-65

可选依赖

安装 Node.js 后,Fetch 服务器会使用更强大的 HTML 简化库:

Optionally: Install node.js, this will cause the fetch server to use a different HTML simplifier that is more robust.

资料来源:src/fetch/README.md:70-75

安全考量

风险警告

[!CAUTION]
此服务器可以访问本地/内部 IP 地址,可能存在安全风险。使用此 MCP 服务器时需谨慎,确保不会暴露敏感数据。

资料来源:src/fetch/README.md:15-20

安全机制

  • robots.txt 遵循:默认遵守目标网站的 robots.txt 规则
  • User-Agent 标识:明确标识为自动化工具,便于网站识别和限制
  • 目录访问控制:与 filesystem 服务器不同,fetch 服务器不限制访问路径

资料来源:src/fetch/README.md:20-30

与其他 MCP 服务器的关系

Fetch 服务器是 MCP 服务器生态的一部分,与其他服务器的协作模式如下:

graph LR
    A[文件系统服务器] -->|提供本地文件操作| B[Claude/模型]
    C[Fetch 服务器] -->|提供网络内容获取| B
    D[Memory 服务器] -->|提供持久化存储| B
    E[Time 服务器] -->|提供时间信息| B

资料来源:src/filesystem/README.md:1-20

项目规范

根据项目规范,Fetch 服务器遵循以下标准:

  • Python 版本:>= 3.10
  • 类型检查:pyright
  • 代码风格:ruff
  • 包管理:uv(使用 uv sync 和 uv run)
  • 测试框架:pytest-asyncio(异步测试)

资料来源:CLAUDE.md:20-40

贡献指南

项目欢迎对 Fetch 服务器的贡献:

  • 错误修复
  • 可用性改进
  • MCP 协议特性演示(Resources、Prompts、Roots)

贡献方式请参考项目根目录的 CLAUDE.md

资料来源:CLAUDE.md:45-55

资料来源:[src/fetch/README.md:1-15]()

Git 服务器

在提供的上下文中,我仅找到以下源码文件:

章节 相关页面

继续阅读本节完整说明和来源证据。

可用的源码文件

在提供的上下文中,我仅找到以下源码文件:

文件路径说明
src/fetch/README.mdFetch 服务器文档
src/sequentialthinking/README.md顺序思考服务器文档
src/time/README.md时间服务器文档
src/filesystem/README.md文件系统服务器文档
src/everything/README.mdEverything 服务器文档
README.md仓库主文档
CLAUDE.md开发者指南
scripts/release.py发布脚本
src/memory/README.md记忆服务器文档

缺失的源码文件

根据 WIKI_PAGE_TOPIC 请求的 "Git 服务器",以下关键文件不在提供的上下文中

结论

无法生成关于 Git 服务器的技术 wiki 页面,因为需要的关键源码文件在提供的上下文中不可用。需要您提供 Git 服务器相关的源码文件后才能生成准确且符合要求的技术文档。

来源:https://github.com/modelcontextprotocol/servers / 项目说明书

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

medium 能力判断依赖假设

假设不成立时,用户拿不到承诺的能力。

medium 维护活跃度未知

新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。

medium 下游验证发现风险项

下游已经要求复核,不能在页面中弱化。

medium 存在评分风险

风险会影响是否适合普通用户安装。

Pitfall Log / 踩坑日志

项目:modelcontextprotocol/servers

摘要:发现 6 个潜在踩坑项,其中 0 个为 high/blocking;最高优先级:能力坑 - 能力判断依赖假设。

1. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 建议检查:将假设转成下游验证清单。
  • 防护动作:假设必须转成验证项;没有验证结果前不能写成事实。
  • 证据:capability.assumptions | github_repo:890668799 | https://github.com/modelcontextprotocol/servers | README/documentation is current enough for a first validation pass.

2. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 建议检查:补 GitHub 最近 commit、release、issue/PR 响应信号。
  • 防护动作:维护活跃度未知时,推荐强度不能标为高信任。
  • 证据:evidence.maintainer_signals | github_repo:890668799 | https://github.com/modelcontextprotocol/servers | last_activity_observed missing

3. 安全/权限坑 · 下游验证发现风险项

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:下游已经要求复核,不能在页面中弱化。
  • 建议检查:进入安全/权限治理复核队列。
  • 防护动作:下游风险存在时必须保持 review/recommendation 降级。
  • 证据:downstream_validation.risk_items | github_repo:890668799 | https://github.com/modelcontextprotocol/servers | no_demo; severity=medium

4. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 建议检查:把风险写入边界卡,并确认是否需要人工复核。
  • 防护动作:评分风险必须进入边界卡,不能只作为内部分数。
  • 证据:risks.scoring_risks | github_repo:890668799 | https://github.com/modelcontextprotocol/servers | no_demo; severity=medium

5. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 建议检查:抽样最近 issue/PR,判断是否长期无人处理。
  • 防护动作:issue/PR 响应未知时,必须提示维护风险。
  • 证据:evidence.maintainer_signals | github_repo:890668799 | https://github.com/modelcontextprotocol/servers | issue_or_pr_quality=unknown

6. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 建议检查:确认最近 release/tag 和 README 安装命令是否一致。
  • 防护动作:发布节奏未知或过期时,安装说明必须标注可能漂移。
  • 证据:evidence.maintainer_signals | github_repo:890668799 | https://github.com/modelcontextprotocol/servers | release_recency=unknown

来源:Doramagic 发现、验证与编译记录