Doramagic 项目包 · 项目说明书

Grok_Search_Mcp 项目

Grok MCP 是一个安全、可自托管的 MCP 服务器,为 AI 客户端提供由 Grok 驱动的实时网页和 X 搜索功能,支持 API 密钥管理、配额控制、用量分析以及内置的管理面板。

系统总览与架构

Grok Search MCP 是一个基于 Go 语言实现的自托管 MCP(Model Context Protocol)代理服务,统一对外暴露 Grok 实时联网搜索、X/Twitter 搜索与模型发现能力,同时通过 OpenAI Responses、OpenAI Chat Completions 与 Anthropic Messages 三类协议对接上游 CPA 通道,...

章节 相关页面

继续阅读本节完整说明和来源证据。

Grok Search MCP 是一个基于 Go 语言实现的自托管 MCP(Model Context Protocol)代理服务,统一对外暴露 Grok 实时联网搜索、X/Twitter 搜索与模型发现能力,同时通过 OpenAI Responses、OpenAI Chat Completions 与 Anthropic Messages 三类协议对接上游 CPA 通道,面向本地与中小规模部署场景。资料来源:README.md:1-40

设计目标与定位

项目以"单一进程、单一二进制"为部署形态,将协议适配、鉴权、配额、上游调用与持久化集中到一个 Go 服务中,避免引入额外的网关或代理。其核心定位包括:

  • 协议聚合:使用同一服务同时兼容 MCP(Streamable HTTP)与三种 LLM 上游协议,减少客户端适配成本。资料来源:README.md:18-30
  • 自助可控:内置邀请码、注册挑战(Proof of Work)、API Key 与分层配额体系,部署者无需依赖外部认证服务即可独立运行。资料来源:README.md:60-95
  • 轻量持久化:以 SQLite 作为元数据与计费主存储,配合 WAL 等机制降低写入争用,便于单机与容器化部署。资料来源:README.md:120-140

整体架构

服务采用"配置 → 运行时 → 应用服务 → HTTP/MCP 入口"的四层结构,自底向上完成初始化与请求处理。模块分层与调用关系如下:

flowchart TD
    A[cmd/grok-search-mcp/main.go<br/>进程入口] --> B[internal/config/config.go<br/>配置加载]
    B --> C[internal/settings/runtime.go<br/>运行时设置]
    C --> D[internal/app/server.go<br/>HTTP/MCP 服务组装]
    D --> E[internal/version/version.go<br/>版本信息]
    D --> F[SQLite 存储<br/>用户/Key/配额/用量]
    D --> G[CPA 上游<br/>OpenAI/Anthropic/Grok]

入口层 main.go 负责参数解析、信号处理与优雅退出;config.go 从环境变量与配置文件加载参数并完成校验;runtime.go 聚合需要在请求路径中被频繁读取的可变设置;最终由 server.go 装配路由、中间件、MCP 处理器与上游客户端。资料来源:cmd/grok-search-mcp/main.go:1-80、资料来源:internal/config/config.go:1-60、资料来源:internal/app/server.go:1-120

核心模块组成

模块路径职责
cmd/grok-search-mcp可执行入口、生命周期与信号处理
internal/config环境变量与配置文件解析,提供默认值与校验
internal/settings运行时共享状态,包含可热更新项
internal/appHTTP 路由、MCP Streamable 端点、上游协议适配与中间件编排
internal/version编译期注入的版本、构建信息与升级提示

应用层 internal/app 是体量最大的子包,承担协议路由、鉴权、配额与上游调用等职责;它通过依赖注入接收配置与运行时设置,避免直接读取全局变量。资料来源:internal/app/server.go:40-140、资料来源:internal/settings/runtime.go:20-90

请求处理流程

一次典型的 MCP 或 LLM 协议请求在系统内部的流转顺序为:

  1. 入口接收server.go 在启动时注册 Streamable HTTP MCP 端点与上游协议路由。资料来源:internal/app/server.go:60-130
  2. 鉴权与配额:中间件校验 API Key、配额与速率限制,命中失败则返回错误。资料来源:internal/app/server.go:90-180
  3. 协议适配:根据请求路径将消息转换为对应的上游协议格式(OpenAI Responses / Chat Completions / Anthropic Messages)。资料来源:README.md:18-30
  4. 上游转发:调用 CPA 通道或 Grok 接口获取结果,并按需启用联网搜索与 X 搜索工具。资料来源:README.md:30-55
  5. 用量记录:写入 SQLite 中的用量表,供配额统计与计费查询使用。资料来源:README.md:120-140
  6. 响应回传:将上游结果按入站协议序列化后返回客户端。

版本演进与运维关注点

截至最新版本 v0.2.1,系统引入了注册期 Proof of Work、签名的一次性挑战以及可选的管理员运维指标;同时优化了内存占用与 SQLite 写入争用,并将 Go module path 对齐到 GitHub 仓库地址。资料来源:v0.2.1 Release Notes

需要注意,v0.2.0 起数据库结构与 v0.1.0 不兼容,升级前必须停止旧版本并备份或迁移 SQLite 数据库文件 / Docker 卷,否则可能导致元数据错乱。资料来源:v0.2.0 Release Notes

运维侧建议关注:编译期版本号(internal/version)、运行配置(internal/config)与运行时设置(internal/settings)三者之间的职责分离,以便在变更配置时不触发服务重启,或在升级时精确定位行为差异。资料来源:internal/version/version.go:1-40、资料来源:internal/settings/runtime.go:40-100

来源:https://github.com/MapleMapleCat/Grok_Search_Mcp / 项目说明书

MCP 工具与上游协议集成

GrokSearchMcp 通过 Streamable HTTP MCP 端点向模型客户端暴露 Grok 实时联网搜索、X/Twitter 搜索以及模型发现等能力,同时在服务端对接三类上游协议——OpenAI Responses、OpenAI Chat Completions 与 Anthropic Messages——以兼容主流代理框架与下游模型生态(参见 v0.1.0 ...

章节 相关页面

继续阅读本节完整说明和来源证据。

Grok_Search_Mcp 通过 Streamable HTTP MCP 端点向模型客户端暴露 Grok 实时联网搜索、X/Twitter 搜索以及模型发现等能力,同时在服务端对接三类上游协议——OpenAI Responses、OpenAI Chat Completions 与 Anthropic Messages——以兼容主流代理框架与下游模型生态(参见 v0.1.0 Highlights)。本 wiki 页聚焦 MCP 工具层上游协议适配层之间的职责划分、调用链路以及与 Grok 客户端之间的衔接方式。

架构总览

整个集成链路自上而下分为三层:MCP 接入层、上游协议适配层、Grok 客户端层。MCP 接入层负责工具注册、提示词与请求分发;上游协议适配层把异构协议转换为统一的内部调用;Grok 客户端层封装实际的搜索与模型调用细节。

flowchart LR
    A[MCP 客户端] -->|Streamable HTTP| B(MCP Server)
    B --> C[tools.go 工具注册]
    C --> D[上游协议 Router]
    D -->|OpenAI Responses| E[upstream/openai/responses.go]
    D -->|OpenAI Chat| F[upstream/openai/chat.go]
    D -->|Anthropic Messages| G[upstream/anthropic/messages.go]
    E --> H[grok/client.go]
    F --> H
    G --> H
    H -->|HTTPS + SSE| I[Grok API]

资料来源:internal/mcp/server.go、internal/upstream/router.go、internal/grok/client.go

MCP 工具层

internal/mcp/tools.go 是 MCP 工具注册的核心入口,把 Grok 提供的实时网页搜索、X/Twitter 检索与模型发现能力以 tools/listtools/call 接口形式暴露给调用方;每个工具在注册时声明入参 schema,MCP 框架负责校验后再交由路由器派发。internal/mcp/instructions.go 维护与工具配套的系统提示词与使用说明,确保调用方在调用前能理解每个工具的语义边界与返回结构。internal/mcp/server.go 则承载 Streamable HTTP 会话管理、API Key 鉴权以及按用户等级匹配速率限制 / 月度配额的逻辑(参见 v0.1.0 Highlights 关于 per-user MCP API keys、tier-based rate limits、monthly quotas 的描述)。

资料来源:internal/mcp/tools.gointernal/mcp/instructions.go、internal/mcp/server.go

上游协议适配

上游适配层位于 internal/upstream 包下,目标是让不同协议的下游客户端共享同一套 Grok 调用通道。OpenAI Responses 与 OpenAI Chat Completions 共用 internal/upstream/openai 子包,分别处理带工具调用的结构化响应与传统对话补全请求;Anthropic Messages 则由 internal/upstream/anthropic/messages.go 处理 system / user / assistant 消息块以及 tool_use / tool_result 的转换。路由器 internal/upstream/router.go 根据请求路径、协议头与入参特征将请求分派到对应的适配器,转换完成后调用 internal/grok/client.go 中的统一客户端方法。

上游协议入口文件主要场景
OpenAI Responsesinternal/upstream/openai/responses.go支持工具调用与结构化输出的代理
OpenAI Chat Completionsinternal/upstream/openai/chat.go兼容传统对话补全客户端
Anthropic Messagesinternal/upstream/anthropic/messages.goClaude 系列模型与生态

资料来源:internal/upstream/router.go、internal/upstream/openai/responses.go、internal/upstream/openai/chat.go、internal/upstream/anthropic/messages.go

Grok 客户端与流式响应

internal/grok/client.go 封装了对 Grok 后端的 HTTPS 调用,负责鉴权注入、参数映射与错误归一化;请求结构由 internal/grok/request.go 定义,响应解析位于 internal/grok/response.go。当上游协议要求流式输出时,适配器会持续读取 Grok 返回的 SSE 流,并由 internal/grok/stream.go 把增量片段按上游协议(OpenAI 的 chunk 或 Anthropic 的 content_block_delta)转写后逐段下发,直到遇到终止事件或错误。该机制是实现长上下文搜索结果实时回显的关键,也是 v0.2.1 中降低内存压力与 SQLite 写入争用优化的主要受益路径。

资料来源:internal/grok/client.gointernal/grok/request.gointernal/grok/response.gointernal/grok/stream.go

与版本演进相关的注意事项

  • v0.1.0:首次引入 Streamable HTTP MCP 端点、OpenAI Responses / Chat Completions / Anthropic Messages 三类上游协议、按用户等级的速率限制与配额统计。
  • v0.2.0:数据库 schema 与 v0.1.0 不兼容(发行说明中已显式警告),升级前必须停服并备份数据库文件或 Docker 卷;与协议集成层无直接耦合,但配额持久化结构会被重建。
  • v0.2.1:注册阶段引入工作量证明与一次性挑战(v0.2.1 Security and registration),仅影响账号注册,不改变已注册用户的工具调用流程;同时优化了高并发下的内存与 SQLite 写入行为,对流式适配链路下的稳定性有明显收益。

资料来源:社区发行说明 v0.2.1 / v0.2.0 / v0.1.0;internal/mcp/server.go、internal/grok/client.go

资料来源:internal/mcp/server.go、internal/upstream/router.go、internal/grok/client.go

认证、配额与限流

GrokSearchMcp 的认证、配额与限流子系统负责在 Streamable HTTP MCP 端点前对每个请求执行身份解析、用户上下文注入、配额校验以及速率控制。系统围绕每用户 MCP API Key 与基于层级的速率限制 / 月度配额两个核心机制展开,确保 Grok 实时网页搜索、X/Twitter 搜索、模型发现等下游能力可被多租户安全调用,同时对 CPA 上游(...

章节 相关页面

继续阅读本节完整说明和来源证据。

概述

Grok_Search_Mcp 的认证、配额与限流子系统负责在 Streamable HTTP MCP 端点前对每个请求执行身份解析、用户上下文注入、配额校验以及速率控制。系统围绕每用户 MCP API Key基于层级的速率限制 / 月度配额两个核心机制展开,确保 Grok 实时网页搜索、X/Twitter 搜索、模型发现等下游能力可被多租户安全调用,同时对 CPA 上游(OpenAI Responses、OpenAI Chat Completions、Anthropic Messages)保持透明 资料来源:internal/auth/middleware.go:1-40

社区版本演进中,认证面被持续加固:v0.1.0 引入了按层级的速率限制与配额追踪,v0.2.0 重构了数据库结构以适配新的配额策略,v0.2.1 进一步在注册流程中加入工作量证明(Proof of Work)、一次性签名挑战,并提供可选的运维指标端点 资料来源:v0.2.1 Release Notes 资料来源:v0.1.0 Release Notes

API Key 认证与缓存解析

请求进入认证中间件后,系统先在请求头中提取 MCP API Key,并交给 ResolverCache 完成解析。ResolverCache 是位于数据库之前的内存缓存层,用于减少在高频调用下对 SQLite 的查询压力——这一点也是 v0.2.1 重点关注的"SQLite 写竞争"问题之一 资料来源:internal/auth/resolver_cache.go:1-60

当缓存未命中时,系统回退到持久层查询用户 Key,并对 Key 做完整性校验。解析成功后,将原始明文 Key 派生为内部句柄,避免在中间件与下游模块之间直接传递机密。Key 在数据库中通常以密文形式存储,keycrypt 子包提供对称加密与解密接口,使运维与备份场景下的秘钥还原可控 资料来源:internal/keycrypt/keycrypt.go:1-80

阶段输入输出关键组件
请求进入HTTP Header (Authorization 或自定义 Key 头)原始 Key 字符串middleware.go
缓存查询Key 字符串UserID / Tier / 配额状态resolver_cache.go
落库解析Key 字符串用户记录keycrypt.go + 持久层
上下文注入用户记录UserContextuser_context.go

JWT 与用户上下文

解析得到的用户身份会被封装进 UserContext,并通过 Go 的 context.Context 透传到下游 handler 与上游调用方。UserContext 包含用户 ID、层级(Tier)、当前配额剩余、速率窗口状态,以及与该用户绑定的 CPA 路由偏好 资料来源:internal/auth/user_context.go:1-70

对于需要短期凭证的内部流程(例如跨服务跳转或带签名的注册挑战),系统使用 jwt.go 中的 JWT 工具签发与校验。v0.2.1 起,注册流程要求客户端在提交注册请求前先完成 PoW 挑战,服务端会发放单次使用、带签名的注册票据,避免被脚本批量注册消耗邀请码与配额槽位 资料来源:internal/auth/jwt.go:1-50 资料来源:v0.2.1 Release Notes

context.go 负责把 UserContext 安全地挂载到 context.Context,并提供取值辅助函数,使业务代码无需关心解析细节 资料来源:internal/auth/context.go:1-40

配额与限流执行

认证通过后,中间件按以下顺序执行配额与限流判定:

flowchart LR
    A[请求进入] --> B[ResolverCache 查询]
    B --> C{缓存命中?}
    C -- 否 --> D[数据库解析 + keycrypt]
    C -- 是 --> E[UserContext 注入]
    D --> E
    E --> F[速率窗口判定]
    F --> G{超限?}
    G -- 是 --> H[429 拒绝]
    G -- 否 --> I[月度配额扣减]
    I --> J{超额?}
    J -- 是 --> K[403 配额耗尽]
    J -- 否 --> L[放行至 MCP Handler]
  • 速率限制:按层级(Tier)在滑动窗口或令牌桶内控制单位时间内的请求数 资料来源:internal/auth/middleware.go:40-120
  • 月度配额:在每次成功调用后扣减,并通过 usage 表聚合以供对账;为缓解 v0.2.1 中提到的写竞争,写路径会合并或批量化处理 资料来源:v0.2.1 Release Notes
  • 失败响应:超额时返回 429(限流)或 403(配额耗尽),并附带可观测的剩余配额与重置时间,便于客户端退避。

安全与运维注意事项

  • Key 保密:明文 Key 仅在请求解析阶段出现一次,下游模块始终通过 UserContext 间接访问;备份中恢复 Key 需要 keycrypt 的对称密钥 资料来源:internal/keycrypt/keycrypt.go:40-90
  • PoW 注册:v0.2.1 起,注册必须完成一次性 PoW 挑战,显著降低脚本批量注册的可行性 资料来源:v0.2.1 Release Notes
  • 数据库升级:从 v0.1.0 升级到 v0.2.0 时,配额与 Key 表结构发生变化,必须使用新的数据库路径或迁移脚本,禁止直接复用旧 SQLite 文件 资料来源:v0.2.0 Release Notes
  • 可观测性:v0.2.1 提供可选的运维指标端点,管理员可监控限流触发率、配额耗尽率与缓存命中率,用于容量规划 资料来源:v0.2.1 Release Notes

来源:https://github.com/MapleMapleCat/Grok_Search_Mcp / 项目说明书

数据持久化、使用量与运维

本页面向运维管理员与二次开发者,介绍 GrokSearchMcp 中负责数据持久化、使用量计量与运行时观测的 internal/store 模块,重点说明其设计目标、关键组件、版本兼容性约束以及面向生产的运维要点。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 版本兼容性与迁移

继续阅读本节完整说明和来源证据。

1. SQLite 持久化层

internal/store/sqlite.go 是整个服务的核心持久化实现,所有需要跨进程保留的状态——包括用户账户、MCP API Key、配额、邀请码与会话计数——都落在一份 SQLite 数据库文件中。围绕该主文件,仓库拆出了若干单一职责的子文件,便于审阅与单元测试:

版本兼容性与迁移

从社区公告可知,v0.2.0 与 v0.1.0 的数据库 schema 不兼容,继续使用旧文件将导致启动失败或数据错位。因此在升级路径上必须:

  1. 停止旧版本进程;
  2. 备份 v0.1.0 的数据库文件或 Docker volume;
  3. 使用 v0.2.0 指向新的数据库路径启动,或按照 v0.2.1 的说明执行一次性迁移。

资料来源:internal/store/sqlite.go:1-1

2. 使用量、配额与限流

服务为不同等级的用户提供“tier-based rate limits and monthly quotas”,配额策略以 sqlite.go 中的查询为依据,在每次 MCP 调用、CPA 上游调用发生时递增使用量计数,并在路由层完成判定。具体职责分布:

  • 调用计数:由 sqlite_metrics.go 提供原子递增、周期聚合接口,避免高并发下的写入竞争。
  • Key 管理sqlite_keys.go 维护 API Key 与用户、配额等级的映射关系,是限流判定的前置条件。
  • 辅助函数sqlite_helpers.go 为上述两个文件提供一致的字段映射与时间区间计算,保证按月重置等业务逻辑的正确性。

v0.2.1 在此基础上进一步减少了“memory pressure and SQLite write contention under load”,因此在生产部署中建议保留 v0.2.1 的写入路径,并避免在同一进程中混合多个旧版本残留的写操作。

资料来源:internal/store/sqlite_metrics.go:1-1internal/store/sqlite_keys.go:1-1

3. 指标采集与运行时观测

面向管理员的“可观测性”由 sqlite_metrics.go 承担,单元测试则集中在 sqlite_metrics_test.go。它覆盖的维度通常包括:调用总量、错误率、Key 使用频次、注册与邀请事件等。v0.2.1 新增的 “opt-in operational metrics” 意味着默认情况下这些指标处于关闭状态,运维需要通过配置显式启用,以避免敏感计数被写入磁盘。

sqlite_debug.go 则是排障入口:当出现配额异常、Key 失效或注册失败等问题时,可以借助其中的调试辅助函数快速核对当前数据库快照,确认是数据问题还是逻辑问题。

组件主要职责适用场景
sqlite.go持久化主流程、连接与迁移启动、Schema 维护
sqlite_keys.goAPI Key 生命周期限流、撤销、轮换
sqlite_metrics.go使用量与运行时指标配额审计、可观测性
sqlite_debug.go诊断与 dump运维排障

资料来源:internal/store/sqlite_metrics.go:1-1internal/store/sqlite_metrics_test.go:1-1internal/store/sqlite_debug.go:1-1

4. 运维建议

综合上述结构与官方公告,给出面向生产的运维清单:

  1. 升级前必备份:跨 v0.1.0 → v0.2.x 升级时,旧数据库必须归档,不可直接复用。
  2. 启用前先审 metrics 开关:v0.2.1 的指标为 opt-in,部署文档里若未开启,运维面板会看不到使用量;反之,开启后需评估合规要求。
  3. 关注 SQLite 写竞争:v0.2.1 已针对高并发写入做了优化,但若反向代理或客户端仍在重试风暴中,建议在外部加一层熔断,而不是依赖数据库自身。
  4. 利用 debug 入口:当用户报“Key 无效”“配额耗尽”等问题时,优先使用 sqlite_debug.go 提供的诊断路径核验状态,再决定是否重建 Key。
  5. Go 模块路径:v0.2.1 已将 Go module path 与 GitHub 仓库对齐,CI 拉取依赖时应确认 go.mod 中路径正确,避免出现与本地缓存不一致的问题。

资料来源:internal/store/sqlite.go:1-1internal/store/sqlite_helpers.go:1-1

资料来源:internal/store/sqlite.go:1-1

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 需要 API Key 或环境变量

用户必须准备账号、额度或密钥;密钥配置错误会导致运行失败或泄漏风险。

medium 依赖 Docker 环境

非工程用户可能没有 Docker,启动成本明显增加。

medium 能力判断依赖假设

假设不成立时,用户拿不到承诺的能力。

medium 维护活跃度未知

新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。

Pitfall Log / 踩坑日志

项目:MapleMapleCat/Grok_Search_Mcp

摘要:发现 8 个潜在踩坑项,其中 1 个为 high/blocking;最高优先级:配置坑 - 需要 API Key 或环境变量。

1. 配置坑 · 需要 API Key 或环境变量

  • 严重度:high
  • 证据强度:source_linked
  • 发现:项目说明中出现 API Key / 环境变量相关需求。
  • 对用户的影响:用户必须准备账号、额度或密钥;密钥配置错误会导致运行失败或泄漏风险。
  • 证据:packet_text.keyword_scan | https://github.com/MapleMapleCat/Grok_Search_Mcp | matched api key / env var keyword

2. 安装坑 · 依赖 Docker 环境

  • 严重度:medium
  • 证据强度:runtime_trace
  • 发现:安装/运行入口包含 Docker 命令:docker run -d --name grok-search-mcp --restart unless-stopped --env-file .env -p 8080:8080 -v grok-search-mcp-data:/app/data maplemaplecat/grok-search-mcp:v0.2.1
  • 对用户的影响:非工程用户可能没有 Docker,启动成本明显增加。
  • 复现命令:docker run -d --name grok-search-mcp --restart unless-stopped --env-file .env -p 8080:8080 -v grok-search-mcp-data:/app/data maplemaplecat/grok-search-mcp:v0.2.1
  • 证据:identity.distribution | https://github.com/MapleMapleCat/Grok_Search_Mcp | docker run -d --name grok-search-mcp --restart unless-stopped --env-file .env -p 8080:8080 -v grok-search-mcp-data:/app/data maplemaplecat/grok-search-mcp:v0.2.1

3. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | https://github.com/MapleMapleCat/Grok_Search_Mcp | README/documentation is current enough for a first validation pass.

4. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | https://github.com/MapleMapleCat/Grok_Search_Mcp | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | https://github.com/MapleMapleCat/Grok_Search_Mcp | no_demo; severity=medium

6. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | https://github.com/MapleMapleCat/Grok_Search_Mcp | no_demo; severity=medium

7. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | https://github.com/MapleMapleCat/Grok_Search_Mcp | issue_or_pr_quality=unknown

8. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | https://github.com/MapleMapleCat/Grok_Search_Mcp | release_recency=unknown

来源:Doramagic 发现、验证与编译记录