ruyi-workbench-oss (wangzhe04/ruyi-workbench-oss) is an MCP server listed on the M8ven Trust Index. It scores 56 out of 100, grade D. It declares 231 tools. No publisher has claimed this listing.

D
Caution
56/100

ruyi-workbench-oss

开源 Windows 本地 AI 工作台|OpenAI-compatible + Claude CLI,99 个桌面/Office 工具,可回退文件操作与可视化多 Agent 工作流。

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

wangzhe04

Source: github_repo_search

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Tool descriptions don’t match what handlers do
1 tool describes read intent but its handler mutates — show_notification (line 54: subprocess.Popen()
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 2 credentials: MCP_TEST_SECRET, WCW_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes206 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

sse_a

a

sse_b

b

sse_c

c

remote_echo

echo over http

sse_echo

echo over sse

sse_new_tool

added later

echo

Echo a message back

add

Add two numbers

screenshot_full

Capture a full-screen screenshot (fake)

diagnostics

Report optional module availability (fake)

write_docx

Write a fake .docx file (mirrors ACC write_document契约)

move_file

Move/rename a file (mirrors ACC move_file契约: source→destination)

copy_file

Copy a file (mirrors ACC copy_file契约: source→destination)

read_file

Read text file (mirrors ACC read_file契约)

write_file

Write/append text file (mirrors ACC write_file契约)

write_document

Write fake .docx (mirrors ACC write_document新形状:含 output_path)

write_excel

Write fake .xlsx (mirrors ACC write_excel契约)

write_pdf

Write fake .pdf (mirrors ACC write_pdf契约:非 .pdf 路径报错)

write_pptx

Write fake .pptx (mirrors ACC write_pptx契约:slides 规格)

excel_beautify

Beautify existing .xlsx (mirrors ACC excel_beautify契约)

excel_chart

Insert chart into existing .xlsx (mirrors ACC excel_chart契约)

chart_image

Render chart .png (mirrors ACC chart_image契约)

image_resize

Resize image (mirrors ACC image_resize契约:ok包络)

window_screenshot

Screenshot a window (mirrors ACC window_screenshot契约:output_path 可选)

get_clipboard_image

Read clipboard image (mirrors ACC get_clipboard_image契约:save_path 可选)

delete_file

Delete a file (mirrors ACC delete_file契约)

slow_task

Sleep ms then return (47b 桥超时契约测试件)

edit_file

Partial edit via exact-string replacement (mirrors ACC edit_file契约:唯一性闸)

fetch

Fetch a URL with SSRF guard (mirrors ACC fetch契约, fake 不联网)

memory_save

Save a memory entry (mirrors ACC memory_save契约)

memory_read

Read a memory entry (mirrors ACC memory_read契约)

memory_list

List memory entries (mirrors ACC memory_list契约)

memory_delete

Delete a memory entry (mirrors ACC memory_delete契约)

sequential_thinking

Record a thinking step (mirrors ACC sequential_thinking契约)

workbench_memory_list

List/search confirmed Workbench Memory metadata for the current project and global scope. Use when the user asks what is remembered or the injected memory preflight/index is insufficient. This does not read full bodies.

workbench_memory_read

Read one confirmed Workbench Memory entry by id. Read only entries relevant to the current request and verify stale facts against the workspace before relying on them.

workbench_memory_propose

Submit one durable memory candidate for user review. It never saves directly: the user must confirm the card shown after the turn. Use when the user explicitly asks to remember something, or for a stable preference, confirmed project convention/decision, or verified recurring lesson that is not alre

workbench_memory_relation_propose

Propose a relation edge between two existing confirmed Workbench Memory entries (supports/contradicts/supersedes/derived_from). It never saves directly: the user must confirm the card after the turn. from/to must be memory ids that already exist in the same scope.

workbench_memory_revise

Propose a revision to an existing confirmed Workbench Memory entry (name/description/type/body). It never saves directly: the user must confirm the card after the turn. Provide the suggested replacement values; unchanged fields may be omitted.

workbench_memory_relation_revoke

Propose revoking (deleting) an existing memory relation edge. It never deletes directly: the user must confirm the card after the turn. Use relationId from listMemoryRelations or a prior confirmed relation.

observation_recall

Recall the original content of a tool result reduced during context compaction, using the rawRef embedded in its reduced view (format history:<turn>:<hash>:<index>:<hash>). When a user asks for an exact historical value/detail and a relevant earlier tool result is marked reduced or omitted, call thi

permission_prompt

Internal: handles --permission-prompt-tool requests by asking the workbench UI to allow/deny a tool call.

powershell_run

Run a one-shot PowerShell command on Windows. For a persistent/interactive terminal that keeps state across calls, use shell_start/shell_send instead.

shell_start

Start a persistent PowerShell session (keeps cwd/vars/background processes across calls). Provider engine only. Returns {shellId}. Then drive it with shell_send / shell_poll.

shell_send

Send a line of input to a shell session and return the output that settles within timeoutMs (best-effort; long tasks: track with shell_poll). output is the increment since the last cursor.

shell_poll

Read new output from a shell session since an absolute byte cursor. Returns {output, cursor, running, exitCode?, truncated?}. Pass the returned cursor back next time to tail incrementally.

shell_kill

Terminate a shell session and its process tree. CAUTION: any un-consumed buffered output of that session is lost, and any long-running command inside it is killed.

shell_list

List active shell sessions: [{shellId,name,cwd,running,exitCode,startedAt,lastUsedAt,bytes}].

script_run

Run a temporary PowerShell, Python, or Node script

file_read

Read a local file. Char slice via offset/limit, or line mode via lineOffset (1-based) / lineLimit (returns cat -n style content with totalLines). Image/binary files are refused (use the vision channel).

file_write

Write a local file

file_edit

Replace text in a local file

file_delete

Delete a local file (checkpointed first, so it can be rolled back). Directories are refused.

file_move

移动或重命名一个文件(from→to)。已先存检查点,可一键撤销。默认不覆盖已存在的目标(overwrite=true 才覆盖)。仅支持单个文件,不支持文件夹;跨磁盘自动退化为复制+删除。

file_copy

复制一个文件(from→to)。目标已存在时会先存检查点,可一键撤销。默认不覆盖(overwrite=true 才覆盖)。仅支持单个文件,不支持文件夹。

archive_zip

把工作区内的文件/文件夹打包成一个 .zip(deflate 压缩,中文文件名正确保留)。dest 已存在时先存检查点,可撤销。单文件上限 100MB、总量上限 500MB,超限会人话拒绝。

archive_unzip

把一个 .zip 解压到 destDir(支持 stored/deflate 两种压缩方式)。含越界路径(Zip Slip,如 ..\)的压缩包会被整包拒绝;符号链接条目会被跳过。条目数上限 2000、解压总量上限 500MB。覆盖已存在文件需 overwrite=true,覆盖前会存检查点。

http_download

从一个 http(s) 网址下载文件保存到工作区内的 dest(内网/回环地址会被 SSRF 防护拒绝)。dest 已存在时先存检查点,可撤销。默认单文件上限 100MB(maxBytes 可调),Content-Length 与实际字节都会卡上限,超限拒绝。返回 {path, bytes, contentType}。

file_list

List files under a directory

file_search

Search text (regex, per line) in files under a directory. Optional context lines, relative-path glob filter, and per-file grouping.

glob

Find files by glob pattern (** crosses dirs, * within a segment, ? one char). Returns matches sorted by mtime (newest first).

browser_open

Open a URL or local HTML file in a new tab of the default browser. Never navigate or close the current Ruyi Workbench tab.

mcp_list

List the currently configured built-in and external MCP connectors, their launch command, argument list, working directory, environment key names, and browser target. Secret environment values are never returned. Use this before changing tool/MCP configuration.

mcp_configure

Configure tools/MCP on the user's explicit request. Supports upsert/remove/enable of an external stdio MCP connector and changing the ai-computer-control browser target. This is an exec-tier persistent configuration change: inspect with mcp_list first, explain the diff, and rely on the permission pr

office_open

Open a local Office document with the default application

desktop_screenshot

Capture the primary Windows screen to a PNG file

keyboard_send_keys

Send keystrokes to the active Windows application. CAUTION: keys go to whatever window currently has focus; SendKeys meta characters + ^ % ~ ( ) { } [ ] are live modifiers (e.g. ^s = Ctrl+S, %{F4} = Alt+F4). Confirm the focus target before sending, and prefer explicit app control over raw keys when

project_snapshot

Return a compact project tree snapshot

git_status

Show the git status of a folder (current branch, ahead/behind, and how many files changed). Read-only. Returns a plain-language summary plus the raw porcelain status.

git_diff

Show what changed in a git repo as a unified diff (the +added / -removed lines). Read-only. Use staged:true to see staged changes, path to limit to one file, contextLines to widen/narrow context.

git_log

List recent git commits (hash, date, author, subject) as a table. Read-only. maxCount defaults to 10 (clamped 1..100); path limits history to one file.

git_commit

Save a version: stage changes then create a git commit with the given message. This RUNS git hooks (pre-commit etc.), so it is an exec-tier action. If the repo has no Git identity configured, it returns a guiding error (it never invents a fake name/email).

dependency_inventory

Inventory local dependency and runtime configuration files without installing anything

code_review_scan

Run a lightweight offline code review scan for common security and quality risks

frontend_audit

Audit frontend files for offline asset and UI polish issues

claude_md_audit

Find and audit CLAUDE.md project memory files

docs_search

Search local project documentation as an offline docs lookup

codebase_symbol_search

Search a codebase for where a symbol (function/class/method/variable name) is defined and referenced, returning file-level definition/reference evidence grouped by file. Grep-level lexical scan (not AST/type-aware): it matches identifier occurrences by word boundary. Use when auditing or tracing whe

debug_hypothesis

Advisory hypothesis/experiment/refutation ledger for structured debugging (bisect/elimination method). Tracks which hypotheses are pending/refuted/supported/confirmed so you can see how many remain unrefuted, catch repeated experiments, and avoid locking a root cause before excluding alternatives. I

data_profile

Profile a data file (CSV/TSV/JSON/JSONL/text log) into a machine-computed summary: row/column counts, per-column type, null/unique counts, numeric min/max/mean/median/std + IQR outlier count, and sample values. Use to replace eyeballing a large file with file_read when you need its structure, scale

http_request

Make an HTTP request to a local or intranet endpoint for API debugging

web_search

Search the web via the configured search backend (searxng/bing/brave/custom). Returns {results:[{title,url,snippet}]}. Use it for time-sensitive facts, external information, or anything that may have changed after your knowledge cutoff — search first, then answer. Then use web_fetch to read a promis

web_fetch

Fetch a public web page over http/https and return its extracted main text + title. Follows redirects (≤3), 10s timeout, ≤2MB. Internal/loopback/metadata addresses are refused for safety. Offline, it serves a cached copy if one exists (fromCache:true). Use it to read a page found via web_search.

request_user_input

Pause and ask the user one to three concise questions in the workbench UI. Prefer 2-5 concrete, mutually exclusive options whenever the answer can be enumerated; put the recommended option first and label it (Recommended). Choice questions include an Other typed fallback by default. Use text-only mo

todo_write

Record/replace the task list for the current turn (full replace each call). Use it to plan multi-step work and mark progress. items:[{id?,text,status:pending|in_progress|done}]. Drives the workbench step-bar.

mission_update

Update the long-running task ledger (Mission): mark milestones done/blocked, add milestones, or record evidence. Use it ONLY when a Mission is active for this session (the system prompt shows a <mission-ledger> block). action="update" merges; provide milestones:[{id,desc?,status:pending|done|blocked

workbench_self_status

只读查询本工作台自身的运行时状态:版本号、启动模式(exe/源码)、安装位置、数据目录、服务地址与实例标识、健康检查项、原生/ACC 工具数与技能/命令/Playbook/工作流数量,以及当前设置(引擎/端点/模型/权限模式/输出风格/界面语言,已做密钥掩码,绝不含 apiKey/token)。何时用:用户问「你是哪个版本/装在哪/端口是多少/数据目录在哪/当前用哪个模型和权限模式/有多少工具、技能、Playbook」,或你需要核对自身运行环境再回答时,调用本工具而不是凭记忆回答或猜测。何时别用:查询用户项目文件、工作区结构或桌面/浏览器状态时——那应改用 project_snapshot/f

steward_self_status

只读查询如意工作台自身状态,并附带管家自己的运行段(管家相关设置的掩码回显 + 收件箱状态:是否启用/是否在轮询/当前 inboxSeq/各类事件计数)。何时用:用户问「你是哪个版本/装在哪/端口多少/当前用哪个模型/管家开着吗/收件箱里攒了什么」,或你要核对自身运行环境再作答时。何时别用:查线程进度用 steward_thread_status,查费用用 steward_usage,查健康项细节用 steward_health;本工具不接受也不触碰任何用户文件路径。section 可选,缩小返回范围省上下文。

steward_threads_search

按关键词检索线程(会话)——同时匹配标题与正文内容,返回命中线程的 id、所属事项、标题、类型、五态、最后一句助手原话(≤200 字,已中和)、更新时间与相关度分。何时用:用户提到某件事但没说是哪条线程(「上次那个爬虫的事怎么样了」),或你要在递话前先定位目标线程时。何时别用:你已经知道 sessionId 时直接用 steward_thread_status;要看线程里具体说了什么用 steward_thread_read。结果永不包含管家自己的会话。

steward_thread_status

读一条线程的当前状态:五态(交办中/进行中/需要你/已收工/已停工)、当前动作与最近一步、待决摘要(类型 + 一句话)、权限档、引擎与模型、累计费用与 token、最后一句助手原话(≤200 字)。何时用:用户问「那条线在干嘛/卡在哪/花了多少钱」,或你要判断能不能递话、该不该替他答复待决之前。何时别用:要看具体对话内容用 steward_thread_read;要看班组(Agent 工作流)节点进度用 steward_runs_status。线程不存在返回 {ok:false,error:"not_found"}。

steward_thread_read

按需深读一条线程最近若干回合的原话:用户说了什么、助手回了什么、调用了哪些工具(只给一行摘要与结果长度/rawRef,不给工具输出全文)。何时用:总览与 steward_thread_status 不够你判断下一步时,针对性读一条线程。何时别用:例行汇报——总览每回合都在,不必逐条深读;也不要用它来「补全上下文」批量扫线程,读取是记账的。配额:每回合最多 6 次、单次 ≤12000 字符、本次到访累计受 stewardReadBudgetChars 限制;超限返回 {ok:false,error:"quota_exceeded"} 或 {ok:false,error:"budget_excee

steward_missions

读【事项】清单:一个事项是跨会话的容器(一件事可以有好几条线程)。每条返回事项标题与目标、事项级聚合状态(任一线程需要你则事项就是需要你;全部收工才算收工)、验收项进度(已勾选/总数)、累计费用与预算、以及它下面每条线程的 id/标题/五态/权限档/最后一句。何时用:用户问「XX 那件事进展怎么样/还差什么/花了多少」,或你要在开新线程前决定它该并进哪个事项。何时别用:要看某一条线程自己在干嘛用 steward_thread_status;要看班组节点用 steward_runs_status。没有事项文件的线程会以「未归类」事项出现(derived:true),标题取线程标题——这不是错误,

steward_runs_status

读 Agent 班组运行(工作流 DAG)的概览:每个 run 的状态、节点完成进度、是否暂停/在等什么、累计费用。何时用:线程状态显示在跑班组,而用户问「跑到第几步了/卡住了吗」,或你要在 steward_run_action 之前确认 runId 与节点 id。何时别用:普通对话线程(没有班组)用 steward_thread_status 就够。省略 sessionId 时返回全部线程的班组概览(有界)。

steward_inbox_read

读管家收件箱:五类归一化事件(需要你 needs_you / 失败 failed / 收工 done / 停滞 stalled / 预算 budget)按 inboxSeq 递增排列。何时用:每个回合开头拉取上次游标之后的新事件,决定该提议什么、该做什么。何时别用:它不是对话历史,也不是完整审计流——要看审计用 steward_audit_tail。传 since=上次拿到的最大 inboxSeq 做增量,不要每次从 0 全量拉。

steward_usage

读用量与费用台账:按线程或按日汇总 token 与花费,并把管家自身开销(kind=aux、note=steward)单列。何时用:用户问「今天/这条线花了多少」,或你要在开新线程前核对预算。何时别用:要看单条线程的状态与最近一步用 steward_thread_status。金额按币种分列,不做汇率换算(诚实优先)。

steward_health

读工作台健康检查项(体检):每项的 id、是否正常与一句话细节。何时用:用户说「怎么不好使了/是不是坏了」,或某条线程反复失败而你怀疑是环境问题时。何时别用:线程自身失败的原因在 steward_thread_status 的待决摘要与 steward_runs_status 里,不在这里。返回原始项,人话解释由你来说。

steward_audit_tail

读审计时间线尾部(最近的工作台事件,已过既有脱敏)。何时用:用户问「刚才发生了什么/是谁改的/我批准过什么」,或你要为一个决定给出可查证的依据时。何时别用:找线程内容用 steward_threads_search;找待办事件用 steward_inbox_read。limit 夹取到 1..100。

steward_thread_new

按【委托书】新开一条线程并立刻让它跑起来。委托书结构固定:brief.userText 是用户原话(逐字放在首条消息最前,绝不改写),你的补充(目标/验收项/相关文件/偏好/约束)经中和后放在其后的管家围栏里、总长 ≤1200 字。何时用:用户提出的是一件要动手做的新事(要读写文件、跑命令、联网、做东西)。何时别用:关于如意自身、事项、费用、设置的问题你直接回答,不要为此开线程;已有对口线程时改用 steward_thread_continue。本工具是管家唯一的「动世界」出口——你自己没有文件/shell/桌面工具,想动手就必须经由线程。返回 {ok,sessionId,missionId,

steward_thread_continue

把一句话递给一条已有线程。message 是【原话直递】——不改写、不加你的注解;有补充要说,先递原话再另行插话。工作台按目标线程【当前状态】自动选五条通道之一,你不用也不能指定:① 它正在等用户回答(待决 question)→ 这句话就是那道题的答案,直接答进去(channel:"answer",回执带 questionId;【不会】打断它的回合);② 它正在等你批准一个动作(待决 permission)→ 【不代答】,返回 {ok:false,error:"propose_required",reason:"pending_permission"},把它作为提议交给用户去批;③ 它已经排在

steward_thread_rename

给线程改一个更贴切的标题。何时用:自动命名明显词不达意,或用户说「把那条改叫 X」。何时别用:不要为了「整理」批量改名——标题是用户认线程的锚点。返回 {ok,sessionId,title,undoRef},undoRef 带旧标题可一键改回。

106 further tools are not listed here. The complete surface is in the source.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configCOMPACT_QUALITY_PROVIDER
configComSpec
configFAKE_MCP_NOTIFY_CAPTURE
configFAKE_MCP_OPTIONAL
configFAKE_MCP_PID_CAPTURE
configMCP_SECRET_VAR
🔐 secretMCP_TEST_SECRET
configPORT_VAR
configRUYI_BATCH_REPS
configRUYI_HOME数据目录默认 ~/.win-claude-workbench(存量兼容),可用环境变量 覆盖。
configRUYI_JOURNAL_GLOBAL_MAX_BYTES
configRUYI_NO_LISTEN
configRUYI_REAL_CONFIG
configRUYI_REAL_MODEL
configRUYI_REAL_OUT
configRUYI_RG_PATH项目文本搜索始终可用:运行时依次检查 、发行包 vendor-bin/rg.exe 和系统 PATH 中的 rg;都没有时自动使用内置 Node 扫描器,只是大型仓库速度会慢一些。能力面板会显示当前使用的是「ripgrep 加速」还是「内置搜索」。
configWCW_CLAUDE_CMDLINE_BUDGET
configWCW_HOST
configWCW_PERMISSION_TIMEOUT_MS
configWCW_PORT
configWCW_SESSION_ID
configWCW_TEST_ALLOW_LOOPBACK
🔐 secretWCW_TOKEN
configWIN_CLAUDE_WORKBENCH_HOME为不破坏存量接入,以下存量兼容标识有意保持不变:MCP server id win-claude-workbench、默认数据目录 ~/.win-claude-workbench、环境变量 (RUYI_HOME 优先,旧变量继续识别)。
configACC_HIDE_MEMORY
configACC_TOOLSETS
configACC_BROWSER_MODE
configACC_BROWSER_EXECUTABLE
configACC_BROWSER_CDP_URL
configSystemDrive
configACC_OFFLINE_PYTHON_VERSION
configACC_EMBED_SHA256
configACC_GET_PIP_SHA256
configACC_INSTALL_DIR
configWCW_DATA_DIR
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

231/231 tools missing one or more hints — sse_a (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); sse_b (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); sse_c (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +228 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Destructive tools are labelled

6 tools perform destructive updates without destructiveHint — edit_file deletes at line 100 (os.unlink(tmp)); write_file deletes at line 159 (try: os.unlink(tmp)); delete_file deletes at line 337 (shutil.rmtree(path, onerror=_onerror))

Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.

Descriptions match behaviour

1 tool describes read intent but its handler mutates — show_notification (line 54: subprocess.Popen()

Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.

Tool test coverage

103/231 tools referenced in tests (45%)

Write tests that reference each tool by name so every tool has at least one test.

No eval / new Function

22 eval() or new Function() calls — dynamic code execution

Replace eval / Function with explicit parsing or safer alternatives.

Tool description accuracy

show_notification: description implies read-only but handler writes/deletes/executes

Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/wangzhe04/ruyi-workbench-oss?variant=verified)](https://m8ven.ai/mcp/wangzhe04/ruyi-workbench-oss)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: dc32e4d44b1a91516e034e3339ee7af53561a9b7
code hash: 3007f9ddb82c3ede7d452dce9d0c507a5b2f3aab75ac1005491c22e52d4db683
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client