Community图像github.com

jzubielik/grok-mcp

用于处理 Grok MCP 工具(智能体提示词与工具循环、图像分析、图像生成),或估算当前模型上某任务的 token 成本,或当任务涉及超过 5 万 token、大文件或全代码库分析时,决定是否通过 Grok 路由以节省成本并选择合适的模型。

grok-mcp 是什么?

该技能提供了一个全面的 MCP(Model Context Protocol)实现,用于与 xAI 的 Grok 模型交互。它涵盖了一系列工具,包括 `agent`(用于带工具循环的文本和图像分析)、`read`(用于提问文档)、`shell`(用于执行命令)、`search`(用于网络搜索)以及 `generate_image`(用于图像生成)。其核心设计原则是“自己先做”,仅当当前模型无法胜任(如图像生成、大上下文、图像输入)或用户明确要求时,才将任务路由到 Grok。技能强制要求在每次调用时显式选择模型,并提供基于实时 xAI API 的价格和上下文窗口列表。它包含一个详细的成本估算机制,要求在调用前估算 token 成本,对于超过 2 美元的任务需获得用户批准,并始终传递 `max_cost_usd` 以控制成本。该技能支持各种平台(Claude Code、Cursor、Codex 等),通过 SKILL.md 文件提供指导,帮助开发者决定何时使用 Grok 以及选择哪个模型,从而实现成本效益最大化。

兼容平台~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/jzubielik/grok-mcp/tree/HEAD/skills/grok-mcp

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Grok MCP — 智能体技能参考

使用此文件来决定调用哪个工具、使用哪个模型,以及何时不调用 Grok。 没有默认模型——你在每次调用时都要传递 model,并有意地选择它: 选择能胜任工作的最便宜模型;仅当质量不足时才升级。


何时使用 Grok MCP 与自己完成

任务使用 Grok MCP自己完成
用户明确要求使用 Grok✅ 始终遵循请求—
生成或编辑图像✅ 始终✗ 大多数模型无法生成图像
分析本地文件图像✅ agent(model=..., image_paths=[...])✗ 需要磁盘上的文件
大型代码库分析(超过 20 万 token)✅ agent(model=<large-context>, tools=["read"])✗ 上下文限制
比较你的回答与 Grok 的回答✅ 调用两者✅ 调用两者
通用文本/推理(未提示)✗ 不必要的成本✅ 优先
代码生成(未提示)✗ 除非你当前模型不可用✅ 优先

默认规则:自己先做。仅在以下情况才使用 Grok:

  • 用户明确要求使用 Grok(例如“问 Grok”、“用 Grok”、“用 Grok 生成”)
  • 你当前的模型无法完成任务(图像生成、本地文件视觉、上下文耗尽)
  • 用户要求比较你的回答与 Grok 的回答

选择模型——每次调用由你决定

每个运行 Grok 模型的工具(agent、带问题的 read、shell、search、 generate_image*)都需要 model。没有角色、没有默认值、没有 auto 路由器。 缺失或未知的模型会直接失败并返回有效选项列表。

**选项来源:**每个工具的描述都列出了当前的 xAI 目录—— ID、上下文窗口、每 100 万 token 的价格(正常和缓存)以及接受图像输入的模型的 [images]。 该列表在服务器启动时从实时 xAI API 填充; list_models(refresh=true) 会重新获取目录,报告更改内容并刷新工具描述。 切勿凭记忆硬编码模型名称或价格——请阅读列表。

**角色标签。**服务器根据实时目录标记模型,而不是按名称——因此以下策略 在模型更换时仍然有效:cheapest(最低价格)、flagship(最新一代、 最深、最贵)、code(针对代码优化)。按标签和显示的价格选择。

默认策略——从便宜的模型开始,仅在证据充足时升级:

  1. 常规工作(问题、摘要、提取、分类、代码编辑、文件审查) → cheapest 模型,如果模型支持则使用 reasoning_effort="low"。
  2. 仅当廉价运行的答案明显不足,或任务涉及跨多个文件的深度多步骤分析时才升级到 flagship。不是为了“保险”。
  3. 长时间或工具密集型运行:tools=["read"] + 命名文件、background=True,以及 你根据下面估算选择的明确 max_cost_usd——切勿依赖服务器默认值。
  4. 读取结果:cost_usd、stopped 和 hint。hint 表示运行提前结束或 在旗舰模型上花费很高——请遵循它(在 cheapest 上重试,缩小任务范围),而不是 重新运行相同的调用。
需求选择
输入超过约 20 万 token上下文窗口能容纳的模型——检查 ctx
图像输入标记为 [images] 的模型
图像生成在最便宜的图像模型上迭代,最终在高质量模型上渲染

成本门控——每个 agent() / read / shell / search 调用都必须执行

1. 首先估算并告知用户。 在调用前,向用户写一行: 估算:~<N>K 输入 token,~<R> 轮次,<model> → ~$<X>。对于微小的 单次调用(一个简短问题),一个子句就足够了(“约 2K token,<$0.01”)。根据工具描述中的价格计算(切勿凭记忆):

  • 单次(无 tools):输入_token × 输入价格 + 预期输出 × 输出价格 (1 token ≈ 4 个字符;推理 token 按输出计费)。
  • 工具循环:每轮都会重新发送整个对话,因此成本随轮次增加。使用 轮次 × 平均上下文 × 缓存价格 加上每轮的新 token 和输出。 本次会话中的历史 cost_usd 值是最好的校准——优先于理论值。
  • 不确定?取上限:这也将是你传递的 max_cost_usd。

2. 超过 2 美元需要用户批准。 如果估算超过 2 美元,请勿立即调用:显示估算值、模型以及 与廉价运行相比的优势,并等待明确同意。批准仅适用于该特定任务,不适用于后续任务。 等于或低于 2 美元时,无需询问即可继续。

3. 始终传递 max_cost_usd:估算值 + 约 30% 的余量,上限为 2 美元,除非用户 批准了更多(则最多不超过他们批准的金额)。服务器的 GROK_MAX_COST_USD(默认为 2.5 美元) 是硬上限,而不是预算:更高的 max_cost_usd 会被上限限制,因此需要更多成本的运行 必须拆分,或者操作者必须提高上限。

4. 始终报告任务消耗情况。 每次调用完成后——包括使用 get_job 收集的后台作业—— 告知用户:模型、cost_usd 和 token(prompt / cached / completion / reasoning), 以及 iterations 和 stopped。即使成本很小也要这样做, 当运行失败或提前停止时也要报告。仍在 running 的作业尚无成本—— 也要说明,然后在收集时报告。如果实际成本超过估算值超过约 50%,也要说明。

reasoning_effort(low/medium/high,某些模型也支持 none)是按调用传递的,并传递给 API。不同模型支持程度不同(目录未说明哪些模型支持):某些模型拒绝它,其他模型 拒绝 none。当你未设置它时,flagship 模型以 low 运行,而不是其自身的(昂贵的) 默认值,任何其他模型使用其自身默认值;如果模型拒绝该参数,服务器会为其删除默认值。 当深度至关重要时,显式设置它(high)——显式值始终按原样发送, 如果被拒绝,则作为 API 错误返回。

任务模型
快速提问、摘要、提取、分类列表中最便宜的模型
代码生成/重构如果列出则使用代码模型,否则使用便宜的通用模型
深度分析、多步推理、审查多个文件最新的旗舰模型(最高版本)
输入超过约 20 万 token上下文窗口能容纳的模型——检查 ctx
图像输入标记为 [images] 的模型
图像生成在最便宜的图像模型上迭代,最终在高质量模型上渲染


工具 → 模型快速参考

agent(prompt, model, tools?, image_paths?, system?, conversation?, file_paths?, reasoning_effort?, max_iterations?, max_seconds?, max_cost_usd?, background=False)

用于向 Grok 发送文本(和图像)的唯一工具。

参数默认值说明
model必需参见选择模型
tools[]Grok 可自行调用的工作空间工具:read、write、shell、fetch、search。未知名称→立即报错
image_paths—随提示词一起发送的本地图像(模型必须支持 [images]);必须对服务器可见——参见路径
max_iterations100工具循环中的模型轮次(服务器上限——你只能降低它)
max_seconds1800运行的挂钟时间预算(服务器上限)
max_cost_usd2.5运行的估算美元预算(服务器上限——更高的值会被上限限制)
conversation—(无状态)任务名称 "<项目>/<任务>",例如 "grok-mcp/security-audit"——跨同一任务的多次调用保持上下文;Grok 按需拉取历史记录(get_recent_history/search_history)。新任务→新名称;一次性调用→省略(不保留历史记录;后台作业仍会保留结果几天)。项目前缀很重要:通过 HTTP 时服务器无法区分不同项目。≤ 200 个字符,无控制字符
file_paths—服务器端注入的文件内容(你选择文件)
reasoning_effort在 flagship 上为 low,否则为模型默认值按调用;显式值按原样发送
backgroundFalse立即返回 {job_id};使用 get_job(job_id) 收集。长时间运行不需要——参见限制

未知参数会被拒绝并返回有效参数列表。

返回(美化的 JSON):

{
  "answer": "...",
  "model": "grok-4.3",
  "reasoning_effort": "low",
  "tokens": {"prompt": 6909, "cached": 576, "completion": 49, "reasoning": 141},
  "cost_usd": 0.0085,
  "tool_calls": [{"tool": "read", "args": {"path": "README.md"}, "result_chars": 22463}],
  "iterations": 2,
  "stopped": "answer",
  "hint": "仅当运行提前结束或在旗舰模型上花费很高时才存在"
}

stopped 说明循环如何结束:answer(正常)、max_iterations、context(窗口几乎 满了)、loop(重复了相同的工具调用)、time(max_seconds)或 cost(max_cost_usd)。 在每种情况下,最后一轮都无工具运行,因此 answer 始终包含 Grok 从收集到的信息中得出的结论——工作不会被丢弃。

限制(服务器环境变量,默认值)

限制默认值环境变量发生什么
前台调用持续时间60 秒GROK_FOREGROUND_TIMEOUT调用移至后台:你得到 {job_id, status: "running", note}——使用 get_job 收集。不会丢失任何内容;你不会遇到客户端超时
运行持续时间1800 秒GROK_JOB_MAX_SECONDS / max_seconds最终答案,stopped: "time"
运行成本2.5 美元GROK_MAX_COST_USD / max_cost_usd最终答案,stopped: "cost"
模型轮次100GROK_MAX_ITERATIONS / max_iterations最终答案,stopped: "max_iterations"
输入(提示词 + file_paths + images)模型窗口的 60%GROK_INPUT_MAX_RATIO在任何 API 调用之前被拒绝,并命名窗口能容纳的模型
一个工具结果窗口的 15%GROK_TOOL_RESULT_MAX_RATIOGrok 会得到“结果太大——请读取一行范围或使用 grep”
整个对话窗口的 80%GROK_CONTEXT_MAX_RATIO旧结果被修剪一次,然后新结果被拒绝,最后 stopped: "context"
Shell 命令240 秒GROK_SHELL_TIMEOUT命令被终止,错误返回给 Grok

路径

使用 Docker 设置时,服务器仅能看到其挂载的目录(工作区和 ASSETS_DIR):image_paths、file_paths 以及 Grok 读取的路径必须位于其中—— 主机 /tmp 或临时路径不可见;先将文件复制到工作区。Stdio 服务器可以看到其用户能看到的, 受 GROK_READ_ALLOWED_PATHS 限制(如果已设置)。服务器无法看到的路径 会立即被拒绝,并返回可见根目录列表。

自动项目上下文: 当服务器在 git 项目(stdio)中运行时,agent() 会将要检测到的语言和框架前置到系统提示词中。在 Docker 设置中不会注入任何内容。如果 system 已以 [Project Context] 开头,则跳过注入。

让 Grok 自行收集上下文。 不要自己读取文件并将其粘贴到 提示词中——传递 tools=["read"](添加 shell 用于 git log/grep/测试运行)并描述要查看的内容。 这样文件内容永远不会进入你的上下文:

agent(prompt="审查 src/grok_mcp/tools/agent.py 和 chat.py 中的重复逻辑。",
      model="<来自列表的旗舰模型>", tools=["read", "shell"])

限制读取范围。 在提示词中指定文件名(或狭窄的目录)——"读取你需要的任何内容" 对于整个仓库而言,运行可能会达到 170 万 token。对于大文件,告诉 Grok 使用 shell grep -n 定位代码并仅读取行范围(使用 offset/limit 的 read)。

当你已经确切知道哪些文件重要时(一次往返,无需循环),请改用 file_paths。

长时间运行和成本。 每轮都会重新发送整个对话;xAI 会自动缓存未更改的前缀 (tokens.cached,计费约便宜 75%),因此轮次主要支付新内容的成本。 修剪旧结果会导致一次缓存未命中。第三次相同的工具调用会被拒绝;第五次会结束循环。 长时间的调用会在 60 秒后返回 {job_id}——然后轮询 get_job; background=True 仅跳过等待的第一分钟。

图像。 agent(prompt="此截图显示什么?", model=..., image_paths=["<workspace>/shot.png"])——文件必须位于服务器可见的目录中(参见路径)。 每次调用只问一个具体问题;当需要将图像与代码进行比较时,结合使用 tools。


generate_image(prompt, output_path, model, aspect_ratio?, resolution?, ref_image_paths?)

model 是必需的——工具描述列出了图像模型及其每张图像的价格。

成本纪律:

  • 使用最便宜的图像模型迭代,直到提示词正确,然后仅切换到 更高质量的模型进行最终渲染。
  • 返回 {path, model, prompt, format}。

output_path 必须是绝对路径。父目录会自动创建。

使用参考图像(质量层级的模型能更好地传递风格):

  • 当需要现有图像的风格一致性时,传递 ref_image_paths。它最多接受 3 个绝对路径,按顺序——提示词可以按位置引用它们,例如 "第一个的几何形状,第二个的边缘字符"。你传递的每个路径都会转发;不会静默丢弃任何路径。
  • 每个模型的限制(当前图像模型为 3 个)由 xAI 强制执行,如果你超过限制,其消息会逐字显示。
  • 参考文件根据其魔数进行 MIME 嗅探,因此之前的结果可以作为参考直接反馈,无论它保存时使用的扩展名是什么。
  • aspect_ratio(默认为 "1:1")和 resolution(默认为 "1k",也支持 "2k")的应用与无参考时相同。输出不会继承参考图像的比例——16:10 的参考仍会生成方形,除非你另行指定,因此每当你需要超过 1k 方形的内容时,都要显式传递这两者。

成本比较:你当前的模型 vs. Grok

有关你当前模型的确切价格,请查看你的提供商当前的费率。

相关技能