加密软件环境下让 AI Agent 读取文件明文:通用 MCP 工具的开发实践
一、问题背景
公司电脑安装了文件加密软件(天锐绿盾),所有文件在磁盘上都是密文存储。IDEA、VS Code 等被加密软件列为"白名单进程"的应用,在进程内读取文件时会自动解密,看到的是明文。而其他进程直接读取磁盘,拿到的就是密文。
这带来一个问题:AI 编程助手(如 Claude Code CLI)是独立进程,不在白名单内,读取文件时只能拿到密文。
具体表现为:
- Claude Code 内置的
Read工具读取 Java 文件,返回的是乱码(文件头%TSD-Header-###%) - 内置的
Grep搜索代码,匹配不到任何内容 - 内置的
Write/Edit直接写磁盘,会破坏加密结构
而 Kilo Code(运行在 IDEA 进程内的插件)却能正常读取明文,因为它借用了 IDEA 的进程身份。
二、问题分析
2.1 加密软件的工作原理
文件加密软件(如天锐绿盾、IP-Guard、亿赛通等)通常采用"透明加密"技术:
- 白名单进程:加密软件维护一个受信任进程列表(如 IDEA、VS Code、Node.js 等)。这些进程读取文件时,加密软件的文件系统驱动会自动解密,返回明文;写入文件时,自动加密后落盘。
- 非白名单进程:不在列表中的进程(如 Python、cmd、Claude Code CLI 等),直接读取磁盘上的原始数据,拿到的是密文。
2.2 关键发现
通过实际测试,我发现了一个关键事实:
| 进程 | 读取结果 | 原因 |
|---|---|---|
Python (open()) |
❌ 密文 | Python 不在白名单 |
cmd type 命令 |
❌ 密文 | cmd 不在白名单 |
PowerShell Get-Content |
❌ 密文 | PowerShell 不在白名单 |
Node.js (fs.readFileSync) |
✅ 明文 | Node.js 在白名单 |
Node.js 进程被加密软件信任! 这意味着通过 Node.js 的 fs 模块可以正常读写文件明文。
2.3 解决思路
既然 Node.js 能读到明文,而 Claude Code CLI 支持 MCP(Model Context Protocol)协议来扩展工具,那么:
写一个 Node.js MCP Server,提供文件读写工具,让 Claude Code 调用,就能绕过加密限制读取明文。
三、技术方案
3.1 MCP 协议简介
MCP(Model Context Protocol)是由 Anthropic 发起的开放标准协议,类似于 LSP(语言服务器协议)。它允许 AI Agent 通过标准接口调用外部工具。
AI Agent --(MCP/stdio)--> MCP Server --(任意方式)--> 执行操作
MCP Server 可以用任何语言实现,只要遵循协议规范。Claude Code、Cursor、Windsurf、Cline 等主流 AI Agent 都支持 MCP。
3.2 架构设计
Claude Code CLI --(MCP/stdio)--> Node.js MCP Server --(fs.readFileSync)--> 读取明文
- MCP Server:用 Node.js 实现,通过
@modelcontextprotocol/sdk库注册工具 - 文件操作:直接使用 Node.js 的
fs模块,加密软件自动解密/加密 - 通信方式:stdio(标准输入输出),Claude Code 自动管理子进程生命周期
3.3 工具设计
替代 Claude Code 内置工具,提供以下 MCP 工具:
| MCP 工具 | 替代内置 | 功能 |
|---|---|---|
read_file |
Read | 读取单个文件明文 |
read_files |
多次 Read | 批量读取多个文件 |
write_file |
Write | 写入文件(自动加密落盘) |
edit_file |
Edit/MultiEdit | 精确字符串/正则替换后写回 |
search_files |
Grep | 递归搜索文件内容 |
create_directory |
- | 递归创建目录 |
file_info |
- | 查询文件/目录信息 |
check_status |
- | 检查工具运行状态 |
四、开发实现
4.1 项目初始化
mkdir mcp-read-file-server
cd mcp-read-file-server
npm init -y
npm install @modelcontextprotocol/sdk zod
4.2 核心代码
MCP Server 的核心逻辑很简单——用 Node.js fs 模块读写文件,通过 MCP 协议暴露为工具:
const fs = require("fs");
const { McpServer } = require("@modelcontextprotocol/sdk/server/mcp.js");
const { StdioServerTransport } = require("@modelcontextprotocol/sdk/server/stdio.js");
const { z } = require("zod");
const server = new McpServer({ name: "read-file-server", version: "1.0.0" });
// 读取文件明文(Node.js 在加密软件白名单中,自动解密)
function readFileContent(filePath) {
try {
const content = fs.readFileSync(filePath, "utf-8");
return { ok: true, content };
} catch (e) {
return { ok: false, error: e.message };
}
}
// 注册 read_file 工具
server.tool(
"read_file",
"读取指定路径的文件内容(明文)",
{ path: z.string().describe("文件路径") },
async ({ path: filePath }) => {
const result = readFileContent(filePath);
if (result.ok) {
return { content: [{ type: "text", text: result.content }] };
} else {
return { content: [{ type: "text", text: "❌ " + result.error }], isError: true };
}
}
);
// 启动服务
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch(console.error);
完整代码包含 8 个工具(read_file、read_files、write_file、edit_file、search_files、create_directory、file_info、check_status),详见项目仓库。
4.3 配置 Claude Code
项目级配置
在项目根目录创建 .mcp.json:
{
"mcpServers": {
"read-file-server": {
"command": "node",
"args": ["D:/AiJiamiToolsPlugins/mcp-read-file-server/index.js"]
}
}
}
全局配置
claude mcp add read-file-server -s user -- node "D:/AiJiamiToolsPlugins/mcp-read-file-server/index.js"
自动引导(CLAUDE.md)
为了让 Claude Code 自动选择 MCP 工具而非内置工具,在项目根目录创建 CLAUDE.md:
# 项目说明
本项目文件受加密软件保护,内置工具(Read/Write/Edit/Grep)只能读到密文。
## 规则
- 读取文件时,必须使用 MCP 工具 `read_file`,不要使用内置 Read
- 写入文件使用 `write_file`
- 编辑文件使用 `edit_file`
- 搜索文件内容使用 `search_files`
配置后,直接说"读取 HomeController.java",Claude Code 会自动调用 read_file 读取明文。
五、使用效果
5.1 测试验证
通过 MCP 协议调用 read_file 工具读取加密文件:
# 测试 MCP Server
echo '{"jsonrpc":"2.0","id":1,"method":"initialize",...}' | node index.js
返回结果:
{
"content": [{
"type": "text",
"text": "package com.xxxx.xxxxplatform.controller;\n\nimport ..."
}]
}
✅ 成功读取到明文内容(package com.xxxx.xxxxplatform.controller;)。
5.2 实际使用
cd 项目目录
claude
输入:
帮我整理 HomeController.java 的接口
Claude Code 自动:
- 读取
CLAUDE.md,知道要用 MCP 工具 - 调用
read_file(而非内置Read)读取明文 - 分析内容并输出整理结果

六、通用性
这个 MCP 工具不限于 Claude Code,任何支持 MCP 协议的 AI Agent 都可以使用:
| Agent | 支持情况 |
|---|---|
| Claude Code CLI | ✅ |
| Cursor | ✅ |
| Windsurf | ✅ |
| Cline / Roo Code | ✅ |
| Continue.dev | ✅ |
| Zed | ✅ |
也不限于天锐绿盾,任何加密软件场景下,只要 Node.js 是白名单进程,就能使用本工具。
七、在新电脑上部署
只需拷贝 2 个文件:
index.js(源代码)package.json(依赖声明)
新电脑上:
cd mcp-read-file-server
npm install
然后按目标 Agent 的方式配置 MCP 即可。
八、总结
| 项目 | 说明 |
|---|---|
| 问题 | 加密软件环境下,AI Agent 内置工具读到密文 |
| 发现 | Node.js 是加密软件白名单进程,可读明文 |
| 方案 | Node.js MCP Server,替代内置文件工具 |
| 通用性 | 适用于任何支持 MCP 的 Agent + 任何加密软件 |
| 前提 | Node.js 需被加密软件列为白名单进程 |
项目地址
GitHub: https://github.com/hebulin/mcp-read-file-server
欢迎 Star 和 PR!
更多推荐

所有评论(0)