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 linkRelated MCP server: code-context-mcp
Schnellstart
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 deployed
Maintenance
Related MCP Connectors
iTunes Search MCP — Apple's public catalog search
- IndicesOAuthio.indices
Official Indices MCP server. Turn any website into a reliable API.
Build, run, and inspect iOS apps in disposable hosted Simulators from cloud coding agents.
Related MCP Servers
- AlicenseBqualityFmaintenanceGives Goose/Cursor access to your iOS/macOS project index through the Model Control Protocol (MCP) and IndexStoreDB. This provides exhaustive lists of function call sites to help your agent with refactoring and code navigation.468Apache 2.0
- AlicenseNot gradedqualityAmaintenanceIndexes codebases into a SQLite database to provide metadata, exports, dependency graphs, and change tracking for JS/TS projects. It enables users to search for symbols, map internal dependencies, and monitor file changes through MCP tools and a web dashboard.67 npm4MIT
- AlicenseNot gradedqualityAmaintenanceA comprehensive MCP server and CLI for Bazel-based Apple platform development, providing 112 tools across 19 workflow categories for building, testing, debugging, and managing iOS, macOS, tvOS, watchOS, visionOS, and Swift Package Manager projects.102 npm7MIT
- FlicenseNot gradedqualityDmaintenanceProvides code intelligence by indexing source code into SQLite and offering MCP tools for symbol search, flow tracing, and context retrieval to assist with code navigation and understanding.-