kmp-api-lookup-mcp
kmp-api-lookup-mcp
MCP-Server für die schnelle Suche nach Kotlin/Native iOS klib-APIs.
Der Server indiziert lokale Kotlin/Native-Plattform-klibs in einer persistenten SQLite-Datenbank und stellt eine kompakte MCP-API für die Symbolsuche und Indexwartung bereit.
Installation
Voraussetzungen
Node.js 22+
Eine lokale Kotlin/Native-Installation mit Plattform-klibs, verfügbar über
KONAN_HOMEoder~/.konan
Über npm (empfohlen)
npm install -g kmp-api-lookup-mcpAusführen ohne globale Installation via npx
npx -y kmp-api-lookup-mcpDies installiert das Paket nicht global. npm lädt die veröffentlichte Binärdatei bei Bedarf herunter und führt sie aus.
Aus dem Quellcode
git clone https://github.com/SuLG-ik/kmp-api-lookup-mcp.git
cd kmp-api-lookup-mcp
npm install
npm run build
npm linkSchnellstart
Als MCP-Server
Fügen Sie den Server zu Ihrer MCP-Client-Konfiguration hinzu.
Typische Speicherorte für Konfigurationsdateien:
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
Kopierfertige Beispieldateien sind im Repository enthalten:
claude_desktop_config.json.examplefür eine globale npm-Installationclaude_desktop_config.npx.json.examplefür das Ausführen des veröffentlichten Pakets übernpxclaude_desktop_config.konan_home.json.examplefür eine globale npm-Installation mit explizitemKONAN_HOMEclaude_desktop_config.from_source.json.examplefür das Ausführen des gebauten Servers aus dem Repository
Wenn das Paket global installiert ist:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp"
}
}
}Wenn Sie das Paket nicht global installieren möchten:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "npx",
"args": ["-y", "kmp-api-lookup-mcp"]
}
}
}Dies ist praktisch für eine schnelle Einrichtung, aber der erste Start kann langsamer sein, da npx das Paket möglicherweise herunterladen muss.
Wenn Sie direkt auf eine bestimmte Kotlin/Native-Installation verweisen möchten:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp",
"env": {
"KONAN_HOME": "/Users/you/.konan/kotlin-native-prebuilt-macos-aarch64-2.2.21"
}
}
}
}Wenn Sie den Server aus dem Quellcode ausführen:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"]
}
}
}Erster Start
Nachdem der Server gestartet wurde, sind die üblichen ersten Schritte:
Rufen Sie
get_klib_index_statusauf, um zu sehen, ob bereits ein Index existiert.Wenn der Index fehlt, rufen Sie
rebuild_klib_indexfür die benötigte Kotlin/Native-Version und das Ziel (Target) auf.Beginnen Sie mit der Abfrage von Symbolen mit
lookup_symbol.
Beispiel für eine Rebuild-Anfrage:
{
"kotlinVersion": "2.2.21",
"target": "ios_simulator_arm64",
"frameworks": ["AVFoundation", "AVKit", "MediaPlayer", "AVFAudio"]
}Aktueller Umfang
TypeScript npm ESM MCP-Server über stdio
Persistenter SQLite-Cache im Benutzer-Cache-Verzeichnis
Erkennung von vorinstallierten Kotlin/Native-Installationen über
KONAN_HOME,~/.konanoder einen expliziten PfadManueller Index-Rebuild über
klib dump-metadata-signaturesOn-Demand-Anreicherung über
klib dump-metadatafür vollständige Kotlin-Signaturen, Klassenhierarchie und ImporteStrukturierte JSON-MCP-Antworten mit kurzen Textzusammenfassungen
Implementierte Tools
lookup_symbol
Löst eine Kotlin/Native Apple-Plattform-Klasse, einen Member oder einen Alias/eine Konstante auf oberster Ebene in eine kompakte Entwicklungskarte auf.
Eingabe:
{
"query": "AVPlayer",
"frameworks": ["AVFoundation"],
"detail": "compact",
"queryKind": "auto"
}Verhalten:
Eine Klassenabfrage wie
AVPlayergibt eine Klassenkart mit folgenden Informationen zurück:vollständige Kotlin-Klassensignatur
Superklasse und implementierte Interfaces
alle Konstruktoren, Instanzmethoden und Klassenmethoden, wenn
detailweggelassen oder aufcompactgesetzt ist, gruppiert nach Member-Name, um die Ausgabegröße zu reduziereneine separate
properties-Liste im kompakten Modus mit explizitenaccessors.getter- undaccessors.setter-Flags, wenn passende Getter/Setter-Methoden für diese Eigenschaft existierender kompakte Modus entfernt nur duplizierte Eigenschafts-Accessor-Methoden; er kürzt keine unabhängigen Methoden von der Klassenschnittstelle
die vollständige direkte Member-Menge, ObjC-Bridge-Erweiterungsmember und
Meta-Klassenmember, wenndetailauffullgesetzt istrequiredImportsfür die Codegenerierung
Eine Member-Abfrage wie
AVPlayer.playoderplaygibt eine kompakte gruppierte Karte mit Überladungssignaturen und Importen zurück.Exakte Plattform-Aliase und Konstanten auf oberster Ebene wie
AVPlayerStatus,AVLayerVideoGravityoderAVPlayerItemDidPlayToEndTimeNotificationwerden als Member-Karten im Paket-Scope aufgelöst, anstatt in unscharfe Klassenübereinstimmungen zu zerfallen.Wenn die Abfrage mehrdeutig ist, gibt das Tool eine kurze Liste von Alternativen zurück, anstatt rohe Suchergebnisse auszugeben.
Die Ausgabe lässt absichtlich verrauschte Felder wie DB-Pfade, interne IDs, rohe Metadaten-Dumps, Suchstufen und Installationspfade weg.
detailist standardmäßig aufcompactgesetzt. Verwenden Sie"detail": "full"nur, wenn Sie wirklich die gesamte Klassenschnittstelle benötigen.
get_klib_index_status
Gibt eine kompakte Indexzusammenfassung zurück.
Eingabe:
{}Die Ausgabe enthält:
readyerkannte Kotlin/Native-Versionen und Targets
indizierte Datensätze mit Anzahlen
aggregierte Symbolanzahlen
lastRebuildAt
rebuild_klib_index
Erstellt oder aktualisiert den SQLite-Index aus lokalen klibs.
Eingabe:
{
"kotlinVersion": "2.2.21",
"target": "ios_simulator_arm64",
"frameworks": ["Foundation", "UIKit"],
"force": false,
"dryRun": false,
"cleanBefore": true
}Regeln:
kotlinVersionundkonanHomesind optional, aber Sie dürfen maximal eines davon angeben.Wenn beide weggelassen werden, wird die zuletzt erkannte lokale Kotlin/Native-Installation verwendet.
Wenn
targetweggelassen wird, bevorzugt der Serverios_simulator_arm64, dannios_arm64, dannios_x64.Wenn
frameworksweggelassen wird, deckt der Rebuild alle Frameworks für das ausgewählte Target ab.dryRun=trueberechnet den Rebuild-Plan, ohne in SQLite zu schreiben.force=trueignoriert Frischeprüfungen.cleanBefore=trueentfernt existierende Zeilen für die betroffenen Frameworks, bevor neue Datensätze geschrieben werden.
Speicherlayout
Der Server speichert Daten außerhalb des Repositorys.
SQLite DB: Benutzer-Cache-Verzeichnis +
klib-index.sqliteService-Metadaten: Benutzer-Cache-Verzeichnis +
state.json
Typische Cache-Speicherorte:
macOS:
~/Library/Caches/kmp-api-lookup-mcp/Linux:
${XDG_CACHE_HOME:-~/.cache}/kmp-api-lookup-mcp/Windows:
%LOCALAPPDATA%/kmp-api-lookup-mcp/
Erkennungsregeln
Installationen werden in dieser Reihenfolge erkannt:
Explizites
konanHome-Argument, wenn ein Tool es bereitstelltKONAN_HOME~/.konan/kotlin-native-prebuilt-*
Jede Installation wird validiert durch Prüfung auf:
bin/klibklib/platform/
MCP-Konfiguration
Aus dem Quellcode ausführen
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"]
}
}
}Optionale Umgebungsvariablen-Überschreibung:
{
"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"
}
}
}
}Als installierte Binärdatei ausführen
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp"
}
}
}Typische Konfiguration für installierte Binärdateien
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp",
"env": {
"KONAN_HOME": "/Users/you/.konan/kotlin-native-prebuilt-macos-aarch64-2.2.21"
}
}
}
}Entwicklung
Skripte
npm run devstartet den Server aus TypeScript-Quellennpm run buildkompiliert nachdist/npm startführt den kompilierten Server ausnpm run typecheckführt die TypeScript-Typenprüfung ausnpm testführt Vitest ausnpm run test:watchstartet Vitest im Watch-Modus
Lokaler Workflow
npm install
npm run typecheck
npm run build
npm testVeröffentlichung
npm-Veröffentlichung wird über GitHub Actions abgewickelt.
Pushen Sie ein Tag im Format
vX.Y.Z, wobeiX.Y.Zmit derversioninpackage.jsonübereinstimmt.Der
Publish Package-Workflow validiert das Paket und veröffentlicht es auf npm.Das npm-Paket muss für Trusted Publishing aus dem GitHub-Repository
SuLG-ik/kmp-api-lookup-mcpkonfiguriert sein.Siehe PUBLISHING.md für die einmalige npm-Einrichtung und die genauen Release-Schritte.
Testabdeckung
Die aktuelle Testsuite deckt ab:
MCP-Tool-Registrierung
dump-metadata-signaturesZeilen-ParsingSQLite-Speicher- und Suchverhalten bei synthetischen Fixtures
Server-Laufzeiterstellung
Projektstruktur
.
├── 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