内容
# e18e 模块替换 MCP 服务器
一个 [MCP](https://modelcontextprotocol.io)(模型上下文协议)服务器,提供 [e18e](https://e18e.dev) 模块替换数据。它帮助 AI 助手建议更轻量、更快或原生的常见 JavaScript/Node.js 包的替代品。
## 功能
[e18e](https://e18e.dev) 项目(“生态系统性能”)维护着精选的 JavaScript 模块替换列表 — 更轻量的替代品、原生 API 等价物和可以消除不必要依赖的简单代码片段。
该 MCP 服务器在启动时从 [e18e/module-replacements](https://github.com/e18e/module-replacements) 仓库中获取三个清单,并将它们作为工具公开:
| 清单文件 | 描述 | 示例 |
| --- | --- | --- |
| **native.json** | 可被原生浏览器/Node.js API 替换的功能 | `is-array` → `Array.isArray()` |
| **micro-utilities.json** | 可被代码片段替换的微型软件包 | `array-flatten` → `array.flat(Infinity)` |
| **preferred.json** | 具有更好、更轻量替代品的模块 | `axios` → `fetch` / `ofetch` / `ky` |
## 前置条件
- [Node.js](https://nodejs.org) >= 18
## 安装
### 选项 1:直接使用 npx(无需安装)
无需安装 — 只需在您的 MCP 配置中引用它(见下文)。该软件包会被自动获取并运行。
### 选项 2:全局安装
```bash
npm install -g e18e-module-replacements-mcp
```
### 选项 3:从源代码构建
```bash
git clone https://github.com/santoshyadavdev/e18e-module-replacements-mcp.git
cd e18e-module-replacements-mcp
npm install
npm run build
```
## 配置
将服务器添加到您的 AI 助手的 MCP 配置中。下面的示例使用 `npx`,因此无需安装。如果您已全局安装或从源代码构建,请用二进制文件的路径替换 `npx`。
### Claude Desktop
打开您的 Claude Desktop 配置文件:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"e18e-module-replacements": {
"command": "npx",
"args": ["-y", "e18e-module-replacements-mcp"]
}
}
}
```
然后重启 Claude Desktop。
### VS Code(GitHub Copilot)
在您的工作区中创建或编辑 `.vscode/mcp.json`(或添加到您的用户设置中):
```json
{
"servers": {
"e18e-module-replacements": {
"command": "npx",
"args": ["-y", "e18e-module-replacements-mcp"]
}
}
}
```
### Cursor
打开 **Cursor 设置 → MCP** 并添加新的服务器:
- **名称:** `e18e-module-replacements`
- **类型:** `command`
- **命令:** `npx -y e18e-module-replacements-mcp`
### Windsurf
添加到您的 `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"e18e-module-replacements": {
"command": "npx",
"args": ["-y", "e18e-module-replacements-mcp"]
}
}
}
```
## 工具
### `lookup_replacement`
按功能名称、API 名称或模块名称搜索替换项。在所有三个清单中进行不区分大小写的部分匹配搜索。
**输入:**
```json
{ "name": "axios" }
```
**示例输出:**
```
## axios
**来源:** preferred
**类型:** module
**替换项:** fetch, ofetch, ky
**网址:** https://e18e.dev/guide/module-replacements/fetch
```
**更多示例:**
| 查询 | 结果 |
| --- | --- |
| `"axios"` | 首选替换项:`fetch`, `ofetch`, `ky` |
| `"Array.from"` | 原生 API — 链接到 MDN 文档 |
| `"deep-merge"` | 首选替换项:`defu`, `@fastify/deepmerge` |
| `"array-flatten"` | 微型实用程序代码片段:`array.flat(Infinity)` |
### `scan_dependencies`
扫描依赖关系映射(例如 `package.json` 中的 `dependencies` 字段),并查找具有推荐替换项的软件包。
**输入:**
```json
{
"dependencies": {
"axios": "^1.6.0",
"chalk": "^5.3.0",
"express": "^4.18.0",
"lodash": "^4.17.21"
}
}
```
**示例输出:**
```
找到 3 个依赖项替换项:
- **axios** → fetch, ofetch, ky
https://e18e.dev/guide/module-replacements/fetch
- **chalk** → picocolors, ansis
https://e18e.dev/guide/module-replacements/chalk
- **lodash** → es-toolkit
https://e18e.dev/guide/module-replacements/lodash
```
## 使用提示
一旦 MCP 服务器连接到您的 AI 助手,您就可以询问:
- *"是否有比 chalk 更轻量的替代品?*"
- *"扫描我的 package.json 依赖项以查找替换项*"
- *"is-array 的原生替换项是什么?*"
- *"我可以用更小的东西替换 moment 吗?*"
AI 助手将自动使用 `lookup_replacement` 和 `scan_dependencies` 工具来回答。
## 开发
```bash
npm run dev # 监视模式 — 在文件更改时重建
```
## 工作原理
1. 服务器启动时,从 GitHub 获取所有三个 e18e 清单文件
2. 清单文件在服务器进程生命周期内缓存在内存中
3. 服务器使用 **stdio** 通过 MCP 协议进行通信
4. 如果清单文件加载失败(例如,无互联网连接),服务器仍然会启动 — 工具将为缺少的数据源返回错误消息
## 许可证
MIT