Agentfit

io.github.MukundaKattaPublished by GitHub account MukundaKattav0.1.0Updated Oct 24, 2026

Token-aware message truncation: fit a chat history into your model's context budget.

VerifiedSTDIODesktop onlyDeveloper ToolsAI & ML

Overview

AI-generated overview

Local MCP server that lets an assistant estimate token counts and trim chat histories to fit a model's context budget.

What you can do
  • Estimate tokens in a string or chat-message array, with per-model estimator families (openai, anthropic, google, llama, default)
  • Trim a chat history to a maxTokens budget using drop-oldest, drop-middle or priority strategies, honoring preserveSystem, preserveFirstN and preserveLastN
  • List the built-in estimator families
  • Return a structured result with kept and dropped messages plus before/after token counts, and report fit: false instead of failing when the budget is unreachable
When to use it
Useful when you want an assistant to check how large a prompt or transcript is, or to shrink a long conversation to a token limit while keeping the system prompt and recent turns. Handy for preparing context before sending it to a model.
Requirements
Runs as a local stdio process, typically launched with npx from the npm package @mukundakatta/agentfit-mcp, so Node.js and npx are needed. No authentication, environment variables or headers are declared. Desktop MCP clients only; no web executable.
Before you install
Chat histories passed to the tools are processed locally by the server process; the README notes token counts are estimates, so budgets may not match a provider's exact count. The server only returns trimmed messages and does not modify your data itself.

Installation

In SourceWeft

  1. Open Agentfit in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

agentfit-mcp

MCP server for @mukundakatta/agentfit. Lets Claude Desktop, Cursor, Cline, Windsurf, Zed, or any other MCP client estimate token counts and fit a chat history into a model's context budget on demand.

bash
npx -y @mukundakatta/agentfit-mcp

Three tools:

  • count_tokens — estimate tokens in a string or chat-message array, with per-model estimator families (openai, anthropic, google, llama, default).
  • fit_messages — drop messages from a chat history until under a maxTokens budget. Supports drop-oldest, drop-middle, and priority strategies; honors preserveSystem, preserveFirstN, preserveLastN.
  • list_estimators — list the built-in estimator families.

Add to your client

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "agentfit": {      "command": "npx",      "args": ["-y", "@mukundakatta/agentfit-mcp"]    }  }}

Cursor

~/.cursor/mcp.json:

json
{  "mcpServers": {    "agentfit": {      "command": "npx",      "args": ["-y", "@mukundakatta/agentfit-mcp"]    }  }}

Cline / Windsurf / Zed

Same shape as above. The server speaks plain MCP over stdio, so any client that supports stdio MCP servers will work.

Tool examples

count_tokens:

json
{ "input": "hello world", "model": "claude-sonnet-4-6" }

Returns:

json
{ "tokens": 4, "model": "claude-sonnet-4-6" }

fit_messages:

json
{  "messages": [    { "role": "system", "content": "You are precise." },    { "role": "user", "content": "long context..." },    { "role": "assistant", "content": "..." },    { "role": "user", "content": "final question" }  ],  "maxTokens": 8000,  "model": "claude-sonnet-4-6",  "preserveSystem": true,  "preserveLastN": 2,  "strategy": "drop-oldest"}

Returns:

json
{  "messages": [...],  "dropped": [...],  "tokens": { "before": 12000, "after": 7800, "budget": 8000 },  "fit": true}

fit_messages always returns a structured result and never throws across the wire: if the budget is unreachable even after dropping all non-protected messages, you get fit: false with the partial result so the caller can decide what to do.

Why a separate MCP server

@mukundakatta/agentfit is a zero-dependency JavaScript library. This package wraps it as an MCP server so it's accessible from inside any MCP-aware AI assistant: ask Claude "how many tokens is this transcript?" or "trim this chat to 8k tokens preserving the system prompt and last 2 turns" and the assistant calls these tools directly.

Sibling MCP servers

Part of the agent-stack series, all @mukundakatta/*-mcp:

License

MIT

Source: README.md at commit 6657bbb

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts