io.github.mohammad-abbasi-sh/dictcc-mcp
# dictcc-mcp π
mcp-name: io.github.mohammad-abbasi-sh/dictcc-mcp
Unofficial **read-only** MCP server for **[dict.cc](https://www.dict.cc)** β dict.cc translations from dict.cc (free, no key, no login): German-English plus 22 more pairs, with word class, gender, usage notes and community votes. No key, no login.
> Built by Mohammad Abbasi as part of the "Germany MCP factory". Not affiliated with dict.cc.
## For AI agents
Add to your MCP client config (stdio):
```json
{
"mcpServers": {
"dictcc": {
"command": "uvx",
"args": ["dictcc-mcp==0.1.0"]
}
}
}
```
Or run locally: `python -m dictcc_mcp.server` (needs `mcp<2`, `httpx`).
## Tools
| Tool | Description |
|------|-------------|
| `dictcc_translate` | Translate a word or phrase with dict.cc: translations with word class, gender, usage notes & community votes β `query`, `pair` (de-en default; de-el, de-eo, de-es, de-fi, de-fr, de-hr, de-hu, de-is, de-it, de-la, de-nl, de-no, de-pl, de-pt, de-ro, de-ru, de-sk, de-sq, de-sr, de-sv, de-tr, de-uk), `limit` 1..50 |
| `dictcc_search` | Find dict.cc headwords matching a query (prefix/containment) β `query`, `pair` (de-en default), `limit` 1..50 |
| `dictcc_health` | Reachability probe (ok / blocked / error) β one polite request |
## Notes
- All data comes from **dict.cc's public search pages** (free, no key, no login).
- Translation rows carry the word, `<var>` word-class markers (`{adj}`, `{n}`, `{f}` β¦), `<kbd>` bracket notes and the community vote count; rows are returned in dict.cc's own vote ranking.
- 23 language pairs share the same page structure (DE-EN on `www.dict.cc`, the rest on `<deXX>.dict.cc`); the query direction is auto-detected from which side matches first in dict.cc's ranking.
- dict.cc has NO example sentences and NO verb conjugation on these pages (verified 2026-11-10) β only translations and headword search are exposed. For verb conjugation use `duden-mcp`.
- A query with no matches returns 200 with zero rows (not an error).
Tests: 23/23 green (18 offline + 5 live, 2026-11-10).
## Development
```bash
python3 -m venv .venv && .venv/bin/pip install "mcp<2" httpx pytest
.venv/bin/pip install -e .
.venv/bin/python -m pytest tests/ -q
```
## License
MIT
---
Built by [Mohammad Abbasi](https://github.com/mohammad-abbasi-sh) β [Almanibama](https://almanibama.ir) Β· [mabbasi.ir](https://mabbasi.ir)
TDQS
Scored across 3 tools
dictcc_translate and dictcc_search share the same query/pair/limit parameters and both hit dict.cc, so a naive agent could pick the wrong one. However, the descriptions draw a clean line: translate returns translations with word class/gender/votes, while search returns matching headwords in ranking order. dictcc_health is unmistakably distinct.
All three tools use the same dictcc_ prefix followed by a single clear verb/noun (translate, search, health) in consistent snake_case. No mixed conventions or vague verbs.
Three tools is on the thin side but each earns its place: one lookup, one headword search, one availability probe. For a single-source dictionary wrapper this is well-scoped rather than padded.
The core dictionary workflow (look up a translation, discover headwords, verify the backend is reachable) is fully covered and pair codes are enumerated in the descriptions. Minor gaps exist, such as no tool to list supported pairs programmatically or batch/multi-word lookup, but agents can work around these.