workiq代理
扩展 微软工作智商 具有广泛的MCP客户端支持、结构化搜索工具、交互式REPL和与OpenAI兼容的HTTP API。
它做什么
workiq代理增强了Work IQ的MCP服务器,使其与Claude Code、VS Code、Codex和其他MCP客户端无缝协作。
在MCP模式下,代理位于MCP客户端和Work IQ服务器之间:
MCP Client workiq-proxy workiq mcp它
- 扩展MCP功能 --添加对以下内容的支持
prompts/list,resources/list,以及resources/templates/list因此,每个MCP客户端都能干净地连接 - 宣传全部功能 --确保客户端在初始化过程中看到功能齐全的服务器
- 经得起未来考验 --当Work IQ天生具备这些能力时,会自动退出
- 错误富集 --用故障排除上下文包装不透明错误(不接受EULA、令牌保护/错误530084、Entra ID条件访问/AADSTS、需要交互式登录和“创建对话失败”)
- 合成工具 --显示7个特定于域的工具(
search_emails,search_documents,search_chats,search_channels,search_meetings,search_people,search_external)支持由ask_work_iq - 交互式REPL --当从没有参数的终端运行时,使用斜线命令启动Bubble Tea UI(
/ask,/emails,/docs,/chats,/channels,/meetings,/people,/accept-eula,/tools,/help,/quit)、会话历史和魅力标记渲染 - 与OpenAI兼容的HTTP API —
workiq-proxy serve使用启动本地服务器/v1/chat/completions(流媒体和非流媒体)以及/v1/models - CLI直通 --当从带有参数的交互式终端运行时,委托给底层
workiqCLI(EULA接受、认证、查询),因此您只需要一个软件包 - 流量记录 --将所有JSON-RPC消息记录到
~/.work-iq-cli/mcp-traffic.log
安装
curl -fsSL https://stuffbucket.github.io/workiq-proxy/install.sh | sh安装程序检测(或安装)Node.js,并通过npm设置workiq代理。
在Windows(PowerShell)上:
irm https://stuffbucket.github.io/workiq-proxy/install.ps1 | iex或者,直接使用npm安装:
npm install -g @stuffbucket/workiq-proxy这也会安装 @microsoft/workiq 作为依赖关系,不需要单独的设置。npm包提供了这两种功能 workiq-proxy 和 wiq 作为二进制文件。
或者从以下网址下载二进制文件 并将其放置在您的路径中。
先决条件
在使用代理之前,请从您的终端设置Work IQ:
# First run: accepts EULA interactively, then triggers browser auth
npx -y @stuffbucket/workiq-proxy ask交互式会话将引导您完成EULA接受并通过浏览器登录。一旦完成,MCP服务器就会静默地重用缓存的令牌。
您也可以直接接受EULA:
npx -y @stuffbucket/workiq-proxy accept-eula要验证身份验证是否以非交互方式工作,请执行以下操作:
npx -y @stuffbucket/workiq-proxy ask -q "What's on my calendar?"命令
| 命令 | 描述 |
|---|---|
| *(无参数,TTY)* | 启动交互式REPL |
ask -q "..." | 向Microsoft 365 Copilot提问(直接转到 workiq) |
accept-eula | 通过MCP接受Work IQ EULA accept_eula 工具 |
mcp | 启动MCP代理服务器(stdio)——在没有TTY时也是隐式模式 |
serve | 在本地主机上启动与OpenAI兼容的HTTP API |
json | 交互式JSON-RPC测试模式 |
version | 显示workiq CLI版本(直通) |
help | 显示使用情况摘要 |
配置
克劳德代码
项目级别 (添加到 .mcp.json 在当前目录中):
claude mcp add --transport stdio workiq --scope project -- npx -y @stuffbucket/workiq-proxy用户级别 (适用于所有项目):
claude mcp add --transport stdio workiq --scope user -- npx -y @stuffbucket/workiq-proxy或添加到 .mcp.json 手动:
{
"mcpServers": {
"workiq": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@stuffbucket/workiq-proxy"]
}
}
}VS代码/GitHub副本
项目级别 --添加到 .vscode/mcp.json:
{
"servers": {
"workiq": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@stuffbucket/workiq-proxy"]
}
}
}用户级别 --添加到VS Code用户设置(settings.json):
{
"mcp": {
"servers": {
"workiq": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@stuffbucket/workiq-proxy"]
}
}
}
}OpenAI Codex命令行界面
添加 .codex/mcp.json:
{
"mcpServers": {
"workiq": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@stuffbucket/workiq-proxy"]
}
}
}旗帜
| 标志 | 默认值 | 描述 |
|---|---|---|
--workiq-cmd | npx -y @microsoft/workiq | 访问Work IQ CLI的基本命令(代理附加 mcp 对于MCP模式) |
--log-file | ~/.work-iq-cli/mcp-traffic.log | 覆盖日志文件路径 |
--no-log | false | 禁用流量记录 |
--port | 11435 | 港口 serve 模式(如果繁忙,则寻找下一个可用的模式) |
全局安装的Work IQ CLI示例:
{
"mcpServers": {
"workiq": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@stuffbucket/workiq-proxy", "--workiq-cmd", "workiq"]
}
}
}验证
配置后,检查服务器是否连接:
- 克劳德代码: 跑
/mcp查看服务器状态和可用工具 - VS代码: 检查输出面板中的MCP服务器状态
您应该看到9个工具: accept_eula, ask_work_iq,再加上7个合成搜索工具。
故障排除
该代理通过可操作的提示丰富了五类上游错误:
| 错误模式 | 可能原因 | 修复 |
|---|---|---|
| EULA/许可协议 | 不接受Work IQ EULA | 运行 workiq-proxy accept-eula |
| 错误530084/令牌保护 | 组织需要令牌保护CA策略 | 要求IT管理员豁免Work IQ CLI应用程序 |
| AADSS/安全策略 | Entra ID条件访问策略阻止 | 检查错误代码并联系IT管理员 |
| 需要交互 | 需要浏览器登录 | 运行 workiq-proxy ask -q "What's on my calendar?" 重新验证 |
| 创建对话失败 | 身份验证令牌已过期或复制副本许可证处于非活动状态 | 运行 workiq-proxy ask -q "What's on my calendar?" 重新验证 |
服务器未连接 --检查 ~/.work-iq-cli/mcp-traffic.log 获取完整的JSON-RPC转录。
发展
# Build
make build
# Test
make test
# Lint (Go + JS)
make lint
# Cross-compile all platforms
make all程序化API
使用workiq代理作为依赖项,将Work IQ嵌入到您自己的Node.js项目中:
npm install @stuffbucket/workiq-proxy基于管道(无端口,无网络)
const { createClient } = require("@stuffbucket/workiq-proxy");
const client = await createClient();
const answer = await client.ask("What's on my calendar?");
console.log(answer);
const emails = await client.searchEmails({ from: "alice", date_range: "last week" });
const docs = await client.searchDocuments({ keywords: "quarterly report" });
const chats = await client.searchChats({ person: "bob", keywords: "standup" });
await client.close();createClient() 在stdio管道上生成workq代理——没有端口,没有HTTP。MCP握手是自动进行的。
| 方法 | 说明 |
|---|---|
ask(question) | 向Microsoft 365 Copilot提问 |
searchEmails(params) | 搜索电子邮件(from, subject, keywords, date_range) |
searchDocuments(params) | 搜索文档(filename, keywords, site, file_type) |
searchChats(params) | 搜索聊天记录(person, keywords, date_range, channel) |
callTool(name, args) | 按名称调用任何MCP工具 |
listTools() | 列出所有可用工具 |
close() | 关闭子进程 |
选项: createClient({ workiqCmd?, noLog? })
HTTP服务器(兼容OpenAI)
如果您需要HTTP API(例如用于非节点消费者):
const { createServer } = require("@stuffbucket/workiq-proxy");
const server = await createServer(); // starts serve --json
const models = await server.listModels(); // /v1/models
const reply = await server.chat("What's on my calendar?");
console.log(reply.choices[0].message.content);
await server.close();| 方法 | 说明 |
|---|---|
server.url | 基本URL(例如。 http://127.0.0.1:11435) |
server.listModels() | 列出可用型号 |
server.chat(message) | 发送聊天消息(字符串或完整的OpenAI请求体) |
server.chat(body, { stream: true }) | 流式传输SSE块 |
server.onEvent(fn) | 订阅JSONL日志事件;返回取消订阅功能 |
server.events | 所有捕获的日志事件的数组 |
server.close() | 关闭服务器 |
选项: createServer({ port?, workiqCmd?, noLog? })
许可证
麻省理工学院——见 许可证Charmbraselet库在MIT许可证下使用(请参阅许可证中的第三方通知)。
