纱线虚拟mcp
一个MCP(模型上下文协议)服务器,允许AI助手浏览Yarn-PnP项目中npm包的源代码。
Yarn Berry(v2+)与Plug'n'Play一起将包裹存储在zip档案中 .yarn/cache/。这些文件只能通过Yarn的补丁访问 fs 模块。此MCP服务器在Yarn的PnP运行时下运行,为AI工具提供对这些档案中的包源代码的透明读取权限。
工具
| 工具 | 说明 |
|---|---|
yarn_resolve_package | 将包名解析为其虚拟文件系统路径 |
yarn_read_file | 从Yarn-PnP虚拟路径读取文件 |
yarn_read_multiple_files | 同时读取多个文件 |
yarn_list_directory | 列出目录内容 |
yarn_directory_tree | JSON格式的递归树视图 |
yarn_search_files | 搜索与glob模式匹配的文件 |
yarn_get_file_info | 获取文件元数据(大小、时间戳) |
所有工具都是 只读 并且仅限于自动发现的Yarn工作空间根。
安装
无需安装。直接从GitHub运行 npx:
npx github:dobesv/yarn-virtuals-mcp服务器自动查找 .pnp.cjs 通过从当前目录向上搜索,并使用Yarn工作区根目录作为允许的目录。
设置
克劳德代码
添加为用户级MCP服务器:
claude mcp add --transport stdio --scope user yarn-virtuals-mcp -- npx github:dobesv/yarn-virtuals-mcp或添加到您的项目 .mcp.json:
{
"mcpServers": {
"yarn-virtuals-mcp": {
"command": "npx",
"args": ["github:dobesv/yarn-virtuals-mcp"]
}
}
}Gemini CLI
gemini mcp add yarn-virtuals-mcp -- npx github:dobesv/yarn-virtuals-mcp通用MCP客户端
从任何Yarn-PnP项目中在stdio上运行服务器:
npx github:dobesv/yarn-virtuals-mcp用法
典型的工作流程是:
- 解析包 找到它的位置:
yarn_resolve_package({ package: "@google/genai", workspace: "@myapp/server" })退货 packageRoot, entryPoint, version等等。
- 浏览源代码 使用返回的路径:
yarn_list_directory({ path: "
" })
yarn_read_file({ path: "
/dist/index.d.ts", head: 50 })
yarn_search_files({ path: "
", pattern: "**/*.d.ts" })运作原理
纱线PnP替换 node_modules 其中包含zip存档 .yarn/cache/ 以及运行时补丁(.pnp.cjs)拦截 require/import 电话。路径通过 .yarn/__virtual__/ 在真实的文件系统上不存在-它们由Yarn的补丁解决 fs 模块。
此服务器:
- 自动通过向上搜索来发现Yarn工作区根
.pnp.cjs - 负载
.pnp.cjs如果尚未处于Yarn-PnP环境中,则自动执行 - 用途
createRequire()通过Yarn的模块解析来解析包 - 提供与PnP修补程序配合使用的MCP文件系统工具
fs
技能(可选)
此回购包括 技能.md 它教导AI助手浏览Yarn-PnP包源代码的工作流程。安装该技能可以帮助AI在您要求它查看依赖项的源代码时自动使用正确的工具。
Claude Code的安装技巧
mkdir -p ~/.claude/skills/yarn-virtuals-helper
curl -fsSL https://raw.githubusercontent.com/dobesv/yarn-virtuals-mcp/master/SKILL.md \
-o ~/.claude/skills/yarn-virtuals-helper/SKILL.mdGemini CLI的安装技巧
mkdir -p ~/.gemini/skills/yarn-virtuals-helper
curl -fsSL https://raw.githubusercontent.com/dobesv/yarn-virtuals-mcp/master/SKILL.md \
-o ~/.gemini/skills/yarn-virtuals-helper/SKILL.mdClaude代码中的自动允许
由于所有工具都是只读的,因此您可以自动允许它们,这样Claude就不会提示权限:
cp ~/.claude/settings.json ~/.claude/settings.json.bak
jq '.permissions.allow = ((.permissions.allow // []) + ["mcp__yarn-virtuals-mcp__*"] | unique)' \
~/.claude/settings.json.bak > ~/.claude/settings.json许可证
麻省理工学院
