原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Tewip

作者:hmamut39版本 0.73.1i★ –i在你的电脑上运行
注册名称io.github.hmamut39/tewip

安装

概览

作者提供的说明(英文原文)

Proves software work: triages failing tests, checks whether a test can fail, and reads migrations.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他
  • 你需要填写:OPENAI_API_KEY

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "tewip": {
      "command": "npx",
      "args": [
        "-y",
        "tewip-ai",
        "mcp"
      ],
      "env": {
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add tewip --env OPENAI_API_KEY=your-value -- npx -y tewip-ai mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "tewip": {
      "command": "npx",
      "args": [
        "-y",
        "tewip-ai",
        "mcp"
      ],
      "env": {
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "tewip": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "tewip-ai",
        "mcp"
      ],
      "env": {
        "OPENAI_API_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • OPENAI_API_KEY 机密 env
    Optional. Turns on the AI layer for failures the deterministic rules cannot decide. Without it only the rules run, and Tewip says which layer decided each answer.

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 hmamut39 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32655 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32655 个服务器的 85% 更新
  • 基础检查结果等于或优于此分类中其他 32655 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Tewip 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:OPENAI_API_KEY

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.73.1)于5天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, SuperCollider

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

SuperCollider

作者:Tok

Make sound with SuperCollider: synths, drums, chords, melodies and soundscapes over OSC.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

Tewip

Tewip (Uyghur *téwip*, تېۋىپ: healer, doctor) is the layer that proves software work - written by a person or by an agent.

Created and maintained by Mamuti Aishan (Hasan) (@hmamut39).

It finds why each failing test failed (a real bug, a flaky test, the environment, test data, or a changed selector), says whether a test could ever fail at all, breaks your code to find out whether the tests would notice, reads what a migration will do to a live database, and gives one verdict on whether a change is done. Every answer carries its evidence and names what decided it: a deterministic rule, the AI model, or a person's correction.

What makes it worth installing is what it refuses to say. It answers *"cannot say"* rather than guessing, it will not narrow a test run it cannot prove safe to narrow, and every report ends with what it did not check. Each number below was measured on strangers' real code, never on fixtures.

It works for every stack: Node.js (node:test, Jest, Vitest, Mocha), Python (pytest, unittest), Java and Kotlin (JUnit, TestNG), Go, .NET, Ruby, PHP and Rust, each checked against its real runner's report (the full list), plus Playwright in depth with traces, selector drift and verified fixes. It also reads the failure wording of the browser and component-test tools on top of those runners (Selenium, WebdriverIO, Cypress, Testing Library for React, Vue and Angular, Vue Test Utils, jest-dom and Jasmine), checked against more than 500 real messages from public projects.

WhereHow
Terminalnpm install -g tewip-ai, then tewip explain report.xml, tewip ci owner/repo --pr 12, tewip mcp
VS Code, Cursor, Windsurf, VSCodiumthe Tewip extension (download): registers Tewip with the editor's AI assistant and adds six commands - explain a report, why CI failed on this branch, the risk review of your change, which flaky tests to quarantine, the security check, and what your corrections add up to
JetBrains, Claude, other AI assistantsadd the MCP server tewip mcp: fifteen tools, including *has this happened here before?*, *is this requirement covered and passing?* and *what should be done next about this goal?* (see editor setup)
Any model, including noneOpenAI, Claude, Gemini, Azure, or a model on your own machine with Ollama - no account, no key, and no source code leaving the building: TEWIP_PROVIDER=ollama. Three quarters of what Tewip answers calls no model at all. How
GitHub CIthe Tewip Action: a comment on every pull request, an optional merge gate, verified fix PRs (QUICKSTART)

Formerly *triage-agent*: the repository moved to hmamut39/tewip, and GitHub redirects the old address. See ROADMAP.md for the plan.

Status: built, and measured on other people's code. Tewip collects failures from any framework, diagnoses them with rules first and a model only for what rules cannot settle, and turns that into work for each role: a CI comment and merge gate, test plans and verified tests, a flake dossier, a PR-risk review, security scanning, tickets in Jira, Rally, GitHub Issues, Azure Boards or Linear, checks generated from a Figma design, specifications written for people, and - opt in, and only when proved - fixes to test or application code. The fix loops are built and measured, not planned: on real labelled CI failures every one of 17 locator suggestions was the locator the developers themselves wrote, a wait fix is kept only after three passes in a row, and a change to application code is kept only when the failing test passes and the whole suite still does. It runs live in GitHub CI and answers questions from AI assistants through MCP. On fresh real Gutenberg CI failures, with the pipeline frozen before labelling, accuracy is 93.4%; across six real datasets it ranges from 86.1% to 99.7%, and the caveats are in eval/README.md.

If your CI already writes a coverage report, point Tewip at it

Tewip decides what a test reaches by following imports, which is a fact rather than a name match - and which cannot see a test that posts a GraphQL query, hits an HTTP route or renders a controller. On a Django, Rails or Spring codebase that is most of the suite, so tewip done used to answer *"cannot say"* to the question that matters most.

A coverage report settles it, and CI almost certainly produces one already. Nothing to configure:

formatwritten byfound at
lcov.infoJavaScript, TypeScript, Rust, Go, C++coverage/lcov.info, lcov.info
Cobertura coverage.xmlpytest-cov, coverlet (.NET), simplecovcoverage.xml, coverage/coverage.xml
JaCoCoJava, Kotlintarget/site/jacoco/jacoco.xml, build/reports/...
CloverPHPUnitclover.xml, build/logs/clover.xml

With one present, done stops guessing:

### Is the changed code tested?

Yes: the suite executes saleor/graphql/utils/sorting.py.

_Decided by coverage.xml, which records what ran rather than what imports what._

and it will say the opposite just as plainly - *"is in coverage.xml with no line executed, so the suite runs none of this"* is a not ready, not a shrug.

What a coverage report cannot do. It records which lines ran during the whole suite, not which test ran them, so it answers *"is this code tested"* and not *"which tests would notice a change here"*. tewip pick still narrows from imports and still refuses to narrow when it cannot show the rest are unaffected. A report from a different checkout is ignored rather than believed: if the files it names are not on disk, Tewip says nothing instead of reporting the whole change as untested.

Running with no data leaving the building

A hospital, a bank or a government department usually cannot send source code to a hosted API, and that is most of who this is built for. Tewip runs against a model on the same machine:

# once

curl -fsSL https://ollama.com/install.sh | sh # or ollama.com for Windows and macOS ollama pull qwen3:8b

then

export TEWIP_PROVIDER=ollama tewip done --diff main...HEAD

No key, no account, no network call off the machine. TEWIP_BASE_URL points the same path at LM Studio, vLLM, llama.cpp's server, or anything else that speaks the OpenAI shape.

What changes and what does not. The deterministic layers - vouch, schema, access, perf, standards - call no model at any time, with any provider, and are unaffected. Only the parts that need judgement use one: explaining a failure, writing a test, drafting a plan. A smaller local model is less accurate at those than a frontier one, and Tewip says which layer decided every answer, so the difference is visible rather than hidden.

A local model is also less likely to be *constrained* to the schema it was asked for: some backends accept the request and quietly do not enforce it. Tewip reads a reply that arrives inside a markdown fence or after a sentence of preamble, and still refuses one with no JSON in it at all.

What it costs

Most failures never reach a model. On 3,556 real CI failures from six public projects, the deterministic rules answered 75.1% on their own - and on the labelled ones they answered correctly 1,979 times out of 2,012 (98.4%). A rule-answered failure costs nothing, explains itself, and gives the same answer every time.

Only the remaining quarter is sent to a model, so triaging 1,000 real failures costs about $1.12 at gpt-5.4-mini's published price. That is measured, not estimated: three real uncached calls on held-out failures billed 3,624 prompt and 499 completion tokens each. A real week costs less, because a failure that repeats is answered from cache, and a failure someone has corrected never goes to the model again.

Tewip prints what every command costs, caps its own spend, and works with no key at all - the rules run on their own and everything they cannot settle is left as UNKNOWN rather than guessed.

Start here

npm i -g tewip-ai

cd your-project tewip

tewip on its own looks at your project and names the two or three commands that will tell you something, with your own paths in them — and says plainly what it cannot answer here. It reads the directory and stops: nothing is run, nothing is written, about a second.

Here is what Tewip can tell you about **this** project, in the order worth doing.

1. `tewip vouch` 282 test files here (282 JavaScript or TypeScript). This reads them and names the ones that cannot fail - no model, a second or two.

2. `tewip schema --diff main...HEAD` 165 migrations here (165 SQL). This says what a change would do to a live database before it runs.

What it will not do here

  • No k6, JMeter or Lighthouse report was found. Tewip judges one you produce; it does not run load tests itself.

Everything below is the full list, for when you want it.

Use it in your project

Giving it to your team (or another company): [TEAM-GUIDE.md](TEAM-GUIDE.md) — what to install, what each role uses it for, and what it never does.

Putting it on a real repository: [QUICKSTART.md](QUICKSTART.md) — ten minutes, copy-paste, and what to check on the first failing run.

1. In GitHub CI (developers, SDETs, DevOps)

Tell Playwright to write a blob report in CI. It's a built-in reporter, so there's no triage-agent code in your config:

// playwright.config.ts

reporter: process.env.CI ? [['list'], ['blob']] : 'list', use: { trace: 'retain-on-failure' },

Then add one step after your tests:

permissions:

contents: write # only needed for autofix pull-requests: write issues: write actions: read # lets it read the failed job's log when no test report was written

steps:

... checkout, install, npx playwright test ...

  • name: triage-agent if: always() uses: hmamut39/tewip@main with: openai-api-key: ${{ secrets.OPENAI_API_KEY }} # optional: without it only the rules run autofix: 'true' # optional: verified locator-fix PRs

Run the verdict verbs in CI (Phase 38, new) — one step, as many checks as you want:

- uses: hmamut39/tewip@main

with: mode: check checks: schema, access, vouch # or: done, standards, perf, or all gate: blocking # optional: fail the job on what a verb calls blocking

Every check runs even when an earlier one found something, so a pull request gets the whole picture in one push. The gate is deliberately narrower than the report: it fails only on what the verb itself calls blocking, because a gate that fires on advice teaches a team to pass continue-on-error. A check with nothing to look at says so and never fails the job — no migrations in the diff is not a pass.

Use `@main` or `v0.46.0` or later. Every tag before that shipped an action.yml whose

description contained an unquoted colon, which YAML reads as a nested mapping — the runner answered

*"Failed to load action.yml"* and the action never ran. It is fixed, and there is now a test over

the manifest so it cannot come back.

On every run, the action:

  • Developers: posts one diagnosis comment on the pull request and keeps it updated. For each failure it says whether the change likely caused it, why, and what to do next.
  • SDETs: writes the triage board into the job summary.
  • DevOps: collects environment failures (server errors, connection resets, outages) in one GitHub issue, and each new run adds a single grouped comment to it.
  • The tests in the pull request: on a PR it reads the test files the change touched and say

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx