kmp-api-lookup-mcp
kmp-api-lookup-mcp
MCP-сервер для быстрого поиска API klib Kotlin/Native для iOS.
Сервер индексирует локальные klib платформы Kotlin/Native в постоянную базу данных SQLite и предоставляет компактный MCP API для поиска символов и обслуживания индекса.
Установка
Предварительные требования
Node.js 22+
Локальная установка Kotlin/Native с klib платформы, доступными через
KONAN_HOMEили~/.konan
Из npm (рекомендуется)
npm install -g kmp-api-lookup-mcpЗапуск без глобальной установки через npx
npx -y kmp-api-lookup-mcpЭто не устанавливает пакет глобально. npm загружает и запускает опубликованный бинарный файл по требованию.
Из исходного кода
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
Быстрый старт
В качестве MCP-сервера
Добавьте сервер в конфигурацию вашего MCP-клиента.
Типичные расположения файлов конфигурации:
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
Готовые к копированию примеры файлов включены в репозиторий:
claude_desktop_config.json.exampleдля глобальной установки npmclaude_desktop_config.npx.json.exampleдля запуска опубликованного пакета черезnpxclaude_desktop_config.konan_home.json.exampleдля глобальной установки npm с явным указаниемKONAN_HOMEclaude_desktop_config.from_source.json.exampleдля запуска собранного сервера из репозитория
Если пакет установлен глобально:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp"
}
}
}Если вы предпочитаете не устанавливать пакет глобально:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "npx",
"args": ["-y", "kmp-api-lookup-mcp"]
}
}
}Это удобно для быстрой настройки, но первый запуск может быть медленнее, так как npx может потребоваться загрузить пакет.
Если вы хотите указать путь напрямую к конкретной установке 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"
}
}
}
}Если вы запускаете сервер из исходного кода:
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"]
}
}
}Первый запуск
После запуска сервера обычные первые шаги:
Вызовите
get_klib_index_status, чтобы узнать, существует ли уже индекс.Если индекс отсутствует, вызовите
rebuild_klib_indexдля нужной версии Kotlin/Native и целевой платформы.Начните поиск символов с помощью
lookup_symbol.
Пример запроса на пересборку:
{
"kotlinVersion": "2.2.21",
"target": "ios_simulator_arm64",
"frameworks": ["AVFoundation", "AVKit", "MediaPlayer", "AVFAudio"]
}Текущая область применения
TypeScript npm ESM MCP-сервер через stdio
Постоянный кэш SQLite в каталоге кэша пользователя
Обнаружение предустановленных версий Kotlin/Native через
KONAN_HOME,~/.konanили явный путьРучная пересборка индекса из
klib dump-metadata-signaturesОбогащение по требованию из
klib dump-metadataдля полных сигнатур Kotlin, иерархии классов и импортовСтруктурированные JSON-ответы MCP с краткими текстовыми сводками
Реализованные инструменты
lookup_symbol
Разрешает класс, член или псевдоним/константу платформы Apple в Kotlin/Native в компактную карточку разработки.
Входные данные:
{
"query": "AVPlayer",
"frameworks": ["AVFoundation"],
"detail": "compact",
"queryKind": "auto"
}Поведение:
Запрос класса, например
AVPlayer, возвращает одну карточку класса с:полной сигнатурой класса Kotlin
суперклассом и реализованными интерфейсами
всеми конструкторами, методами экземпляра и методами класса, когда
detailопущен или установлен вcompact, сгруппированными по имени члена для уменьшения размера выводаотдельным списком
propertiesв компактном режиме с явными флагамиaccessors.getterиaccessors.setter, когда для этого свойства существуют соответствующие методы получения/установкикомпактный режим удаляет только дублирующиеся методы доступа к свойствам; он не обрезает несвязанные методы с поверхности класса
полным набором прямых членов, членами расширения моста ObjC и членами класса
Meta, когдаdetailустановлен вfullrequiredImportsдля генерации кода
Запрос члена, например
AVPlayer.playилиplay, возвращает компактную сгруппированную карточку с сигнатурами перегрузок и импортами.Точные псевдонимы и константы платформы верхнего уровня, такие как
AVPlayerStatus,AVLayerVideoGravityилиAVPlayerItemDidPlayToEndTimeNotification, разрешаются в карточки членов с областью действия пакета, а не деградируют до нечеткого сопоставления классов.Если запрос неоднозначен, инструмент возвращает короткий список альтернатив вместо вывода необработанных строк поиска.
Вывод намеренно опускает шумные поля, такие как пути к БД, внутренние идентификаторы, необработанные дампы метаданных, этапы сопоставления и пути установки.
detailпо умолчанию имеет значениеcompact. Используйте"detail": "full"только тогда, когда вам действительно нужна вся поверхность класса.
get_klib_index_status
Возвращает компактную сводку индекса.
Входные данные:
{}Вывод включает:
readyобнаруженные версии и целевые платформы Kotlin/Native
проиндексированные наборы данных с количеством
совокупное количество символов
lastRebuildAt
rebuild_klib_index
Создает или обновляет индекс SQLite из локальных klib.
Входные данные:
{
"kotlinVersion": "2.2.21",
"target": "ios_simulator_arm64",
"frameworks": ["Foundation", "UIKit"],
"force": false,
"dryRun": false,
"cleanBefore": true
}Правила:
kotlinVersionиkonanHomeявляются необязательными, но вы можете предоставить не более одного из них.Если оба опущены, используется последняя обнаруженная локальная установка Kotlin/Native.
Если
targetопущен, сервер предпочитаетios_simulator_arm64, затемios_arm64, затемios_x64.Если
frameworksопущен, пересборка охватывает все фреймворки для выбранной целевой платформы.dryRun=trueвычисляет план пересборки без записи в SQLite.force=trueигнорирует проверки свежести.cleanBefore=trueудаляет существующие строки для затронутых фреймворков перед записью свежих записей.
Структура хранения
Сервер хранит данные вне репозитория.
SQLite DB: каталог кэша пользователя +
klib-index.sqliteМетаданные службы: каталог кэша пользователя +
state.json
Типичные расположения кэша:
macOS:
~/Library/Caches/kmp-api-lookup-mcp/Linux:
${XDG_CACHE_HOME:-~/.cache}/kmp-api-lookup-mcp/Windows:
%LOCALAPPDATA%/kmp-api-lookup-mcp/
Правила обнаружения
Установки обнаруживаются в следующем порядке:
Явный аргумент
konanHome, когда инструмент его предоставляетKONAN_HOME~/.konan/kotlin-native-prebuilt-*
Каждая установка проверяется на наличие:
bin/klibklib/platform/
Конфигурация MCP
Запуск из исходного кода
{
"mcpServers": {
"kmp-api-lookup": {
"command": "node",
"args": ["/absolute/path/to/kmp-api-lookup-mcp/dist/index.js"]
}
}
}Дополнительное переопределение среды:
{
"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"
}
}
}
}Запуск как установленный бинарный файл
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp"
}
}
}Типичная конфигурация установленного бинарного файла
{
"mcpServers": {
"kmp-api-lookup": {
"command": "kmp-api-lookup-mcp",
"env": {
"KONAN_HOME": "/Users/you/.konan/kotlin-native-prebuilt-macos-aarch64-2.2.21"
}
}
}
}Разработка
Скрипты
npm run devзапускает сервер из исходных кодов TypeScriptnpm run buildкомпилирует вdist/npm startзапускает скомпилированный серверnpm run typecheckзапускает проверку типов TypeScriptnpm testзапускает Vitestnpm run test:watchзапускает Vitest в режиме наблюдения
Локальный рабочий процесс
npm install
npm run typecheck
npm run build
npm testПубликация
Публикация в npm обрабатывается GitHub Actions.
Отправьте тег в формате
vX.Y.Z, гдеX.Y.Zсоответствуетversionвpackage.json.Рабочий процесс
Publish Packageпроверяет пакет и публикует его в npm.Пакет npm должен быть настроен для доверенной публикации из репозитория GitHub
SuLG-ik/kmp-api-lookup-mcp.См. PUBLISHING.md для однократной настройки npm и точных шагов выпуска.
Покрытие тестами
Текущий набор тестов охватывает:
Регистрацию инструментов MCP
Парсинг строк
dump-metadata-signaturesПоведение хранилища SQLite и поиска на синтетических фикстурах
Создание среды выполнения сервера
Структура проекта
.
├── 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.-