mcpField
G
Girder

Girder

本地服务
github.com开发工具143 周前更新

关于 Girder

Girder 是面向编码 Agent 的本地语义代码图和 MCP 服务。它提取特定定义、源码及调用关系,而非返回整个文件,并提供保守的测试影响范围选择。

主要功能

  1. 01构建仓库语义图
  2. 02提取精准代码和关系
  3. 03整合式 orient 上下文查询
  4. 04保守选择受影响测试
  5. 05配置 Claude Code、Codex 和 Cursor

适用场景

  1. 01为编码 Agent 提供聚焦的代码上下文
  2. 02追踪定义周围的调用方和被调用方
  3. 03找出可能受代码变更影响的测试

MCP 相关

Girder 通过 MCP 服务向客户端提供只读代码图命令,包括代码提取和仓库导航工具。配置程序可设置 Claude Code、Codex 和 Cursor 等已检测到的客户端。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"dhishwasher-girder": {
"command": "npx",
"args": [
"-y",
"girder-mcp"
]
}
}
}
启动命令npx -y girder-mcp

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

安装包
npmgirder-mcp0.4.0

工具

还没有获取到工具列表

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

详细介绍

Girder

**Girder 通过向编码 Agent 提供恰好所需的代码,而非整个文件,来保留 AI 编码 Agent 的上下文。**它会为你的代码库构建本地语义图,让 Claude Code、Codex、Cursor 和其他 Agent 无需用无关代码填满上下文窗口,即可检索精确的函数、定义、调用方、被调用方和任务上下文。它以单个静态二进制文件运行,无需账户,也不依赖云服务。

npx -y girder-mcp setup

这条命令会自动检测并配置 Claude Code、Codex 和 Cursor。

CI 最新稳定版本:v0.4.0(Apache-2.0)。 贡献方式:参见 CONTRIBUTING.md。

衡量的是输出字节数,而非 token 数(未运行分词器):

  • girder context ... --json --source-only 的 CLI 标准输出(MCP get_source) 与读取整个文件相比:字节数减少 97.85%;测试对象为按源码大小十分位抽样的十个函数 (方法与局限说明)。
  • girder names ... --json 的 CLI 标准输出(MCP find_definition)与纯文本 grep 相比:字节数减少 97.98%;测试对象为十个标识符 (方法)。
  • orient(一次组合调用:获取一个节点的源码、调用方、被调用方、测试和影响范围) 与效果相当的一系列独立调用相比:48,814 字节 对比 101,302 字节,调用次数为 15 次,对比 78 次;测试基于涵盖十个固定版本代码库的 15 项任务 (方法)。

以上两个百分比衡量的是 CLI 输出;未测量 MCP 传输开销。

支持 Girder

Girder 由独立团队开发,旨在帮助编码 Agent 减少代码消耗:提供精确的语义上下文,而不是读取整个文件和反复检索代码库。赞助有助于为上下文效率、语义图正确性、Agent 集成、可复现基准测试和维护提供资金。Girder 会公开其测量结果,包括失败和局限。如果 Girder 为你节省了上下文、算力或开发时间,请赞助其持续开发。

**筹资目标:**每月 1,000 美元,用于 Girder 的持续维护、版本发布、基准测试和上下文效率相关工作。请参阅赞助资金的用途。

真实的捕获输出(确切来源请参阅 docs/observations/release-prep/):

$ girder context demo-project --nodes crate::greeter::shout_greeting --json --source-only
{
  "nodes": [{
    "language": "python",
    "path": "crate::greeter::shout_greeting",
    "source": "def shout_greeting(name):\n    return format_greeting(name).upper()"
  }]
}

返回的是某个函数的精确源码,而不是它所在的整个文件——这就是 Girder 为 Agent 上下文窗口提供的核心能力。

如实说明语言支持,而非宣称对等:Rust 和 Python 均已完成对三个固定版本代码库中 100 个调用点的审计,该样本中没有不可靠的回答。两者的结果均为 1 个 Must 和 99 个 Unknown;精确率证据有限(测量结果)。TypeScript 已完成测量并设有门槛,但明确仍在进行中——它仍存在一个单独披露的节点身份冲突机制(重复的 it()/describe() 描述字符串可能会悄无声息地覆盖彼此的图节点;请参阅 docs/observations/stage3-typescript-audit/)。Go 的 Stage 3 审计尚未完成。各语言经过测量的确切限制,请参阅 docs/typescript-support.md 和 docs/go-support.md。

此外还包含一项基于同一张图构建的额外能力——保守的变更影响分析和测试选择:test-impact 会根据同一张语义图列出变更可能影响的测试;对于无法排除的测试,它宁可将其纳入,也不会悄悄漏掉。真实的捕获输出:

$ girder test-impact . --quiet
test-impact: 82 unresolved call-evidence boundaries found; this selection is the conservative must∪may∪unknown union — pass --classified to see why each test is included
test_farewell
test_format_greeting
test_shout_greeting_delegates_to_format_greeting

具体了解此测试选择能证明和不能证明的内容,请参阅状态。

**定价和许可证:**Girder 根据 Apache License 2.0 免费开源。目前没有付费层级,也不需要许可证密钥或账户——请参阅许可证。

供持怀疑态度的读者查阅的证据: docs/evidence-index.md 列出了上述说法背后的所有已提交审计、测量结果和对抗性发现——包括过程中发现并修复的问题,而不仅是最终数字。

安装

预编译二进制文件,无需 Rust 工具链:

curl -fsSL https://raw.githubusercontent.com/dhishwasher/Girder/main/install.sh | sh
girder --version

或从源码构建:

cargo install --path crates/aether-app
girder --help

这会构建默认的无头配置,并将 girder 二进制文件安装到 ~/.cargo/bin(请确保该目录位于你的 PATH 中)。无需 GPU、显示器、网络或 API 密钥。

Windows 安装程序

每个 Windows 版本还包含 Girder-<version>-setup.exe。它会为当前用户安装到 %LOCALAPPDATA%\Programs\Girder,将 Girder 添加到用户的 PATH,创建“开始”菜单快捷方式,且不会请求管理员权限。安装后请打开新的终端,以便识别更新后的 PATH。安装程序包含桌面 GUI,其“开始”菜单快捷方式会打开该界面。压缩包和 npm 安装仍会提供无头 CLI。

安装程序尚未进行代码签名,因此 Windows SmartScreen 会在首次运行时发出警告。从 GitHub 发布页面下载安装程序后,双击运行;在“Windows protected your PC”对话框中选择 More info,确认应用是 Girder,且发布者显示为未知,然后选择 Run anyway。如果这些信息不符,请取消操作。

竞品基准测试

在包含 20 个任务的适度跨语言基础测试集中,Girder 通过了 5/20,而 Ripwire 通过了 7/20——Girder 落败。但在两款产品都通过的 60 次尝试中, Girder 返回了 35,764 字节,而 Ripwire 返回了 158,514 字节——少了 77.4%—— 且调用次数相同(均为 120 次)。GitNexus 无法评分:在这台测量机器上,它的安装 超出了冻结的 1 GiB 上限。这反映的是受限主机上的安装占用,而非对其质量的判断。

本次基准测试中,没有任何产品达到完全正确,也不能据此认定哪款产品总体最佳。请参阅完整的 报告,了解测试方法、各语言结果,以及 上述数字无法证明的所有内容。

在 AI 编码 Agent 中使用

girder mcp 通过 模型上下文协议提供只读图谱命令,让 Agent 可以询问代码库,而不必将文件读入上下文窗口。

预览更改,然后配置检测到的 Agent:

npx -y girder-mcp setup --dry-run
npx -y girder-mcp setup

setup 会检测 Claude Code(~/.claude 或主目录中已有的项目 .mcp.json)、Codex(~/.codex 或主目录中的 CODEX_HOME)和 Cursor (~/.cursor)。它会将 girder MCP 条目合并到每个已检测 Agent 的文档所述配置中,并为 Claude Code 和 Codex 安装嵌套的 PreToolUse 和 PostToolUse 钩子。前置钩子涵盖结构化的 Read、read_file 和 mcp__.*__read_file 事件;后置钩子涵盖 Claude 的 Edit|Write|NotebookEdit 和 Codex 的 apply_patch|Edit|Write 编辑名称。 不会解析 Shell 命令。Cursor 虽有钩子文档,但前置读取钩子无法在不阻止操作的情况下添加建议性上下文(preToolUse 和 beforeReadFile 只能允许、拒绝或重写输入;只有 postToolUse 和 sessionStart 会在操作之后返回 additional_context),因此 setup 会为 Cursor 注册 MCP 和项目规则,但不注册钩子。通用 MCP 客户端没有统一的配置路径,因此会报告为未检测到。Setup 不会写入主目录之外的任何位置。现有的外部 girder 条目会保持不变,即使使用 --force 也一样;girder setup --uninstall 只会移除由 setup 管理的更改。

先定位再阅读的指令。 除 MCP 外,setup 还会通过每个客户端自身的机制安装一条简短的共享指令,使 Agent 在大范围读取或 grep 前先调用 Girder 的 orient,在不确定时明确说明,并在不确定时改为阅读源代码,而不是猜测:

客户端指令位置备注
Claude Code~/.claude/CLAUDE.md 中的分隔块Claude Code 会将用户和项目的 CLAUDE.md 文件拼接到上下文中
Codex$CODEX_HOME/AGENTS.md 中的分隔块(默认为 ~/.codex/AGENTS.md)如果存在非空的 AGENTS.override.md,则跳过并报告,因为此时 Codex 会忽略 AGENTS.md
Cursor当前项目中的 .cursor/rules/girder-orient.mdc,仅在使用 girder setup --project 时项目规则是带有 alwaysApply: true 的 .mdc 文件;Cursor 未说明用户规则的文件路径,因此不会写入

该区块会在 girder-setup-state.json 中标记并记录:重新运行 setup 不会更改任何内容;--uninstall 会精确还原文件;已编辑的区块会保持不变;--no-instructions 会跳过此步骤。以上格式已于 2026-10-06 根据各客户端自身的文档核实;来源和引文见 docs/observations/stage4-clients/。 不同形式会安装什么。 使用已构建或已安装的二进制文件运行 girder setup,会安装 MCP、钩子和指令,并写入一个启动该已安装二进制文件的 MCP 条目(<path-to-girder> mcp .),因此客户端启动时无需下载软件包即可运行本地 Girder。运行 npx -y girder-mcp setup 会执行 已发布 软件包的设置;只有在包含该指令的版本发布后,才会安装指令。若设置从 npx 的临时缓存运行,就没有稳定的二进制文件路径,因此条目会回退到 npx -y girder-mcp . 启动形式,设置过程也会说明这一点(安装 Girder 后运行 girder setup,即可切换为本地二进制文件)。

打包的钩子启动器会将每个事件转发给固定版本的原生 girder hook 可执行文件,并在出错时保持放行。只有独立的 PreToolUse JSON 会转发到 stdout;编辑后的原生诊断信息会通过 stderr 输出,而 MCP 仍通过自己的 stdout 使用 JSON-RPC。读取建议只有在 project.aether 已存在时才会提供指引。编辑后建议使用已保存的图快照,不会扫描或重建项目,并会描述已更改文件最后一次分析的版本。有关配置路径、所有权和手动 JSON 回退方案,请参阅设置与客户端路径指南。

对于设置无法检测到的客户端,或需要手动设置时,请将该条目添加到客户端文档说明的 MCP 配置中。各客户端的配置位置:

客户端位置格式
Claude Code项目 .mcp.json 或用户 ~/.claude.jsonJSON mcpServers.girder(见下文)
Cursor项目 .cursor/mcp.json 或用户 ~/.cursor/mcp.jsonJSON mcpServers.girder(见下文)
Codex~/.codex/config.toml(或受信任项目的 .codex/config.toml)TOML 表,见 JSON 之后的示例
任何其他 MCP 客户端该客户端文档说明的 MCP 配置相同的 command 和 args

JSON 格式:

{
  "mcpServers": {
    "girder": {
      "command": "npx",
      "args": ["-y", "girder-mcp", "."]
    }
  }
}

Codex 使用 TOML 表:

[mcp_servers.girder]
command = "npx"
args = ["-y", "girder-mcp", "."]

如果已安装二进制文件,"command": "girder", "args": ["mcp", "."] 会完全跳过 npm。要手动向任何客户端提供指令,请将 npm/instructions/orient-first.md 的文本粘贴到其文档说明的指令文件中(CLAUDE.md、AGENTS.md 或 Cursor .mdc 规则)。

Girder 0.2.6 及更高版本可通过 girder mcp . --watch 或 npx -y girder-mcp . --watch 选择启用缓存的图生成。服务会在内存中保留一个经过验证的图生成,并增量重新解析更改的文件。已提交的监视器测量结果显示,在 45 次变更后,结果与全新冷分析一致,同时复用了 98.70% 的文件提取结果;此声明仅限于在复用解析的同时保留冷分析的解析结果。请参阅监视器结果与限制。

七种工具,全部只读且免费:

工具回答的问题
get_source特定函数的源代码,不包括其所在文件的其余内容。
find_definition精确标识符的声明位置。不是子字符串搜索。
search_code不知道函数名称时,哪些函数符合描述。
ask_codebase通过遍历图,查找调用方、被调用方和影响范围。
impacted_tests变更可能影响到的保守测试集——仅供参考,见下文。
review_changes工作树中发生了哪些变化,以语义而非文本的方式呈现。
orient一次调用即可获取一个节点的源代码、调用方、被调用方、测试和影响。
它节省了什么,又没有节省什么

orient 将 get_source + ask_codebase(调用方、被调用方和影响范围)+ impacted_tests 原本需要通过 5-6 次独立调用才能提供的内容合并为一次调用。在涵盖十个固定版本仓库的 15 项任务语料中,这一次调用使用的总字节数少于它所替代的调用链(48,814 对 101,302,比例为 0.48),同时将 78 次往返减少到 15 次——每项任务一次;修复披露的两个缺陷后,37 项门控检查全部通过。第一次运行发现,impacted_tests --quiet 会悄悄丢弃非 Rust/Python 测试名称(orient 自身的测试覆盖率部分没有这个问题,因此才发现了该缺陷);现已移除该过滤器。其自然语言 intent 输入仍继承了 search_code 的准确性——本语料中的三项意图任务都定位到了错误节点,这一点未变,也不在此次修复范围内——但 orient 的置信度启发式原先未能捕捉到这三项中的任何一项,现在会将三项全部标记为 "confidence": "low",并附上候选项分数;代价是当次优候选项分数接近时,也会将一些正确的定位标记出来。请参阅 docs/orient-tool.md 和已提交的策略/原始观测结果/修复后观测结果。

另外两项预先提交的测量均统计命令输出的字节数,而非令牌数(未运行分词器):

  • 将 girder context ... --json --source-only(MCP get_source 会调用的命令)与简单的整文件读取基线进行比较:从按源码大小十分位抽样的十个函数来看,CLI 标准输出字节数减少了 97.85%,且十个函数的开销都更低(docs/context-vs-read-cost.md)。
  • 将 girder names ... --json(MCP find_definition 会调用的命令)与普通 grep 基线进行比较:十个标识符的 CLI 标准输出字节数减少了 97.98%(docs/names-cost.md)。

未测量 MCP 传输开销和令牌数。

两项测量都基于单个仓库。其趋势是结构性的——文件远大于其中的函数,而 grep 会返回每一处提及,find_definition 则只返回声明——但具体百分比不具备普适性。

这些比较没有衡量一个合格的 Agent 如何自适应地选择 grep 搜索和有边界的文件读取。本文并未证实任何关于 Agentic grep 成本的说法。

之后使用本地 1.5B 模型开展的 Agentic grep 测试 未能完成,也没有产生一对两个答案都正确的结果。因此,它无法证明存在比较成本优势,也无法说明前沿模型的行为。

impacted_tests 仅供参考。它会选出过多无关测试,而且仍无法解析某些动态分派形式——当 Girder 无法证明某个调用点时,冻结策略要求纳入相关测试,而不是猜测可以安全跳过;因此,目前测得的后果是过度纳入(在有代表性的多态分派案例中,召回率为 1.000,精确率为 0.667),而不是悄悄漏掉测试。底层的分派解析缺口仍未解决;目前只是不再悄悄丢弃测试。测量结果及具体改动内容请参阅 docs/core-representative-mutations.md。在判定更改安全之前,完整测试运行仍是最终依据。

多选测试会增加 CPU 时间;漏掉相关测试则可能掩盖回归问题。

项目根目录在服务启动时固定,因此任何工具调用都无法访问其他目录。GIRDER_MCP_TIMEOUT_SECONDS(默认值为 120)限制每次调用的时长;对于非常大的仓库,可调高该值。

以下内容均假定 girder 已位于 PATH 中。若从源代码检出版本构建但不安装,用 cargo run -p aether-app -- 替代 girder,操作方式相同。

快速入门

# Full end-to-end demo — no GPU, display, or API key required:
girder

# Run the test suite:
cargo test --workspace
分析代码仓库

使用 CLI 构建并查询代码仓库的语义图:

# Build the semantic graph from a project and save it as <dir>/project.aether:
girder analyze sample-project

# Inspect a saved graph and a node's impact set:
girder inspect sample-project/project.aether crate::lib::add

# Graph-semantic rename — follows Calls edges (not text search) and rewrites
# only the real callers, then saves the updated graph:
girder refactor sample-project rename crate::lib::add plus

# Emit graph context, a real Plan Format v2 authoring schema, and a plan
# skeleton as one JSON object — for pasting into any external chat model.
# See "External authoring" below for the full loop to a verified, applied edit:
girder context demo-project --nodes crate::greeter::farewell "add an exclamation mark to the farewell" --json

# Validate/inspect/execute a plan file directly:
girder plan validate my-plan.json
girder plan explain my-plan.json
girder plan run my-plan.json --dry

# Semantic code review vs HEAD (typed mutations, not text diffs):
girder review sample-project --since HEAD~1

# Conservative test selection: find every test that might be reachable
# from changed functions:
girder test-impact sample-project --run

# Knowledge-graph query — answer a question by traversing the semantic graph:
girder query sample-project "what would break if I change add?"
girder query sample-project "what calls sum_list?"
girder query sample-project  # interactive REPL (reads stdin)

# Full help:
girder --help

外部编写:girder context + plan run --authored

girder do 会自动驱动一个内置的 provider(OpenAI、Anthropic、Ollama 或离线的 MockProvider)。girder context 和 plan run --authored 则在模型边界处拆分同一工作流,因此任何聊天模型——即使本代码库完全没有为其集成 API——也可以编写经过验证的图编辑。

只需阅读,而非编写? 添加 --source-only。下面的默认输出包含 Plan Format v2 schema 和计划骨架,这是模型编写编辑所需的固定约 6 KB 内容,而仅仅阅读代码的模型并不需要——在 10 个节点中的 2 个上,测得其开销超过读取整个文件;对于较小的文件,开销则是文件大小的 15.6 倍。--source-only 会移除封装内容;在同样的 10 个节点上,测得其开销比读取文件低 97.85%(docs/context-vs-read-cost.md)。 它也不需要 git 仓库,因为没有 base_commit 需要固定。

编写流程:

# 1. Emit graph context, a real Plan Format v2 authoring schema, and a plan
#    skeleton (base_commit, on_failure, the mandatory tests.impacted check)
#    as one JSON object:
girder context demo-project --nodes crate::greeter::farewell \
  "add an exclamation mark to the farewell" --json > context.json

# 2. Paste context.json into any chat model. Ask it to fill in the plan
#    skeleton's step (id, description, edits) so the step satisfies the
#    schema exactly, and save its response as plan.json — the schema is the
#    literal Plan Format v2 the executor loads, not an approximation of it,
#    so a model that follows it produces a file that loads without
#    translation.

# 3. Run and verify it. `plan run` has no project-directory argument — the
#    root is always the current directory, so run this from inside
#    demo-project/. --authored applies the same harness guarantees `do`
#    applies internally to a model-authored plan: on_failure is forced to
#    rollback_plan, a tests.impacted check is injected if the plan doesn't
#    already carry one, and a zero-step plan is refused outright rather than
#    passing vacuously. --authored-by <name> records who authored it in the
#    written report:
(cd demo-project && girder plan run ../plan.json --authored --authored-by claude-opus-5)

运行通过后,会将编辑应用到真实代码树,并在 .girder/reports/ 下写入报告;如果检查失败,则会自动将代码树回滚到 base_commit,因此不受信任的外部模型所做的错误编辑绝不会以半应用状态落地。plan_schema() 的确切结构(每种编辑/检查类型都使用一个 oneOf 判别联合,与 planfile::schema 的反序列化器字段逐一匹配)正是第 2 步可靠性的保障——有关此举修复的问题及证明这一点的往返测试,请参见 docs/core-gap-analysis.md 中的差距 17。

演示目标:demo-project/,绝非 sample-project/

girder do 和 plan run --authored 都会直接拒绝将 sample-project/ 作为目标,并报错指出应改用 demo-project/:

$ girder do sample-project "uppercase greet's return value"
error: sample-project/ is a pinned measurement fixture (see gap 18/21 in
docs/core-gap-analysis.md) and refuses authored writes; run demos against
demo-project/ instead

sample-project/ 是固定基线,tools/authoring_task_check.py 和 tools/plan_executor_oracle.py 会基于特定的干净源代码提交读取它,用于图寻址编写成本测量语料库,而不是临时目标。在那里进行真实(非 dry-run)的编写会修改测量工具依赖的同一个文件——这种情况发生过两次,间隔三天;在发现夹具发生漂移之前,修复损坏的裁判器耗费了整整一天的调试时间;详情请参见 docs/core-gap-analysis.md 中的差距 18。demo-project/ 的存在正是为了避免这种情况再次发生:它是一个小型、可随意处置的 Python 项目,tools/ 或 docs/ 下的任何内容都不会读取它,因此可安全进行真实(非 dry-run)的编写。 只读命令(context、search、analyze、test-impact)仍可针对 sample-project/ 使用——只有两个会写入内容的命令会被拒绝。

工作区

Crate作用
aether-graph持续演进的语义图:节点/边、影响分析和 .aether 序列化。事实来源。
aether-buildertree-sitter → 图映射、增量编辑同步、语法高亮范围。
aether-aiAiProvider trait、离线 MockProvider、OpenAI/Anthropic 在线 provider、多 provider Router、provider 扩展点。
aether-appgirder 二进制程序:MCP 服务和图 CLI。

工作区还包含较早期的子系统(Agent 蜂群、协作、tracer 和 DAP adapter、扩展、桌面 GUI)。它们不属于公开工具,默认关闭,只有使用 --features legacy 才会构建。

状态

Girder 是面向编码 Agent 的语义图 MCP 服务和 CLI。以下测量结果描述了该图当前的行为和局限。

已检验的 核心可信度测量 将受影响测试选择与隔离的运行时执行进行比较。其有限基线测得 Rust 和 Python 的精确率/召回率均为 1.000/1.000 (此前 0.667 的 Rust 精确率缺陷已修复)。这只是小型测试夹具上的结果,并不代表其优于典型仓库;相反的证据也一并纳入了检验:在一个真实依赖中,多态分派变更目前测得召回率 1.000、精确率 0.667 (docs/core-representative-mutations.md) ——2026-10 的修复阻止了分派无法解析时测试被悄然漏选,改为回退到保守并集;底层的分派解析缺口并未改变,修复的只是静默漏选这一症状。因此,测试选择被标注为建议,而非权威结果。

已实现的功能:

功能作用
语义图节点/边;支持 Rust 别名/返回值/作用域模式/Cargo 入口点感知以及 Python 别名/可空注解/构造函数感知的跨文件调用解析;识别字面量的宏调用;影响范围 BFS;相似度边;严格的版本化 .aether 持久化和源代码协调
语义审查类型化差异(新增/修改/删除的节点 + 边)、影响范围、测试缺口报告
保守测试选择从变更函数出发的调用图可达性分析,可选 --run
项目契约验证 girder.toml 中的源代码范围、图路径、测试运行器和 Agent 输出
源代码投影由作者编写的计划修改和图重命名,会通过可恢复的日志事务验证源代码和图
候选项验证可处置的项目副本、可选的 bubblewrap 隔离、Cargo 构建/测试、已配置的检查、取消/超时、受限诊断信息、绑定快照的提交门控
外部编写girder context 会为任何外部聊天模型输出图上下文和真实的 Plan Format v2 schema;plan run --authored 会对结果重新执行回滚/受影响测试保证

实测的基础功能对比、当前正确性证据和 优先级排序后的未解决风险均维护在 docs/core-gap-analysis.md。

许可证

本仓库中的 Girder 源代码根据 Apache License, Version 2.0 授权。这允许商业使用、修改、 再分发、分叉和托管使用,但须遵守许可证条款;LICENSE 是具有权威性的文本。

此前发布的 v0.3.2 npm 包和发行版二进制文件仍受其发布时附带的 BUSL 许可证约束;已发布的版本不可更改。当前 v0.4.0 npm 包和发行版二进制文件采用 Apache-2.0 许可证。

目前没有付费层级,所有已发布工具均不设门槛:无需账户 或许可证密钥。此前已持有较早版本所签发的许可证密钥的用户,仍可在原先解锁的范围内继续使用;密钥系统本身(GIRDER_LICENSE_KEY 或按操作系统存放的密钥文件,离线验证,不会回传数据)仅为保持历史兼容性而保留。

较早版本仍遵循其发布时附带的条款;本次更改并非追溯性地变更许可证。贡献条款请参阅 CONTRIBUTING.md。

评论

支持 Markdown

第一次接触 MCP?

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

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