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 linkБыстрый старт
В качестве 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 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