mcpField
G
ghostlink

ghostlink

本地服务
github.com/bgorzelic开发工具03 周前更新

关于 ghostlink

GhostLink 是为编码 Agent 提供本地代码仓库访问的 MCP 服务,所有工具操作都限制在指定仓库根目录内。它提供确定格式的结果、命令白名单和审计日志,支持搜索、修改与验证代码。

主要功能

  1. 01仓库根目录沙箱隔离
  2. 02正则搜索与受限文件读取
  3. 03支持预演和回滚的补丁应用
  4. 04执行白名单测试与构建命令
  5. 05Git 状态与差异查看
  6. 06JSONL 工具调用审计

适用场景

  1. 01让编码 Agent 安全检索本地代码
  2. 02在仓库内应用补丁并验证更改
  3. 03查看分支状态和暂存或未暂存差异

MCP 相关

GhostLink 是通过 STDIO 连接的 MCP 服务,向客户端提供六种仓库和 Git 工具。所有调用均受仓库沙箱、命令白名单、输出限制和审计日志约束。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"bgorzelic-ghostlink": {
"command": "npx",
"args": [
"-y",
"@bgorzelic/ghostlink"
],
"env": {
"GHOSTLINK_REPO_ROOT": "<GHOSTLINK_REPO_ROOT>",
"GHOSTLINK_LOG": "<GHOSTLINK_LOG>"
}
}
}
}
启动命令npx -y @bgorzelic/ghostlink
需要配置的环境变量
GHOSTLINK_REPO_ROOTAbsolute path to the repository the server is confined to. Every tool call is sandboxed beneath this path.
GHOSTLINK_LOGOptional path for the JSON audit log of tool calls. Omit to disable file logging.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@bgorzelic/ghostlink0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

GhostLink

一款经过安全加固的 MCP 服务,让 AI 编码 Agent 能够安全、确定性地访问本地代码仓库。

CI npm TypeScript Node Tests License: ISC

将其添加到任何支持 STDIO 的 MCP 客户端中。对于 Claude Code,在目标代码仓库根目录中创建 .mcp.json:

{
  "mcpServers": {
    "ghostlink": {
      "command": "npx",
      "args": ["-y", "ghostlink"],
      "env": {
        "GHOSTLINK_REPO_ROOT": "/path/to/target/repo"
      }
    }
  }
}

然后在该目录中运行 claude——即可看到六个代码仓库工具,且所有工具都限制在 GHOSTLINK_REPO_ROOT 范围内。每次工具调用都会返回相同的确定性 ToolEnvelope:

{
  "ok": true,
  "data": { ... },
  "provenance": { "tool": "repo.search", "timestamp": "2026-02-24T...", "duration_ms": 42 }
}

发生错误时,"error": { "code": "...", "message": "..." } 会取代 "data"。完整的工具架构请参阅:docs/TOOLS.md。

工具

工具描述
repo.search由 Ripgrep 驱动的正则搜索,支持 glob 筛选、确定性排序和输出上限(最多 200 条结果)
repo.read_file文件读取,设有大小上限(最多 10MB)、二进制文件检测和截断标记
repo.apply_patch使用统一差异补丁,支持试运行模式、完整沙箱验证,以及失败时原子回滚
repo.run执行精选命令(test、lint、typecheck、build、smoke)——不允许任意 shell 命令,仅允许指定参数
git.status规范化的 Git 状态,包含分支信息、领先/落后跟踪和排序后的文件条目
git.diff暂存或未暂存差异,支持路径筛选、沙箱验证和输出上限(最多 2MB)

什么是 GhostLink?

GhostLink 是一款本地优先的模型上下文协议服务,通过一组受策略控制的工具向 AI 编码 Agent 提供代码库访问能力。它解决了一个特定问题:AI Agent 需要搜索、读取、修改和验证代码,但授予它们原始 shell 访问权限会带来风险。GhostLink 提供了一个沙箱化的能力层,确保每次工具调用都限制在单一代码仓库根目录内、每个输出都遵循确定性的 JSON 格式,并且每次调用都会记录审计日志。

为什么选择 GhostLink?

能力含义
安全的本地开发层代码仓库根目录沙箱、不执行 shell 命令、每次工具调用都生成 JSONL 审计记录
确定性输出相同输入会生成相同的 JSON 封装格式——支持黄金测试和可预测的 Agent 消费
策略执行命令允许列表、输出上限、截断标记、超时强制执行——AI 无法造成不受限的损害
Agent 循环基础专为自主编码 Agent 循环执行的搜索、读取、修改、验证周期而构建
多服务组合每个代码仓库运行一个 GhostLink 实例,可与同一客户端会话中的其他 MCP 服务组合使用
生产就绪的 Phase 2 基础架构保留了传输抽象、架构版本控制和身份验证钩子扩展点

架构

GhostLink 采用三层架构,可扩展且无需修改核心代码:

flowchart TD
    T["Transport -- src/index.ts<br/>STDIO now, HTTP/SSE in Phase 2"]
    S["Server factory -- src/server.ts<br/>Transport-agnostic tool registration via MCP SDK + Zod schemas"]
    TL["Tools -- src/core/tools/*<br/>Six tools, each returning ToolEnvelope&lt;T&gt;"]
    P["Policy -- src/core/policy/*<br/>Sandbox enforcement, audit logging, output caps"]
    T --> S --> TL --> P

createServer() 工厂与传输方式无关。在 Phase 2 中添加 HTTP/SSE,只需编写新的传输绑定和身份验证中间件——服务器工厂和所有工具实现都无需更改。Phase 3(Agent 运行时)会将记忆资源和编排作为 GhostLink 的使用方添加,而不是对其进行修改。

快速开始

前置条件
  • Node.js 18+
  • ripgrep(brew install ripgrep)
  • 一个要公开的 Git 代码仓库
安装

通过 npm:

npm install ghostlink

或从源代码安装:

git clone https://github.com/bgorzelic/ghostlink.git
cd ghostlink
npm install
npm run build
冒烟测试(原始 STDIO)

GhostLink 通过 STDIO 使用 JSON-RPC 2.0。直接测试:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | \
  GHOSTLINK_REPO_ROOT=/path/to/target/repo node dist/index.js

这会返回全部 6 个工具及其架构。

客户端配置

GhostLink 适用于任何支持 STDIO 传输的 MCP 客户端。本页顶部的 npx 代码片段可在任何地方使用;从源代码检出时,则使用 node 和构建好的入口点:

{
  "ghostlink": {
    "command": "node",
    "args": ["/absolute/path/to/ghostlink/dist/index.js"],
    "env": {
      "GHOSTLINK_REPO_ROOT": "/path/to/target/repo"
    }
  }
}
客户端配置位置
Claude Code目标仓库根目录中的 .mcp.json(mcpServers 键),然后在该目录运行 claude
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json(mcpServers 键),然后重启
Cursor、Windsurf、Cline 等客户端的 MCP 服务配置——请查阅其文档了解文件位置

传输方式始终为 STDIO。可直接使用的 .mcp.json 和 CLAUDE.md 模板位于目标项目的 templates/ 目录中。

安全模型

GhostLink 在每一层都实施纵深防御:

  • 仓库根目录沙箱 —— 所有文件操作都限制在 GHOSTLINK_REPO_ROOT 内。在访问任何文件系统之前,都会拒绝路径遍历、符号链接逃逸、空字节以及根目录之外的绝对路径。
  • 不执行 Shell 命令 —— repo.run 使用 spawn,并设置 shell: false。命令仅限于固定的允许列表(test、lint、typecheck、build、smoke),且每个命令都有各自的参数允许列表。环境变量会被精简,仅保留 6 个安全变量。
  • 输出上限 —— 每个返回大量数据的工具都设有硬性上限(200 条搜索结果、10MB 文件读取、200KB stdout/stderr、2MB 差异)。截断会明确标记,不会悄无声息地发生。
  • 原子补丁回滚 —— repo.apply_patch 会在写入任何内容之前验证所有路径并计算所有补丁。如果任何写入失败,已完成的写入会回滚至原始状态。
  • 超时强制执行 —— repo.run 会在可配置的超时时间后终止进程(默认 120s,硬性上限 300s),先发送 SIGTERM,再发送 SIGKILL。

完整的威胁模型和缓解措施:docs/SECURITY.md。

审计日志

每次工具调用都会生成一条 JSONL 审计记录:{ts, tool, ok, duration_ms, error_code?, repo_root}。

GHOSTLINK_LOG行为
stdout(默认)将 JSONL 审计行写入 stderr
file将 JSONL 写入 logs/ghostlink.jsonl(达到 10MB 时自动轮换)
off不记录日志

通过环境变量设置:

GHOSTLINK_LOG=file GHOSTLINK_REPO_ROOT=/path/to/repo node dist/index.js

提示词模板

docs/PROMPTS.md 包含可直接使用的高自主性 Agent 操作提示词,包括编排器提示词、子 Agent 角色定义(协议工程师、工具工程师、安全审查员、测试工程师、文档工程师)以及多实例协调模式。

开发

npm install          # Install dependencies
npm test             # Run test suite (108 tests via Vitest)
npm run lint         # ESLint
npm run typecheck    # TypeScript strict mode check
npm run build        # Compile to dist/
npm run dev          # Dev mode with auto-reload (tsx watch)

编辑后的完整验证:

npm test && npm run lint && npm run typecheck && npm run build

文档

文档说明
docs/TOOLS.md权威工具架构(版本化公共 API)
docs/SECURITY.md威胁模型和缓解措施
docs/QUICKSTART.md设置、冒烟测试和客户端配置指南
docs/INSPECTOR.mdMCP Inspector 手动测试指南
docs/PROMPTS.md用于编排和子 Agent 角色的 Agent 提示词
docs/ROADMAP_DETAILED.md完整产品路线图,包含 Phase 2 和 Phase 3 的交付内容
docs/WHY_GHOSTLINK.md战略价值主张和架构依据
docs/ENGINEERING_REPORT_v0.1.0.mdv0.1.0 发布报告,包含里程碑历史和决策日志
templates/可直接用于目标项目的 CLAUDE.md 和 .mcp.json 模板

路线图

Phase 1 —— 本地 STDIO[已发布,v0.1.0]

确定性的工具接口、仓库根目录沙箱、精选命令执行、108 项测试、JSONL 审计日志,npm 包已发布。

阶段 2 —— 远程传输【计划中】

HTTP/SSE 传输、OAuth 2.1 身份验证、多用户租户隔离、按租户限流、架构版本管理,以及带关联 ID 的结构化审计日志。

阶段 3 —— Agent 运行时【未来计划】

通过 MCP 暴露的持久化记忆资源、可选的策略门控记忆写入工具、编排层(位于 GhostLink 之外)、评估循环、子 Agent 协调框架。

许可证

ISC

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。