Skip to main content
Glama
luneos-mcp

luneos-mcp

Official
by webOS-ports

luneos-mcp

MCP (Model Context Protocol) server packaging the knowledge gained porting LuneOS to modern Android devices via Halium GSIs and GKI kernels — kernel porting, boot-image construction, Yocto/meta-smartphone device bring-up, nyx-modules configuration, GSI building, installation, and a staged "device doesn't come up" debugging playbook.

Modelled on webOSArchive/webos-mcp, but for LuneOS device porting rather than legacy webOS app development.

The knowledge was distilled from real ports and bring-ups: Pixels on GKI (bluejay, panther) and pre-GKI kernels (sargo, sunfish, bramble), MediaTek phones and tablets (mindphone, q25, mp01, radon, titanpocket, sm-t220), and Qualcomm Tier B devices from 2015 to 2020 (a3-2015-halium, athena, fajita, surya). The device index in architecture lists each with its tier, kernel, vendor, GSI and status; every device has its own device-<codename> topic. Material from the UBports, Droidian and Sailfish OS (HADK) porting guides is integrated where it transfers to the LuneOS stack, and flagged where it conflicts.

Install

git clone https://github.com/webOS-ports/luneos-porting-mcp.git
cd luneos-porting-mcp
npm install

# For Claude Code, user scope:
claude mcp add luneos-mcp -s user -- node "$PWD/index.js"

# Or per-project:
claude mcp add luneos-mcp -s project -- node "$PWD/index.js"

(Once published to npm: claude mcp add luneos-mcp -s user -- npx -y luneos-mcp@latest.)

Requires Node.js 18+.

To point Claude at the knowledge base in a porting project, copy templates/CLAUDE.md into the project (or merge its contents into an existing CLAUDE.md).

Related MCP server: android-mcp-toolkit

What it exposes

Resources

URI

Content

luneos://knowledge/all

every topic concatenated — very large; prefer architecture + search

luneos://knowledge/<topic>

one topic file

Topics (auto-discovered from knowledge/*.md):

Topic

Covers

architecture

the GSI+GKI model, Tier A/B and Tier 0/1/2, GSI↔vendor matching, device index, glossary

kernel-porting

the kernel method: config delta, fragment traps, Tier A ACK builds, Tier B vendor trees, the command line

kmi-crc-matching

whether a vendor .ko loads into your kernel: vermagic, CRCs, poison options per KMI, struct layouts, force-loading, shipping your own modules

boot-images

header layouts, the kernel/ramdisk window, per-layout repack recipes, initramfs init patches, AVB, debug images

installing

flash kits, vbmeta flags, flash steps per layout, SP Flash Tool / lk2nd / Odin routes, anti-rollback

gsi-building

building Halium GSIs (arm64 and 32-bit arm), published releases, VNDK snapshot matrix

device-bringup-yocto

meta-smartphone layers, machine confs, GKI boot-image recipes, bitbake traps, mount-android/LXC

nyx-modules

nyx module selection and runtime-derived nyx.conf, time ownership

hal-userspace

libhybris/libgbinder stack by subsystem: graphics, gbinder ApiLevel, MTK connectivity, audio, modem, BT, sensors

debugging

staged "device doesn't come up" playbook, debug channels, symptom → cause table

tools

kmi-crc-check, symvers-drift, module-order, mer-kernel-check, mtkclient, …

deviceinfo-reference

the UBports/HGABT deviceinfo variables our Tier 1 format reuses

device-<codename>

per-device reference: status, platform facts, kernel, boot image, vendor/GSI, Yocto, install, open issues

Tools

  • luneos_list_topics — list topics with descriptions

  • luneos_get_topic — fetch one topic's markdown

  • luneos_search — keyword search across the whole knowledge base (symptoms, config options, file names)

Prompts

  • luneos-session-start — orient a session on the knowledge base

  • luneos-port-device — guided porting workflow for a new device

  • luneos-debug-boot — staged triage for a device that does not come up

Updating the knowledge

Each file in knowledge/ is one topic; the first # heading is its title and the first paragraph its description, so keep that paragraph to one sentence of at most ~200 characters and put the rest in a second paragraph. A correction replaces the wrong text in place rather than being appended next to it. Each fact has one home; elsewhere, link to it (kmi-crc-matching.md § Struct layouts). Device files follow a common shape (see any device-*.md). Add or edit files and the server picks them up on the next request — no restart or re-registration needed.

License

Apache-2.0

Available Tools

3 tools
luneos_get_topicA

Return the full markdown content of one LuneOS knowledge topic (e.g. 'kernel-porting', 'debugging', 'device-bluejay'). Use luneos_list_topics to see valid names.

NameRequiredDescriptionDefault
topicYesTopic name (filename without .md)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the return format ('full markdown content'), which is genuinely useful, and the name implies a read-only operation. It says nothing about behavior on an invalid topic name, missing topics, or content size/latency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core action front-loaded and the prerequisite tool named second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter retrieval tool with no output schema, the description supplies the key missing piece — what comes back (markdown content). An agent has enough to call it correctly; only error/edge-case behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the 'topic' parameter is already documented as a filename without .md. The description reinforces this with example values, but adds no syntax or constraint beyond the schema — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return the full markdown content of one LuneOS knowledge topic') plus the exact grain (one topic), which distinguishes it from list_topics and search. Concrete example topic names make the resource tangible.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to luneos_list_topics for valid names, giving clear context for the required argument. It does not, however, distinguish when to retrieve a full topic versus using luneos_search, so the sibling comparison is only half-covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

luneos_list_topicsA

List all LuneOS knowledge-base topics with a one-line description of each. Use this first to see what porting/debugging knowledge is available.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that each result includes a one-line description (useful) but omits read-only/rate-limit/pagination behavior and output structure. Adequate but with gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: purpose first, then usage. No wasted words, well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param listing tool with no annotations and no output schema, the description covers what it returns and when to call it. Slightly short of full completeness since it doesn't characterize output size or ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. Nothing to document, and the description correctly implies a no-argument listing call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List), resource (LuneOS knowledge-base topics), and return format (one-line description each). Clearly distinguishable from siblings like luneos_get_topic and luneos_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this first to see what porting/debugging knowledge is available,' giving clear when-to-use guidance. It doesn't name the alternative tools or state when not to use it, but the first-step framing is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.0.0
    • First observedluneos_get_topic
    • First observedluneos_list_topics
    • First observedluneos_search

TDQS

A4/5.0

Scored across 3 tools

Disambiguation5/5

The three tools map cleanly onto distinct retrieval modes: enumerate topics (list), fetch one full document (get), and full-text search across the corpus (search). Descriptions explicitly state when to use each, including cross-references ('Use luneos_list_topics to see valid names'), leaving no realistic chance of misselection.

Naming Consistency5/5

All three names use the same luneos_ prefix followed by a verb_noun pattern (luneos_list_topics, luneos_get_topic, luneos_search). The singular/plural distinction between get_topic and list_topics is meaningful rather than inconsistent, and the style is uniform throughout.

Tool Count4/5

Three tools is on the thin side but each has a distinct, non-overlapping role and the whole surface is coherent for a read-only knowledge base. Nothing feels padded or missing at the operation level, though a slightly larger set (e.g. browsing by category or recency) would not be unreasonable.

Completeness4/5

For a read-only knowledge base, list/get/search covers the full retrieval lifecycle with no dead ends: an agent can discover topics, read them in full, or jump straight to a symptom via search. Minor gaps exist around metadata such as topic freshness, categories, or pagination for very large corpora, but core usage is fully supported.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A growing collection of MCP tools for Android Development. Currently features a deterministic Figma-SVG-to-Android-XML converter, with plans for Gradle analysis, Resource management, and ADB integration tools.
    7
    14 npm
    18
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI agents with a unified MCP interface for Android APK reverse engineering, metadata analysis, Smali/resource editing, rebuilding, signing, verification, and ADB device testing.
    MIT