gut — Claude Code MCP server: yes/no calls on small models
Answers the small judgement questions an agent keeps hitting: spam or not, which team, how urgent. You get YES, NO or UNSURE.
claude mcp add --env TYPESAFE_API_KEY=<TYPESAFE_API_KEY> --env GUT_BACKEND=<GUT_BACKEND> --env GUT_MODEL=<GUT_MODEL> --env GUT_BASE_URL=<GUT_BASE_URL> --env OPENROUTER_API_KEY=<OPENROUTER_API_KEY> --transport stdio gut -- uvx gutfeel-mcpWhat gut does
gut turns a judgement call into one line: gut.likely(comment, "is spam") returns yes or no, gut.classify(ticket, Team) picks one member of an Enum, gut.rate(ticket, ["can wait", "this week", "right now"]) places the subject on a scale. Nothing is generated as prose, so there is no text to parse — the answer arrives as the model's own probabilities. Pass ask_human=True and an uncertain case comes back as gut.UNSURE instead of a guess, which is what you want before escalating an angry customer email.
The MCP server ships as gutfeel-mcp on top of the gutfeel Python package and runs through uvx. The backend is configuration, not a rewrite: Jev from TypeSafe AI, Jev routed through OpenRouter, a local NLI model on your CPU, a small LLM on your machine, or any OpenAI-compatible endpoint such as Ollama, vLLM or llama.cpp. Cascade asks the cheapest backend first and forwards only the cases it could not settle. Jev needs TYPESAFE_API_KEY, OpenRouter needs OPENROUTER_API_KEY; a local backend runs without either.
Pre-1.0, Apache-2.0. The PyPI package is gutfeel because gut was taken, while the import stays import gut. For tests, gut.FakeBackend returns answers from fixtures so no model is involved.
What it helps with
- filter spam out of user comments without regex rules
- route a ticket to the right team
- rank an inbox by urgency
- check whether an agent has finished its task
- judge a thousand files or search results in one command
Example prompts for the agent
- Use gut to check whether this comment is spam and hide it if it is
- Ask gut which team should own this ticket
- Pipe the file list through gut and keep only the ones about retrying failed requests
How to install gut
Platform CLI
claude mcp add --env TYPESAFE_API_KEY=<TYPESAFE_API_KEY> --env GUT_BACKEND=<GUT_BACKEND> --env GUT_MODEL=<GUT_MODEL> --env GUT_BASE_URL=<GUT_BASE_URL> --env OPENROUTER_API_KEY=<OPENROUTER_API_KEY> --transport stdio gut -- uvx gutfeel-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gutfeel-mcp <command>
Platform CLI
codex mcp add gut --env TYPESAFE_API_KEY=<TYPESAFE_API_KEY> --env GUT_BACKEND=<GUT_BACKEND> --env GUT_MODEL=<GUT_MODEL> --env GUT_BASE_URL=<GUT_BASE_URL> --env OPENROUTER_API_KEY=<OPENROUTER_API_KEY> -- uvx gutfeel-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gutfeel-mcp <command>
Config file
{
"mcpServers": {
"gut": {
"command": "uvx",
"args": [
"gutfeel-mcp"
],
"env": {
"TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>",
"GUT_BACKEND": "<GUT_BACKEND>",
"GUT_MODEL": "<GUT_MODEL>",
"GUT_BASE_URL": "<GUT_BASE_URL>",
"OPENROUTER_API_KEY": "<OPENROUTER_API_KEY>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gutfeel-mcp <command>
Config file
{
"servers": {
"gut": {
"type": "stdio",
"command": "uvx",
"args": [
"gutfeel-mcp"
],
"env": {
"TYPESAFE_API_KEY": "<TYPESAFE_API_KEY>",
"GUT_BACKEND": "<GUT_BACKEND>",
"GUT_MODEL": "<GUT_MODEL>",
"GUT_BASE_URL": "<GUT_BASE_URL>",
"OPENROUTER_API_KEY": "<OPENROUTER_API_KEY>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gutfeel-mcp <command>
Platform CLI
gemini mcp add -e TYPESAFE_API_KEY=<TYPESAFE_API_KEY> -e GUT_BACKEND=<GUT_BACKEND> -e GUT_MODEL=<GUT_MODEL> -e GUT_BASE_URL=<GUT_BASE_URL> -e OPENROUTER_API_KEY=<OPENROUTER_API_KEY> gut uvx gutfeel-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gutfeel-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about gut
How do I install gut in Claude Code?
Run claude mcp add gut -e TYPESAFE_API_KEY=<TYPESAFE_API_KEY> -e OPENROUTER_API_KEY=<OPENROUTER_API_KEY> -- uvx gutfeel-mcp. Supply the key that matches the backend you plan to use.
What does gut do?
It answers judgement questions in place of a large language model: yes or no, which option, how much. The result is a probability rather than prose, so nothing needs parsing.
Which models can gut run on?
Jev from TypeSafe AI is the one it is built around, but the backend is swappable: Jev via OpenRouter, a local NLI model, a small LLM on your own machine, or any OpenAI-compatible server like Ollama and vLLM.