kmp-api-lookup-mcp
kmp-api-lookup-mcp
Servidor MCP para la búsqueda rápida de APIs de klib de iOS en Kotlin/Native.
El servidor indexa los klibs de la plataforma Kotlin/Native local en una base de datos SQLite persistente y expone una API MCP compacta para la búsqueda de símbolos y el mantenimiento del índice.
Instalación
Requisitos previos
Node.js 22+
Una instalación local de Kotlin/Native con klibs de plataforma disponibles a través de
KONAN_HOMEo~/.konan
Desde npm (recomendado)
npm install -g kmp-api-lookup-mcpEjecutar sin instalación global mediante npx
npx -y kmp-api-lookup-mcpEsto no instala el paquete de forma global. npm descarga y ejecuta el binario publicado bajo demanda.
Desde el código fuente
git clone https://github.com/SuLG-ik/kmp-api-lookup-mcp.git
cd kmp-api-lookup-mcp
npm install
npm run build
npm linkInicio rápido
Como servidor MCP
Añada el servidor a la configuración de su cliente MCP.
Ubicaciones comunes de los archivos de configuración:
macOS Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows Claude Desktop:
%APPDATA%/Claude/claude_desktop_config.jsonLinux Claude Desktop:
~/.config/Claude/claude_desktop_config.json
En el repositorio se incluyen archivos de ejemplo listos para copiar:
claude_desktop_config.json.examplepara una instalación global de npmclaude_desktop_config.npx.json.examplepara ejecutar el paquete publicado a través denpxclaude_desktop_config.konan_home.json.examplepara una instalación global de npm conKONAN_HOMEexplícitoclaude_desktop_config.from_source.json.examplepara ejecutar el servidor compilado desde el repositorio
Si el paquete está instalado globalmente:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp"
}
}
}Si prefiere no instalar el paquete globalmente:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "npx",
"args": ["-y", "kmp-api-lookup-mcp"]
}
}
}Esto es conveniente para una configuración rápida, pero el primer inicio puede ser más lento porque npx puede necesitar descargar el paquete.
Si desea apuntar directamente a una instalación específica de Kotlin/Native:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp",
"env": {
"KONAN_HOME": "/Users/you/.konan/kotlin-native-prebuilt-macos-aarch64-2.2.21"
}
}
}
}Si ejecuta el servidor desde el código fuente:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"]
}
}
}Primera ejecución
Después de que el servidor se inicie, los pasos habituales son:
Llame a
get_klib_index_statuspara ver si ya existe un índice.Si falta el índice, llame a
rebuild_klib_indexpara la versión de Kotlin/Native y el objetivo que necesite.Comience a consultar símbolos con
lookup_symbol.
Ejemplo de solicitud de reconstrucción:
{
"kotlinVersion": "2.2.21",
"target": "ios_simulator_arm64",
"frameworks": ["AVFoundation", "AVKit", "MediaPlayer", "AVFAudio"]
}Alcance actual
Servidor MCP ESM de npm en TypeScript sobre stdio
Caché persistente de SQLite en el directorio de caché del usuario
Detección de instalaciones precompiladas de Kotlin/Native a través de
KONAN_HOME,~/.konano una ruta explícitaReconstrucción manual del índice desde
klib dump-metadata-signaturesEnriquecimiento bajo demanda desde
klib dump-metadatapara firmas completas de Kotlin, jerarquía de clases e importacionesRespuestas MCP en JSON estructurado con resúmenes de texto cortos
Herramientas implementadas
lookup_symbol
Resuelve una clase, miembro o alias/constante de plataforma de nivel superior de la plataforma Apple de Kotlin/Native en una tarjeta de desarrollo compacta.
Entrada:
{
"query": "AVPlayer",
"frameworks": ["AVFoundation"],
"detail": "compact",
"queryKind": "auto"
}Comportamiento:
Una consulta de clase como
AVPlayerdevuelve una tarjeta de clase con:firma completa de la clase Kotlin
superclase e interfaces implementadas
todos los constructores, métodos de instancia y métodos de clase cuando
detailse omite o se establece encompact, agrupados por nombre de miembro para reducir el tamaño de la salidauna lista de
propertiesseparada en modo compacto con indicadores explícitosaccessors.getteryaccessors.settercuando existen métodos getter/setter coincidentes para esa propiedadel modo compacto solo elimina los métodos de acceso a propiedades duplicados; no recorta métodos no relacionados de la superficie de la clase
el conjunto completo de miembros directos, miembros de extensión del puente ObjC y miembros de la clase
Metacuandodetailse establece enfullrequiredImportspara la generación de código
Una consulta de miembro como
AVPlayer.playoplaydevuelve una tarjeta agrupada compacta con firmas de sobrecarga e importaciones.Los alias y constantes de plataforma exactos de nivel superior como
AVPlayerStatus,AVLayerVideoGravityoAVPlayerItemDidPlayToEndTimeNotificationse resuelven en tarjetas de miembros con ámbito de paquete en lugar de degradarse a coincidencias de clase difusas.Si la consulta es ambigua, la herramienta devuelve una lista corta de alternativas en lugar de volcar filas de búsqueda sin procesar.
La salida omite intencionalmente campos ruidosos como rutas de DB, IDs internos, volcados de metadatos sin procesar, etapas de coincidencia y rutas de instalación.
detailtiene como valor predeterminadocompact. Use"detail": "full"solo cuando realmente necesite toda la superficie de la clase.
get_klib_index_status
Devuelve un resumen compacto del índice.
Entrada:
{}La salida incluye:
readyversiones y objetivos de Kotlin/Native descubiertos
conjuntos de datos indexados con recuentos
recuentos agregados de símbolos
lastRebuildAt
rebuild_klib_index
Construye o actualiza el índice SQLite desde klibs locales.
Entrada:
{
"kotlinVersion": "2.2.21",
"target": "ios_simulator_arm64",
"frameworks": ["Foundation", "UIKit"],
"force": false,
"dryRun": false,
"cleanBefore": true
}Reglas:
kotlinVersionykonanHomeson opcionales, pero puede proporcionar como máximo uno de ellos.Si ambos se omiten, se utiliza la última instalación local de Kotlin/Native descubierta.
Si se omite
target, el servidor prefiereios_simulator_arm64, luegoios_arm64, luegoios_x64.Si se omiten
frameworks, la reconstrucción cubre todos los frameworks para el objetivo seleccionado.dryRun=truecalcula el plan de reconstrucción sin escribir en SQLite.force=trueignora las comprobaciones de frescura.cleanBefore=trueelimina las filas existentes para los frameworks afectados antes de escribir registros nuevos.
Diseño de almacenamiento
El servidor almacena los datos fuera del repositorio.
SQLite DB: directorio de caché del usuario +
klib-index.sqliteMetadatos del servicio: directorio de caché del usuario +
state.json
Ubicaciones típicas de caché:
macOS:
~/Library/Caches/kmp-api-lookup-mcp/Linux:
${XDG_CACHE_HOME:-~/.cache}/kmp-api-lookup-mcp/Windows:
%LOCALAPPDATA%/kmp-api-lookup-mcp/
Reglas de descubrimiento
Las instalaciones se descubren en este orden:
Argumento
konanHomeexplícito cuando una herramienta lo proporcionaKONAN_HOME~/.konan/kotlin-native-prebuilt-*
Cada instalación se valida comprobando:
bin/klibklib/platform/
Configuración de MCP
Ejecutar desde el código fuente
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"]
}
}
}Anulación de entorno opcional:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"],
"env": {
"KONAN_HOME": "/Users/you/.konan/kotlin-native-prebuilt-macos-aarch64-2.2.21"
}
}
}
}Ejecutar como binario instalado
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp"
}
}
}Configuración típica de binario instalado
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp",
"env": {
"KONAN_HOME": "/Users/you/.konan/kotlin-native-prebuilt-macos-aarch64-2.2.21"
}
}
}
}Desarrollo
Scripts
npm run devinicia el servidor desde fuentes de TypeScriptnpm run buildcompila adist/npm startejecuta el servidor compiladonpm run typecheckejecuta la comprobación de tipos de TypeScriptnpm testejecuta Vitestnpm run test:watchinicia Vitest en modo de vigilancia
Flujo de trabajo local
npm install
npm run typecheck
npm run build
npm testPublicación
La publicación en npm se gestiona mediante GitHub Actions.
Envíe una etiqueta con el formato
vX.Y.ZdondeX.Y.Zcoincida con laversionenpackage.json.El flujo de trabajo
Publish Packagevalida el paquete y lo publica en npm.El paquete npm debe estar configurado para la publicación confiable desde el repositorio de GitHub
SuLG-ik/kmp-api-lookup-mcp.Consulte PUBLISHING.md para la configuración única de npm y los pasos exactos de lanzamiento.
Cobertura de pruebas
El conjunto de pruebas actual cubre:
Registro de herramientas MCP
Análisis de líneas de
dump-metadata-signaturesComportamiento de almacenamiento y búsqueda en SQLite en accesorios sintéticos
Creación del tiempo de ejecución del servidor
Estructura del proyecto
.
├── src/
│ ├── index.ts
│ ├── config/
│ ├── indexer/
│ ├── server/
│ ├── storage/
│ ├── tools/
│ ├── search-utils.ts
│ └── types.ts
├── test/
├── package.json
├── tsconfig.json
├── tsconfig.build.json
└── vitest.config.tsThis server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SuLG-ik/kmp-api-lookup-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server