Skip to main content

kbbi-mcp

CI PyPI Python License

An MCP server for querying KBBI (Kamus Besar Bahasa Indonesia / KBBI Daring).

Python: 3.13+

This project exposes a single, stable JSON tool output so LLM clients can decide how to format, translate, or summarize results.

Relationship to KBBI Daring

This project is unofficial and is not affiliated with or endorsed by the official KBBI Daring service.

Features

  • MCP tool: kbbi_lookup(query: str)

  • MCP resource: kbbi://{query} (same payload as kbbi_lookup)

  • No login/auth flow required

  • Uses official KBBI VI Daring by default

Configure in an MCP client (JSON)

Most MCP clients (including Claude Desktop) use a JSON config with a top-level mcpServers object. This mcpServers format is an emergent standard across the MCP ecosystem (see: https://gofastmcp.com/integrations/mcp-json-configuration.md).

mcpServers-based clients (Claude Desktop / Cursor / Windsurf)

This matches the convention used by many Python MCP servers.

Where to put it:

  • Claude Desktop: ~/.claude/claude_desktop_config.json

  • Cursor: .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

  • Windsurf: ~/.codeium/windsurf/mcp_config.json

{
    "mcpServers": {
        "kbbi": {
            "command": "uvx",
            "args": ["kbbi-mcp"]
        }
    }
}

Note: this example uses uvx (part of uv) to run the server. Install uv here: https://docs.astral.sh/uv/getting-started/installation/

If you don’t want to depend on uv, install kbbi-mcp into an environment and point your client to that environment’s executable. For example:

  • Use the console script (recommended when available): kbbi-mcp

  • Or run the module: python -m kbbi_mcp

The server performs direct lookups to the official KBBI VI Daring site.

Local development (run from this repo)

You’ll need uv installed: https://docs.astral.sh/uv/getting-started/installation/

To run the server over stdio directly from this checkout:

uv run kbbi-mcp

To point an MCP client at this checkout, use an mcpServers entry like this (replace the path with the absolute path of your clone):

{
    "mcpServers": {
        "kbbi-dev": {
            "command": "uv",
            "args": ["--directory", "/path/to/kbbi-mcp", "run", "kbbi-mcp"]
        }
    }
}

Tool: kbbi_lookup

Input

  • query (string): a word or phrase

Example tool arguments:

{
    "query": "makan"
}

Output

Returns a JSON object:

  • found (bool)

  • query (string)

  • url (string | null)

  • entries (list)

  • suggestions (list)

An empty query or a failed lookup (e.g. KBBI unreachable) is reported as an MCP tool error (isError: true) with a message, not as a JSON payload.

entries uses an English-key schema with normalization:

  • etymology is always present (as an object or null)

  • related-word lists are always present (as arrays, possibly empty)

This keeps tool output predictable across source variations.

Example tool output:

{
    "found": true,
    "query": "makan",
    "url": "https://kbbi.kemendikdasmen.go.id/entri/makan",
    "entries": [
        {
            "headword": "makan",
            "sense_number": "",
            "root_words": [],
            "pronunciation": "",
            "nonstandard_forms": [],
            "variants": [],
            "definitions": [],
            "etymology": null,
            "derived_words": [],
            "compound_words": [],
            "proverbs": [],
            "idioms": []
        }
    ],
    "suggestions": []
}

Resource: kbbi://{query}

This server also exposes the same payload as a read-only MCP resource (application/json).

  • kbbi://makan

For low-level debugging, a client would read it using resources/read with {"uri": "kbbi://makan"}.

Data source

Lookup behavior:

  • Official source: https://kbbi.kemendikdasmen.go.id/entri/{query}

Optional environment variables:

  • KBBI_BASE_URL (default: https://kbbi.kemendikdasmen.go.id)

  • KBBI_TIMEOUT_SECONDS (default: 10.0)

  • KBBI_LOG_LEVEL (default: INFO): level of the server’s logs, written to stderr

Metadata

Release files for kbbi-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kbbi-mcp 0.1.0
File Size Uploaded Provenance
kbbi_mcp-0.1.0.tar.gz 10.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for kbbi-mcp 0.1.0
File Interpreter ABI Platform
kbbi_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.3 kB

Release files / kbbi_mcp-0.1.0.tar.gz

Download URL kbbi_mcp-0.1.0.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
aa040676f73b58733de7ce69e11190b3baa6b9527f5dbc416c0bce5317018a3c
BLAKE2b-256 checksum
How to use checksums
8e890c3233c48cb50aa89ec5efa0d1b928d4d98870b44f99a2afada89656fa58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / kbbi_mcp-0.1.0-py3-none-any.whl

Download URL kbbi_mcp-0.1.0-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ddfdb265520e78e6167fad1220ed733d98d00d961a1caa5a5903f3484165b904
BLAKE2b-256 checksum
How to use checksums
b55f0c3f549e82117f8bc2111e0db66b39548358b300d4a8d7e44e88598c6bb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for kbbi-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page