Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Judgment calls on small, cheap models: is this spam, which team, how urgent. YES, NO or UNSURE.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
TYPESAFE_API_KEY, GUT_BACKEND, GUT_MODEL, GUT_BASE_URL, OPENROUTER_API_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"gut": {
"command": "uvx",
"args": [
"gutfeel-mcp"
],
"env": {
"TYPESAFE_API_KEY": "your-value",
"GUT_BACKEND": "your-value",
"GUT_MODEL": "your-value",
"GUT_BASE_URL": "your-value",
"OPENROUTER_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add gut --env TYPESAFE_API_KEY=your-value --env GUT_BACKEND=your-value --env GUT_MODEL=your-value --env GUT_BASE_URL=your-value --env OPENROUTER_API_KEY=your-value -- uvx gutfeel-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"gut": {
"command": "uvx",
"args": [
"gutfeel-mcp"
],
"env": {
"TYPESAFE_API_KEY": "your-value",
"GUT_BACKEND": "your-value",
"GUT_MODEL": "your-value",
"GUT_BASE_URL": "your-value",
"OPENROUTER_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"gut": {
"type": "stdio",
"command": "uvx",
"args": [
"gutfeel-mcp"
],
"env": {
"TYPESAFE_API_KEY": "your-value",
"GUT_BACKEND": "your-value",
"GUT_MODEL": "your-value",
"GUT_BASE_URL": "your-value",
"OPENROUTER_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
GUT_BACKEND envGUT_MODEL envGUT_BASE_URL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account Kungie, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: TYPESAFE_API_KEY, OPENROUTER_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.8.2) reached the registry 25 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, Tethered Trust
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Fit, compatibility and recall checks for AI agents before they buy: verdicts, evidence, receipts.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Judgment calls as one line of Python — built for Jev, and running on any small model.
Try it in your browser → The site runs gut's local model in the page: no key, no server.
Your code keeps running into questions that aren't logic: *Is this comment spam? Which team owns this ticket? How urgent is it? Is the agent's task done?* Until now there were three answers:
There is a fourth: a small model made for exactly these questions. TypeSafe AI's Jev answers typed questions directly — a probability for yes, a distribution over options, a score on a scale — with nothing to generate or parse, billed on input only. gut is built around it, and makes it a line of code:
import gut
gut.configure(backend=gut.JevBackend()) # or just set TYPESAFE_API_KEY
if gut.likely(comment, "is spam"): hide(comment)
No prompt, no parsing, no threshold — and no model named at the call site.
gut.likely(ticket, "is a bug report") # yes / no
gut.classify(ticket, Team) # which one — an Enum gut.rate(ticket, ["can wait", "this week", "right now"]) # how much
A regex never hesitates, and neither does an LLM. gut can:
match gut.likely(email, "the customer threatens to cancel", ask_human=True):
case gut.YES: escalate(email) case gut.NO: auto_reply(email) case gut.UNSURE: send_to_a_person(email)
Say how careful to be in words — lean="yes", stakes="high" — and gut works out the thresholds.
spam = gut.each(comments).likely("is spam") # one decision per comment, in order
teams = gut.each(tickets).classify(Team)
Jev gets concurrent requests, a local model batched passes, and nothing already cached is asked twice. @gut.semantic does the same for several questions about one subject.
Jev is the model gut is designed around. It is not the only one: the model is configuration, and the same line runs unchanged on any of these.
gut.configure(backend=gut.JevBackend()) # TypeSafe AI's Jev
gut.configure(backend=gut.JevBackend.openrouter()) # Jev, through OpenRouter gut.configure(backend=gut.JevBackend.ollaya("winnow:e4b")) # open decision model, Ollaya gut.configure(backend=gut.ZeroShotBackend()) # NLI model, on your CPU gut.configure(backend=gut.TransformersBackend("Qwen/Qwen3-0.6B")) # small LLM, on your machine gut.configure(backend=gut.OpenAICompatibleBackend( # Ollama, vLLM, llama.cpp "qwen2.5:1.5b", base_url="http://localhost:11434/v1")) gut.configure(backend=gut.OpenAICompatibleBackend("gpt-4.1-nano")) # OpenAI gut.configure(backend=gut.OpenAIDecisionsBackend()) # OpenAI's Decisions API
Or several at once. Cascade asks the cheapest model first and passes on only what it is unsure of:
gut.configure(backend=gut.Cascade(
gut.ZeroShotBackend(), # free and local: settles the obvious gut.JevBackend(), # sees only what the first could not ))
Every answer is a model's own probabilities, never parsed from text, and decision.model names the model that gave it. Your own model can be a backend too: here is how.
pip install "gutfeel[jev]" # + JevBackend: TypeSafe, OpenRouter or Ollaya
pip install "gutfeel[local]" # + ZeroShotBackend and TransformersBackend (PyTorch) pip install gutfeel # core: any OpenAI-compatible server; FakeBackend for tests pip install gutfeel-mcp # + the MCP server, gutfeel-mcp
The package on PyPI is gutfeel (gut was taken); the import is plain import gut. No model at hand? gut.FakeBackend(answers={"is spam": 0.97}) answers from fixtures, for tests.
The big model thinks; the small one decides, fast. An agent with gut judges a thousand files, commits or search results in one command instead of reading each one itself:
git ls-files | gut filter "retries failed requests" --read-files --max-cost 0.50
claude mcp add gut --env TYPESAFE_API_KEY=your-key -- uvx gutfeel-mcp # MCP Registry: io.github.Kungie/gut npx skills add Kungie/gut --skill gut # teaches a coding agent when to reach for it
[The documentation](https://gutpy.dev/docs/), one page per idea: Getting started · Backends · Knowing when it doesn't know · Asking everything at once · Async · Exact costs · Caching and observability · Command line · MCP server · Honest limitations. examples/ runs the same code on every backend.
Pre-1.0, Apache-2.0. Every code block in these docs runs in the test suite · contributing