管家MCP
一个MCP服务器,它对目标仓库运行Claude Code会话,并将其作为工具公开。其他Claude Code实例调用 ask 在不将文件转储到自己的上下文中的情况下,获取有关代码库的答案。
_别再做你代理人的中间件了!_
子代理共享其父代理的上下文预算,无法相互通信。Stewards在自己的会话中运行,具有自己的上下文,范围仅限于单个仓库。
将管理员绑定到您的仓库,可以轻松完成以下任务,而无需打开上下文窗口:
*“与FE和内部应用程序协调,以识别任何端点 未使用。"* *“我看到400在我们的身份验证端点上重新出现。与内部服务部门协调,确定原因并提供解决方案。”* *“在structlog上整合我们所有的Python服务需要付出什么努力?”*
默认情况下,管家是只读的,但可以获得与任何Claude Code会话相同的工具。
快速开始
cd /path/to/target-repo
npx stewardmcp@latest init
npx stewardmcp@latest install然后在Claude.md中告诉克劳德:
使用 stewardmcp- MCP服务器询问有关\代码库的问题。比起重述背景,更喜欢后续问题。运作原理
Steward生成了一个指向仓库的Claude Code Agent SDK会话。关于第一个问题,它通过阅读目录结构和CLAUDE.md来预热。后续问题重用相同的会话,因此管家会随着时间的推移建立上下文。如果会话处于空闲状态的时间超过配置的超时时间,则会在下次请求时自动重置。
通信通过stdio使用MCP协议进行。Claude Code将管家作为子进程生成——没有端口,实例之间没有冲突。
先决条件
- 克劳德代码 安装和工作
设置
1.初始化目标仓库
cd /path/to/target-repo
npx stewardmcp@latest init这创建了一个 .stewardmcp/ 目录包含:
config.json--实例名称、空闲超时、允许的工具、预热提示ENGINEER.md--乘务员的角色指示
实例名称来源于目录名称(例如。 stewardmcp-billing-api 回购价格为 /projects/billing-api).如果 .gitignore 或 .dockerignore 存在, .stewardmcp/ 自动附加。
2.用克劳德代码注册
npx stewardmcp@latest install这将管家注册为Claude Code中用户范围内的MCP服务器,因此它在所有项目中都可用。
3.管理实例
npx stewardmcp@latest list # Show all registered steward instances
npx stewardmcp@latest uninstall # Remove this repo's steward from Claude Code用法
安装后,管家工具可供任何兼容MCP的客户端使用。克劳德不会自动给他们打电话——你需要告诉他们管家的存在。
克劳德代码 --在CLAUDE.md中添加以下内容:
使用stewardmcp-billing-apiMCP服务器提问(ask工具)关于计费api代码库。比起重述背景,更喜欢后续问题。
其他MCP客户端 --在系统提示或对话中包含类似的说明。
替换 stewardmcp-billing-api 使用您的实例名称(在 init).
工具
问
向乘务员提问。返回文本答案。
| 参数 | 类型 | 说明 |
|---|---|---|
question | string | 要问的问题 |
caller | string | 询问者的标识符(例如,“fe”、“api”) |
管家阅读代码,解释原因,并简洁地回应。如果调用者在请求之间更改,则会通知管家该切换。
请求会排队——如果管家很忙,呼叫会等待。
状态
返回当前会话状态。没有参数。
{
"state": "idle",
"currentCaller": "fe",
"turnCount": 3,
"idleSeconds": 45,
"idleTimeoutMinutes": 60,
"contextPercent": 32
}清晰
重置管家会话。下一个 ask 将以新的热身重新开始。没有参数。
配置
编辑 .stewardmcp/config.json 在目标仓库中:
| 字段 | 默认值 | 描述 |
|---|---|---|
name | *(来源于目录)* | 用于MCP注册的实例名称 |
idle_timeout_minutes | 480 | 会话重置前的不活动分钟数 |
allowed_tools | ["Read", "Grep", "Glob", "LS"] | 管家会议可以使用的工具 |
warmup_prompt | *(见默认值)* | 会话开始时发送提示以熟悉代码库 |
max_context_characters | 200000 | 会话上下文的角色预算 |
context_warning_threshold | 0.6 | 建议重置的上下文分数 |
log_enabled | true | 写问答对 .stewardmcp/log.json |
max_log_entries | 20 | 日志中保留的最大条目数(最旧的条目已修剪) |
管家的Claude Code会话也会读取目标仓库的 CLAUDE.md 自动(标准克劳德代码行为)。 .stewardmcp/ENGINEER.md 通过以下方式对管家特定行为进行分层 appendSystemPrompt.
会话生命周期
- 热身 在第一个请求时延迟发生,而不是在服务器启动时。
- 多圈 --本次会议贯穿了多个问题。管家会记住会话中的先前上下文。
- 配置重新加载 —
config.json和ENGINEER.md每次请求时都会从磁盘重新加载,因此更改会立即生效。目标仓库的更改CLAUDE.md在会话重置(空闲超时或手动清除)时被拾取。 - 空闲超时 --如果没有请求到达
idle_timeout_minutes,下一个请求会触发完全重启(新会话、重新预热)。每次请求都会重置计时器。 - 手动清除 --呼叫
clear工具强制立即重置会话。 - 日志记录 --何时
log_enabled如果为真,则每个问答交换都会附加到.stewardmcp/log.json.日志的上限为max_log_entries条目。
项目结构
stewardmcp/
├── src/
│ ├── index.ts # Entry point — arg routing
│ ├── types.ts # StewardConfig interface, constants, config loading
│ ├── session.ts # SessionManager class
│ ├── server.ts # createMcpServer()
│ ├── commands.ts # init, install, uninstall, list, help
│ └── serve.ts # serve command — wires session + server + transport
├── defaults/
│ ├── config.json # Default configuration
│ └── ENGINEER.md # Default steward persona
├── package.json
└── tsconfig.json发展
npm install
npm run build # Compile TypeScript
npm run dev # Watch mode许可证
麻省理工学院
