mcpField
C
craftbag

craftbag

本地服务
github.com/craftbagAI 与智能体26 天前更新

关于 craftbag

craftbag 可编目并检查项目及用户目录中的 Agent Skills,面向需要发现、选择、解释或验证技能,且不绑定特定 Agent 产品的命令行和 MCP 主机。

主要功能

  1. 01跨目录编目技能
  2. 02加载完整技能或指定章节
  3. 03解释技能的触发原因
  4. 04验证技能包
  5. 05创建技能模板

适用场景

  1. 01查找主机可用的技能
  2. 02仅加载技能大纲或章节
  3. 03使用前检查技能包

MCP 相关

`craftbag-mcp` 通过 stdio 提供技能列表、加载、触发原因说明和验证等 MCP 工具。标记为 `user_invocable` 的技能也会作为 MCP 提示词公开。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
cargocraftbag-mcp0.3.1

工具

还没有获取到工具列表

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

详细介绍

craftbag

发现、列出、加载和说明 CLI 与 MCP 宿主使用的 Agent Skills(SKILL.md)。

CI Security crates.io docs.rs License

OpenSSF Best Practices OpenSSF Scorecard FOSSA Status Release

功能

craftbag 会遍历项目和主目录中的技能树(.agents,以及可选的 Claude、Cursor、Grok 和 Bline 供应商目录)。然后,它会:

  • 为技能编目(list)
  • 打印单个技能正文(load),或标题键 / 单个标题(load --outline、load --section KEY)
  • 说明技能为何会被激活(why)
  • 检查软件包(validate)

同样的操作也可通过 MCP stdio 使用(skills_list、skills_load、skills_why、skills_validate)。宿主可以筛选、排序和加载技能,而无需依赖任何特定的 Agent 产品。

安装

macOS 和 Linux(Homebrew):

brew install craftbag/tap/craftbag

Windows(Scoop):

scoop bucket add craftbag https://github.com/craftbag/scoop-bucket
scoop install craftbag/craftbag

这两条命令都会安装 craftbag 和 craftbag-mcp。随后 MCP 宿主会运行 craftbag-mcp(在 macOS 图形界面应用中,如果 PATH 为空,请使用完整路径:/opt/homebrew/bin/craftbag-mcp)。

使用 Rust 工具链安装(crates.io):

cargo install --locked craftbag-cli
cargo install --locked craftbag-mcp

库依赖:

craftbag = "0.2"

从 git 安装(未发布的最新版本):

cargo install --locked --git https://github.com/craftbag/craftbag craftbag-cli
cargo install --locked --git https://github.com/craftbag/craftbag craftbag-mcp

最低支持的 Rust 版本(MSRV)为 1.85。

入门

默认情况下,list 会遍历从当前工作目录到 Git 根目录的 .agents/skills,以及 $HOME/.agents/skills。在传入 --vendor 前,Claude、Cursor、Grok 和 Bline 目录树不会被纳入遍历。如果存在 .cursor/skills(或其他供应商对应的目录),但该供应商未启用,空列表会提示相应标志:hint: .cursor/skills is present; pass --vendor cursor。此克隆没有项目级 .agents 目录。当 .agents 目录不存在时,craftbag list 会以退出码 0 结束,并提示未找到任何技能。craftbag new NAME 会创建 .agents/skills/NAME/SKILL.md,其中包含匹配的名称和占位描述。将 --path 指向演示目录树(与演示 GIF 使用相同的目录):

git clone https://github.com/craftbag/craftbag
cd craftbag
craftbag list --no-implicit-roots --path demo/workspace/.agents/skills --catalog
craftbag load review-pr --no-implicit-roots --path demo/workspace/.agents/skills
craftbag load review-pr --no-implicit-roots --path demo/workspace/.agents/skills --outline
craftbag load review-pr --no-implicit-roots --path demo/workspace/.agents/skills --section review-a-pull-request
craftbag why review-pr --no-implicit-roots --path demo/workspace/.agents/skills --context review
craftbag validate demo/workspace/.agents/skills/review-pr

--section review-a-pull-request 会传入大纲键。--outline 会在标题 Review a pull request 前打印该键。validate 接收包含 SKILL.md 的软件包目录,此处为 demo/workspace/.agents/skills/review-pr。集合目录 demo/workspace/.agents/skills 本身没有 SKILL.md,因此对它运行 validate 会以退出码 1 结束,并提示 directory is not a skill package (no SKILL.md)。对该目录运行 list --path 仍会列出其中的软件包。

--path、--user-dir 和 --ignore 会自行展开 ~/,因为 MCP 和带引号的命令都没有 shell。~//name 与 ~/name 一样,仍指向你的主目录。如果 ~// 后面的部分仍是 Windows 驱动器路径,则会被拒绝,不会替换你的主目录。路径不存在时会跳过该路径并提示路径不存在。若符号链接的目标已不存在,则会提示符号链接失效。显式指定的 / 和 /.. 是你命名的根目录。经过填充的 .. 若会折叠为 /,例如 /tmp/ ..,则会被拒绝。

如果 craftbag 尚未加入 PATH,请运行 cargo build -p craftbag-cli --locked,并在这些命令中使用 ./target/debug/craftbag。

在 .agents/skills 下已有技能的项目中:

craftbag list --catalog
craftbag load NAME
craftbag why NAME --context review
craftbag validate ./path/to/my-skill

Claude、Cursor、Grok 或 Bline 目录树需显式启用:

craftbag list --vendor claude --catalog

演示

craftbag 目录和加载

MCP

craftbag-mcp 通过标准输入/输出使用 JSON-RPC。工具:skills_list、skills_load、skills_why、skills_validate。prompts/list 和 prompts/get 会将 user_invocable 为 true(默认值)的技能作为 MCP 提示词公开。prompts/get 返回与 load 相同的文本封装。运行 brew install 或 scoop install 后,craftbag-mcp --help 会列出这些工具。带有 "id": null 的请求会以该 id 回复。省略 id 的消息属于通知,不会收到响应。

Claude Desktop(claude_desktop_config.json)及其他接受标准输入/输出命令的宿主:

{
  "mcpServers": {
    "craftbag": {
      "command": "craftbag-mcp",
      "args": ["--vendor", "claude"]
    }
  }
}

如果工具调用省略了字段,启动参数 --path、--vendor、--user-dir 和 --no-implicit-roots 将用于遍历。除非传入 --no-implicit-roots,否则宿主的当前工作目录仍是隐式遍历根目录。skills_load 接受 outline 和 section(与 load --outline / --section KEY 相同)。

库

use craftbag::{discover, DiscoveryOptions};

fn main() -> std::io::Result<()> {
    let cwd = std::env::current_dir()?;
    let report = discover(&cwd, &DiscoveryOptions::default());
    for skill in &report.skills {
        println!("{} {}", skill.name, skill.description);
    }
    Ok(())
}

默认启用 implicit_roots(从当前工作目录到 Git 根目录的 .agents,以及 $HOME/.agents)。对于仅使用剩余目录的宿主,可将其设为 false,并将集合根目录放入 paths。format_load_view 可以打印大纲或单个标题,而不是整个正文。

参与贡献

请参阅 CONTRIBUTING.md。安全问题请报告至 SECURITY.md。路线图和治理信息见 ROADMAP.md 和 GOVERNANCE.md。

许可证

Apache-2.0 或 MIT,任选其一。请参阅 LICENSE 和 LICENSE-APACHE。

评论

支持 Markdown

第一次接触 MCP?

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

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