kothar
by yahiaklk
README.md
# kothar
[](https://glama.ai/mcp/servers/yahiaklk/kothar)
Context-aware MCP server advisor. Tells you what to install for your specific project — and why.
## The problem
[Glama](https://glama.ai) has 19,000+ MCP servers. You have a project. Nobody bridges the gap.
LLMs asked directly hallucinate servers that don't exist and recommend from stale training data. Directories give you search, not advice.
kothar fills the **selection under context** gap: not "here are 19,000 options" but "for your specific project, right now, here's what you need and why."
## The two moments nobody is serving
**Project start:** "I'm building a Python data pipeline with DuckDB and FastAPI" → what do I install right now
**Mid-project:** "I just added an auth layer / I need to handle PDF ingestion" → what do I add now that I've reached this point
The second moment is more valuable. At project start, people can Google. Mid-project they're in flow.
## Three tools
```
recommend_for_project(description)
→ top MCP servers for your stack with rationale
recommend_for_next_step(current_stack, new_context)
→ what to add as your project evolves
explain_fit(server_name, project_description)
→ why a specific server fits your project
```
## Install
**Prerequisites:** [uv](https://docs.astral.sh/uv/)
```bash
git clone https://github.com/yahiaklk/kothar
cd kothar
uv sync
```
Build the index (first run, ~30s):
```bash
uv run python -m kothar.indexer
```
## Add to Claude Code
```bash
claude mcp add --scope user kothar -- uv run --directory /path/to/kothar python -m kothar.server
```
## Add to Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"kothar": {
"command": "uv",
"args": ["run", "--directory", "/path/to/kothar", "python", "-m", "kothar.server"]
}
}
}
```
## Usage
Once connected, ask your AI assistant:
```
recommend_for_project("Python FastAPI backend with PostgreSQL and JWT auth")
recommend_for_next_step("github,filesystem", "adding Stripe payments and PDF invoices")
explain_fit("postgres", "multi-tenant SaaS with row-level security")
```
## How it works
- Parses [awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers) (2000+ curated servers)
- Embeds descriptions with `all-MiniLM-L6-v2` (local, no API cost)
- Stores in DuckDB, queries with cosine similarity
- Template-based rationale — grounded in the registry, not hallucinated
## Rebuild the index
```bash
uv run python -m kothar.indexer --force
```
## Docker
Multi-stage image with the embedding model + DuckDB index baked in — no runtime network dependency.
```bash
docker build -t kothar:0.3.0 .
docker run --rm -i kothar:0.3.0 # stdio transport, for local MCP clients
```
Wire into Claude Desktop:
```json
{
"mcpServers": {
"kothar": {
"command": "docker",
"args": ["run", "--rm", "-i", "kothar:0.3.0"]
}
}
}
```
Non-root user (`uid=10001`), pinned Python 3.12, deps resolved from `uv.lock`, model cached under `/app/.hf_cache` with `HF_HUB_OFFLINE=1` at runtime.
## Stack
Python · FastMCP · DuckDB · sentence-transformers · uv
## License
[MIT](LICENSE)
TDQS
A3.9/5.0
Scored across 4 tools
Disambiguation5/5
Each tool has a distinct purpose: explaining a specific server, recommending for a multi-part goal, for a full project, or for next steps. No overlap.
Naming Consistency4/5
All names follow verb_noun pattern (explain_why, recommend_for_goal, etc.), but 'explain_why' uses 'why' as a noun, slightly deviating from standard action-object convention.
Tool Count5/5
Four tools cover the essential recommendation scenarios without redundancy. The count is well-scoped for the server's purpose.
Completeness4/5
The set covers main use cases: explaining, recommending for goals, projects, and next steps. Missing features like comparing or updating recommendations, but not critical.
Maintenance
ActivityNo data
ResponsivenessSyncing