mcpField
I
ImmyBot

ImmyBot

本地服务
github.com云与基础设施02 周前更新

关于 ImmyBot

ImmyBot 是面向 Windows 终端管理和软件部署自动化的 MCP 服务,覆盖计算机、软件、部署、脚本、租户及维护会话。它通过决策树按领域组织工具;软件部署先配置目标状态,再由维护会话执行协调。

主要功能

  1. 01按领域导航工具
  2. 02管理计算机与终端清单
  3. 03搜索软件并暂存安装部署
  4. 04管理脚本、租户和维护会话
  5. 05监控后台任务

适用场景

  1. 01查询计算机及其硬件和软件清单
  2. 02搜索软件并为指定设备暂存部署
  3. 03启动维护会话以协调部署状态
  4. 04查看后台操作进度

MCP 相关

作为 MCP 服务,它向 MCP 客户端公开 ImmyBot 的终端管理和软件部署工具。支持 stdio 与 HTTP;HTTP 网关模式可通过请求头提供凭据,并使用 Microsoft Entra ID OAuth 2.0 认证。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"wyre-ai-immybot": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"IMMYBOT_TENANT_ID",
"-e",
"IMMYBOT_CLIENT_ID",
"-e",
"IMMYBOT_CLIENT_SECRET",
"-e",
"IMMYBOT_INSTANCE_SUBDOMAIN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/immybot-mcp:v1.2.14"
],
"env": {
"IMMYBOT_TENANT_ID": "<IMMYBOT_TENANT_ID>",
"IMMYBOT_CLIENT_ID": "<IMMYBOT_CLIENT_ID>",
"IMMYBOT_CLIENT_SECRET": "<IMMYBOT_CLIENT_SECRET>",
"IMMYBOT_INSTANCE_SUBDOMAIN": "<IMMYBOT_INSTANCE_SUBDOMAIN>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e IMMYBOT_TENANT_ID -e IMMYBOT_CLIENT_ID -e IMMYBOT_CLIENT_SECRET -e IMMYBOT_INSTANCE_SUBDOMAIN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/immybot-mcp:v1.2.14
需要配置的环境变量
IMMYBOT_TENANT_IDImmyBot Azure AD tenant ID
IMMYBOT_CLIENT_IDImmyBot OAuth client ID
IMMYBOT_CLIENT_SECRET密钥ImmyBot OAuth client secret
IMMYBOT_INSTANCE_SUBDOMAINImmyBot instance subdomain (e.g. 'acme' for acme.immy.bot)
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

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

安装包
ocighcr.io/wyre-ai/immybot-mcp:v1.2.14

工具

还没有获取到工具列表

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

详细介绍

@wyre-ai/immybot-mcp

ImmyBot 的 MCP 服务——用于 Windows 终端管理和软件部署自动化。

功能

  • 🔐 OAuth 2.0 身份验证 - Microsoft Entra ID 客户端凭据
  • 🏢 多租户支持 - 按实例配置子域名
  • 🧭 决策树导航 - 按领域整理工具发现
  • 💻 全面覆盖 - 计算机、软件、部署、脚本、租户、维护会话、任务
  • ⚡ 网关就绪 - 为 WYRE MCP Gateway 提供无状态的按请求操作
  • 🚀 Docker 部署 - 支持容器部署并提供健康检查
  • 📊 结构化日志记录 - 详细的操作跟踪

快速开始

Docker(推荐)

镜像在容器内监听 0.0.0.0,并默认使用 AUTH_MODE=gateway。将端口发布到环回地址,并传入真实的 CONDUIT_S2S_SECRET。在网关模式下,ImmyBot 凭据会通过请求头随每个请求传入;不会从环境变量中读取。

docker run -d \
  --name immybot-mcp \
  -p 127.0.0.1:8080:8080 \
  -e CONDUIT_S2S_SECRET \
  -e AUTH_MODE=gateway \
  -e MCP_TRANSPORT=http \
  -e MCP_HTTP_PORT=8080 \
  -e LOG_LEVEL=info \
  ghcr.io/wyre-ai/immybot-mcp:latest

如果未设置 CONDUIT_S2S_SECRET,Compose 会拒绝启动。网关服务不会设置 IMMYBOT_* 变量或 env_file,因此项目 .env 文件无法注入静态供应商凭据。它会发布 127.0.0.1:8080:8080:

# openssl rand -hex 32 — do not use a placeholder such as changeme
CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" docker compose up
直接安装
npm install @wyre-ai/immybot-mcp
npx @wyre-ai/immybot-mcp

导航

该服务使用决策树导航,按领域整理工具:

  1. 开始 → immybot_navigate → 选择领域
  2. 领域工具 → 特定领域的操作
  3. 返回 → immybot_back → 主导航
可用领域
  • computers - 设备和终端管理
  • software - 应用程序和软件包管理
  • deployments - 软件部署配置
  • scripts - PowerShell 脚本执行和管理
  • tenants - 客户组织管理
  • maintenance_sessions - 设备维护和状态协调
  • tasks - 后台操作监控

身份验证

ImmyBot 使用 Microsoft Entra ID 的 OAuth 2.0:

必需的配置
字段说明示例
instanceSubdomainImmyBot 实例子域名acmemsp
tenantIdMicrosoft Entra 租户 ID12345678-1234-1234-1234-123456789abc
clientId应用程序(客户端)ID87654321-4321-4321-4321-cba987654321
clientSecret客户端密钥值your-client-secret
设置步骤
  1. 在 Microsoft Entra ID 中注册企业应用程序
  2. 向应用程序授予 ImmyBot API 权限
  3. 为应用程序创建客户端密钥
  4. 在 ImmyBot 设置中配置应用程序

OAuth 作用域:api://{client_id}/.default

使用示例

1. 导航到计算机领域
// Start navigation
await callTool('immybot_navigate', { domain: 'computers' });

// List computers
await callTool('immybot_computers_list', { 
  tenantId: 1,
  isOnline: true 
});

// Get computer details
await callTool('immybot_computers_get', { computerId: 123 });
2. 软件管理
// Navigate to software domain
await callTool('immybot_navigate', { domain: 'software' });

// Search for software
await callTool('immybot_software_search', { query: 'Chrome' });

// Install software (stages for maintenance session)
await callTool('immybot_software_install', {
  softwareId: 456,
  computerIds: [123, 124, 125],
  autoUpdate: true
});
3. 维护会话
// Navigate to maintenance sessions
await callTool('immybot_navigate', { domain: 'maintenance_sessions' });

// Start maintenance session (reconciles deployments)
await callTool('immybot_maintenance_sessions_start', {
  computerId: 123,
  sessionType: 'Manual'
});

// Check session status
await callTool('immybot_maintenance_sessions_get', { sessionId: 789 });

两步部署模型

⚠️ 重要:ImmyBot 使用两步部署工作流:

  1. 配置目标状态 - 软件安装会创建部署
  2. 通过维护会话进行协调 - 会话会应用目标状态
// Step 1: Stage software installation
await callTool('immybot_software_install', {
  softwareId: 123,
  computerIds: [456]
});
// ↑ This creates a deployment, does NOT install immediately

// Step 2: Reconcile state
await callTool('immybot_maintenance_sessions_start', {
  computerId: 456
});
// ↑ This runs the maintenance session to actually install software

环境变量

复制 .env.example,然后设置以下变量。

网关模式(Docker)
变量默认值描述
AUTH_MODEdirect为 WYRE MCP Gateway 设置为 gateway。网关模式要求每个 /mcp 请求都携带四个 x-immybot-* 凭据标头,且绝不会回退到 IMMYBOT_*。Docker 镜像和 Compose 的默认值为 gateway。
MCP_TRANSPORTstdio传输模式(http 或 stdio)
MCP_HTTP_PORT8080HTTP 服务端口
MCP_HTTP_HOST设置了有效的 CONDUIT_S2S_SECRET 且未设置此变量时为 0.0.0.0;用于不安全开发绕过时为 127.0.0.1绑定地址。配置了密钥时会遵循此值,包括 0.0.0.0,以确保容器部署仍可访问。镜像和 Compose 将其设为 0.0.0.0。
CONDUIT_S2S_SECRET—HTTP 必需。用于校验 /mcp 上 X-Gateway-S2S 的 HMAC 密钥。使用 openssl rand -hex 32 生成。如果为空或是已知占位符,HTTP 服务会记录错误并以非零状态码退出。此值绝不会被记录。
MCP_ALLOW_INSECURE_DEV未设置精确设为 1,即可在未设置 CONDUIT_S2S_SECRET 的情况下启动 HTTP。系统会记录警告、不强制校验 X-Gateway-S2S,且仅绑定 127.0.0.1。如果 MCP_HTTP_HOST 不是回环地址,则拒绝启动。占位符密钥仍会导致启动被拒绝。仅用于本地开发。
LOG_LEVELinfo日志级别(debug、info、warn、error)

/health 无需身份验证,也不会读取凭据。stdio 传输不使用 CONDUIT_S2S_SECRET。

直接模式(CLI)
变量必需描述
IMMYBOT_INSTANCE_SUBDOMAIN✅ImmyBot 实例子域名
IMMYBOT_TENANT_ID✅Microsoft Entra 租户 ID
IMMYBOT_CLIENT_ID✅应用程序客户端 ID
IMMYBOT_CLIENT_SECRET✅客户端密钥
HTTP 身份验证

设置了 MCP_TRANSPORT=http 和 CONDUIT_S2S_SECRET 时,每个 /mcp 请求都必须包含 X-Gateway-S2S。校验逻辑位于 src/s2s-verify.ts 的 verifyS2sHeader 中:标头值格式为 t=<unix seconds>,v1=<hex>,其中 hex 是以 CONDUIT_S2S_SECRET 为密钥、对字面字符串 t=<unix seconds> 计算的 HMAC-SHA256(64 个小写十六进制字符)。时间戳与服务器时钟的偏差必须在 300 秒以内。缺少标头或标头无效时,服务器会在读取供应商凭据之前返回 HTTP 401。

TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
  -H 'X-ImmyBot-Instance-Subdomain: acmemsp' \
  -H 'X-ImmyBot-Tenant-Id: 12345678-1234-1234-1234-123456789abc' \
  -H 'X-ImmyBot-Client-Id: 87654321-4321-4321-4321-cba987654321' \
  -H 'X-ImmyBot-Client-Secret: your-client-secret' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

在 AUTH_MODE=gateway 模式下,必须提供这四个 X-ImmyBot-* 标头。请求缺少其中任何一个,都会收到 HTTP 401,且不会回退到进程环境中的 IMMYBOT_*。直接模式(未设置 AUTH_MODE)仍要求有效的 X-Gateway-S2S 标头,随后使用 IMMYBOT_* 环境变量。直接模式不会读取 X-ImmyBot-* 标头。

未配置密钥的本地 HTTP 仅用于开发。它会绑定到 127.0.0.1 并记录警告。若 MCP_HTTP_HOST 不是回环地址(包括镜像默认值 0.0.0.0),启动将退出。不要将该端口发布到回环地址之外。

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start

工具参考

导航工具
工具描述
immybot_navigate导航到域
immybot_status显示当前状态
immybot_back返回主菜单
计算机工具
工具描述
immybot_computers_list列出计算机并进行筛选
immybot_computers_get获取计算机详情
immybot_computers_search按名称搜索计算机
immybot_computers_inventory获取硬件/软件清单
immybot_computers_create创建计算机记录
immybot_computers_deployments列出计算机部署
immybot_computers_trigger_checkin强制 Agent 签到
软件工具
工具描述
immybot_software_list_global列出全局软件包
immybot_software_list列出所有软件(全局 + 租户)
immybot_software_get获取软件详情
immybot_software_search按名称搜索软件
immybot_software_versions列出软件版本
immybot_software_latest_version获取最新版本
immybot_software_categories列出类别
immybot_software_publishers列出发布者
immybot_software_install暂存软件安装
immybot_software_stats获取安装统计信息

错误处理

服务会提供结构化错误响应:

{
  "content": [{"type": "text", "text": "Error: Authentication failed"}],
  "isError": true
}

常见错误类型:

  • 身份验证错误 - 凭据无效或令牌已过期
  • 未找到错误 - 资源不存在
  • 验证错误 - 缺少或无效的参数
  • 速率限制错误 - 请求过多
  • 服务器错误 - ImmyBot API 内部问题

开发

从源代码构建
git clone https://github.com/WYRE-AI/immybot-mcp.git
cd immybot-mcp
npm install
npm run build
npm start
测试
npm test
Docker 构建
docker build -t immybot-mcp --secret id=npmrc,src=$HOME/.npmrc .

已签入的 Compose 文件采用网关模式。它需要 CONDUIT_S2S_SECRET,且不会传递静态的 IMMYBOT_* 凭据。

支持

许可证

Apache-2.0 - 详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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