Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Kotlin/Java library sources, public API and KDoc from the real Maven sources jar, for AI agents
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"kotlin-lib": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/aoreshkov/kotlin-lib-mcp:0.10.1",
"--max-concurrent-fetches",
"2"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add kotlin-lib -- docker run -i --rm ghcr.io/aoreshkov/kotlin-lib-mcp:0.10.1 --max-concurrent-fetches 2Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"kotlin-lib": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/aoreshkov/kotlin-lib-mcp:0.10.1",
"--max-concurrent-fetches",
"2"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"kotlin-lib": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/aoreshkov/kotlin-lib-mcp:0.10.1",
"--max-concurrent-fetches",
"2"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub aoreshkov, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.10.1) llegó al registro hace 8 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Docker en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Master CSS
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Inspect Master CSS classes, generated CSS, and project stylesheets from your AI client.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Give your AI agent the real sources of any Maven-published Kotlin/Java library.
An MCP server that, on request, downloads the sources of a library (e.g. io.ktor:ktor-client-core:3.5.1), parses them with the Kotlin Analysis API (standalone K2/FIR mode), and exposes structured information — public API surface, KDoc, dependencies/metadata, raw source + search — to MCP clients: Claude Code, Claude Desktop, IntelliJ IDEA (AI Assistant / Junie), VS Code and GitHub Copilot. An optional Compose Desktop dashboard runs the same server in-process.
[Twelve tools](#tools) — fetch_library · list_packages · list_declarations · get_api_signature · get_kdoc · get_source · search_source · diff_versions · diff_api · get_dependencies · list_versions · get_latest_version — plus MCP resources and a prompt.
Those install the Docker image. For the Claude Code plugin (which runs on your JDK), IntelliJ IDEA, or to run the release zip without Docker, see Quick start.
Compose Desktop dashboard
Most documentation MCP servers scrape rendered doc sites or feed the model pre-digested summaries. This one works from the published sources jar — the ground truth:
get_api_signature returns real, type-resolved signatures (with graceful best-effort fallback when transitive dependencies are missing)..module Gradle metadata, and every symbol is tagged with its targets.group/artifact/version; no re-downloads, no drift between the docs and the version you actually depend on.get_source and bounded search_source let the agent read the actual implementation, not just the API.Option 1 — Claude Code plugin. The server plus skills that make Claude reach for it, two commands (/kotlin-lib:api, /kotlin-lib:migrate) and a setup helper. Needs a JDK 25+ — the one on your PATH, or any other set by path in the plugin's java option; no Docker. It downloads the release zip on first use:
/plugin marketplace add aoreshkov/kotlin-lib-mcp
/plugin install kotlin-lib@kotlin-lib-mcp
See plugin/README.md for what it bundles.
Option 2 — release zip. Download the latest release, unzip (needs a Java 25+ runtime), then:
claude mcp add kotlin-lib -- /path/to/kotlin-lib-mcp-server-<version>/bin/server --transport stdio
Option 3 — Docker.
claude mcp add kotlin-lib -- docker run -i --rm -v kotlin-lib-mcp-cache:/home/mcp/.cache ghcr.io/aoreshkov/kotlin-lib-mcp
Option 4 — IntelliJ IDEA / Android Studio. JetBrains IDEs are MCP clients too — which is where most Kotlin gets written. Open Settings | Tools | AI Assistant | Model Context Protocol (MCP), click Add, pick the stdio transport and paste:
{
"mcpServers": { "kotlin-lib": { "command": "docker", "args": ["run", "-i", "--rm", "-v", "kotlin-lib-mcp-cache:/home/mcp/.cache", "ghcr.io/aoreshkov/kotlin-lib-mcp"] } } }
Choose global or project level, Apply, and the tools appear in the AI Assistant chat. Junie takes the same JSON in its own MCP settings. Swap command/args for the release-zip launcher (bin/server --transport stdio) if you'd rather not use Docker.
Option 5 — MCP Registry. The server is published to the official MCP registry as io.github.aoreshkov/kotlin-lib-mcp, and listed in the GitHub MCP Registry; registry-aware clients can install it from there. The entry declares two optional arguments a client can ask you for when it installs: --repo, for each extra Maven repository (a private one, or https://maven.google.com for AndroidX), and --max-concurrent-fetches.
Or in .mcp.json / Claude Desktop config:
{
"mcpServers": { "kotlin-lib": { "command": "C:/path/to/kotlin-lib-mcp-server- /bin/server.bat", "args": ["--transport", "stdio"] } } }
Streamable HTTP. Run --transport http --port 3000 and point the client at http://127.0.0.1:3000/mcp. Out of the box it is reachable from this machine only: the server binds to loopback, and DNS-rebinding protection rejects any Host (or Origin) header other than localhost, 127.0.0.1 or [::1]. There is no built-in authentication, so to serve other machines put an authenticating reverse proxy in front, then bind wider with --host (e.g. 0.0.0.0) and name the public host with --allowed-host (plus --allowed-origin for browser clients).
In Docker, loopback is the container's own, which a published port cannot reach. Bind every interface inside the container and publish the port on the host's loopback instead — the endpoint is still http://127.0.0.1:3000/mcp, and still unreachable from other machines:
docker run --rm -p 127.0.0.1:3000:3000 -v kotlin-lib-mcp-cache:/home/mcp/.cache \
ghcr.io/aoreshkov/kotlin-lib-mcp --transport http --host 0.0.0.0 --port 3000
CLI flags — server --help lists them all with their defaults, the OTEL_* variables and examples: --transport stdio|http; --port, --host, --allowed-host and --allowed-origin, which apply to the http transport only, so passing one with stdio is a usage error; --cache-dir; --repo (repeatable, searched after Maven Central) and --no-maven-central (only the --repo repositories, for a mirror that proxies Central); --max-concurrent-fetches; and the opt-ins --forward-logs-to-client (stdio only), --otel (see Telemetry) and --tasks (see Tasks). --version prints the server's version. A command-line mistake exits 2 and an internal error 70 (sysexits.h). SIGTERM or Ctrl-C stops the server cleanly within 5 seconds: task records are saved and buffered traces flushed before the process ends.
All tools take a Maven coordinate (group:artifact:version). Call `fetch_library` first — it downloads, extracts and analyzes the sources once; every other tool answers from the cached index. fetch_library, list_versions and get_latest_version also accept group:artifact, and fetch_library accepts group:artifact:latest to resolve the latest stable release.
| Tool | Purpose |
|---|---|
fetch_library | Download + analyze + cache; returns a summary. Idempotent. Version may be omitted or latest |
list_packages | Packages with declaration counts and KMP targets; paged |
list_declarations | Declarations with signatures and deprecations; filter by package, visibility and deprecated; paged |
get_api_signature | Resolved signature of one declaration by FQ name, with its deprecation and ReplaceWith |
get_kdoc | KDoc (summary, description, tags) of one declaration |
get_source | Raw source of a file (path) or one declaration (fqName); paged by line |
search_source | Substring/regex search; bounded, returns file:line snippets |
diff_versions | Unified diff between two fetched versions; summary-first, paged, path-filtered |
diff_api | Public-API changes between two fetched versions — added, removed, changed, deprecated (with ReplaceWith); summary-first, paged, package- and change-filtered |
get_dependencies | Dependency tree from .pom/.module; bounded depth and maxNodes |
list_versions | Published versions from maven-metadata.xml, newest-first; paged |
get_latest_version | Latest stable release (and newest overall) from maven-metadata.xml |
Every tool ships the metadata the MCP spec encourages clients to use: a display title, behavior annotations (readOnlyHint: true everywhere except fetch_library, which is additive-only — destructiveHint: false, idempotentHint: true; tools that reach Maven repositories set openWorldHint: true, cache-only tools false), a typed `outputSchema` derived from the response DTO's serializer, and an icon. Results carry both compact JSON text and the matching structuredContent object, so structured-output clients and plain-text clients see the same payload.
fetch_library also reports progress notifications (download → analyze → cache) when the client sends a progressToken. Logs go to stderr by default (which the spec blesses for all stdio logging); the deprecated MCP logging capability — mirroring logs to clients as notifications/message (respecting logging/setLevel) — is opt-in via --forward-logs-to-client, for stdio clients that surface MCP log messages but drop stderr. It is refused with --transport http, where every session would receive every other session's logs.
When fetch_library is called without a version (io.ktor:ktor-client-core, or …:latest) it has to guess. If the client advertised the `elicitation` capability, it asks instead: an elicitation/create form-mode request carrying a single-select version picker — the titled oneOf shape from SEP-1330, with the latest stable release pre-selected as the schema default.
| The user | The server |
|---|---|
| accepts a version | fetches exactly that one |
| declines | fetches the latest stable release, as it
Solo se muestra el principio; lee el resto en el repo