-
Notifications
You must be signed in to change notification settings - Fork 0
Add Linux MCPB packaging infrastructure #37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 7 commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
1f490ee
build: define Linux MCPB packaging contract
krishna916 f6e6d8a
build: add Linux MCPB package model
krishna916 05bc009
build: stage Linux MCPB runtime
krishna916 be975f5
ci: validate Linux MCPB packaging
krishna916 8713aec
fix: harden Linux MCPB verification
krishna916 9a36ff4
fix: lint Linux MCPB verifier
krishna916 e684bcc
fix: parse locked MCPB dependencies
krishna916 cb7c632
chore: format issue 36 implementation plan
krishna916 f20b60e
test: gate staged MCPB verification explicitly
krishna916 a7fa9dd
docs: track Windows review verification
krishna916 d454914
chore: format review addressal tracker
krishna916 44c2f8d
fix: override vulnerable tmp dependency
krishna916 de37b27
fix: isolate Linux MCPB dependency staging
krishna916 c86fe26
ci: run staged MCPB tests through package script
krishna916 93863d9
fix: include Linux MCPB runtime chunks
krishna916 44cffd9
docs: record Linux MCPB CI evidence
krishna916 9f7d812
chore: enforce LF checkout for verify
krishna916 38b3d05
Fix Linux MCPB review findings
krishna916 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -30,3 +30,6 @@ jobs: | |
|
|
||
| - name: Run verification gate | ||
| run: pnpm verify | ||
|
|
||
| - name: Build and verify Linux MCPB | ||
| run: pnpm build:mcpb | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,3 +18,6 @@ Desktop.ini | |
| *.orig | ||
|
|
||
| .pnpm-store/* | ||
| .mcpb/ | ||
| artifacts/*.mcpb | ||
| integrations/claude-desktop/node_modules/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| # Claude Desktop Linux MCPB Verification | ||
|
|
||
| ## Scope and support statement | ||
|
|
||
| This work packages Relay's canonical MCP stdio server for later Linux evaluation. It does not claim Linux MCPB compatibility. | ||
|
|
||
| ## Official-source verification | ||
|
|
||
| On 2026-07-30, the MCPB repository, manifest specification, CLI reference, and Claude Desktop local-server guide were rechecked. The source manifest targets MCPB manifest version 0.3 and Node stdio entry-point configuration. | ||
|
|
||
| ## Build environment | ||
|
|
||
| Windows implementation environment. Linux runtime testing was unavailable. | ||
|
|
||
| ## Bundle contents | ||
|
|
||
| The staged bundle is designed to include the canonical `dist/mcp/main.js`, package metadata, migrations, and production dependencies only. Durable SQLite data remains outside the extension directory through Relay's existing data-path resolution and `RELAY_DB_PATH` override. | ||
|
|
||
| ## Windows implementation verification | ||
|
|
||
| Platform-independent model, staging, source-asset, and command-orchestration tests run on Windows. The Linux-only commands reject `win32` before staging production dependencies, generating an artifact, or altering repository output. | ||
|
|
||
| ## Linux native build verification | ||
|
|
||
| Not executed; pending a supported Linux environment. In particular, `better-sqlite3` loading, Node ABI compatibility, libc compatibility, migrations from the staged bundle, and staged stdio startup are unverified. | ||
|
|
||
| ## Claude Desktop Linux verification | ||
|
|
||
| Not executed; pending a supported Linux environment and an installed Claude Desktop client. | ||
|
|
||
| ## Pending evidence | ||
|
|
||
| The Linux build, MCPB validation and packing, staged native runtime verification, Claude Desktop installation, tool discovery, capture and session retrieval, explicit mutation, restart, update, disable, and removal data-retention checks remain pending. | ||
|
|
||
| ## Failures and limitations | ||
|
|
||
| Windows must not be used as evidence for Linux native `better-sqlite3`, Node ABI, staged MCP runtime, or Claude Desktop support. | ||
|
|
||
| ## Completion decision | ||
|
|
||
| **UNVERIFIED — Linux build and Claude Desktop validation pending.** |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| .env | ||
| .env.* | ||
| *.db | ||
| *.db-wal | ||
| *.db-shm | ||
| *.log | ||
| *.map | ||
| tests/ | ||
| coverage/ | ||
| docs/ | ||
| .git/ | ||
| .github/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| # Relay Linux MCPB Notice | ||
|
|
||
| This unsigned bundle is produced for local compatibility evaluation under issue #36. | ||
| The Relay repository does not currently declare a top-level project licence, so this artifact must not be represented as a generally redistributable release. | ||
| Bundled third-party packages retain their package metadata and licence files under `node_modules`. | ||
| The bundle contains no user database. Relay stores durable data in its normal per-user Linux data location or at the explicit `RELAY_DB_PATH` supplied by the user. | ||
| Removing the extension does not authorize deleting the Relay database. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| # Relay Linux MCPB for Claude Desktop | ||
|
|
||
| This unsigned bundle is for local evaluation on one Linux machine only. It packages Relay's canonical MCP stdio server and does not establish broad Linux or Claude Desktop support. | ||
|
|
||
| ## Build on Linux | ||
|
|
||
| Use Node 24 and pnpm 10.2.0. From the Relay checkout, run `pnpm install --frozen-lockfile` followed by `pnpm build:mcpb`. The output is `artifacts/relay-<version>-linux-<arch>.mcpb`. | ||
|
|
||
| These commands intentionally refuse to run on Windows and macOS before staging dependencies or writing an artifact. See [the verification record](../../docs/claude-desktop-mcpb-verification.md) for the current evidence status. | ||
|
|
||
| ## Install and verify | ||
|
|
||
| In Claude Desktop, open Settings → Extensions → Advanced settings → Extension Developer → Install Extension, then select the generated `.mcpb`. Discover Relay through the chat `+` menu or Developer settings. Verify `relay_health`, capture a task with an exact session ID, retrieve that session, and perform only an explicitly directed mutation. | ||
|
|
||
| Fully quit and restart Claude Desktop, then repeat retrieval. For a local update, build a deliberately incremented test version and use the supported custom-extension update flow. Record the tested Linux distribution, architecture, Claude Desktop version, and any Node ABI information in the verification record. | ||
|
|
||
| Use session ID `claude-desktop-mcpb-20260730-001`, capture `Verify Relay Linux MCPB persistence`, retrieve that exact session, then explicitly direct `task_triage` to move the captured task to `ACTIVE`. Confirm the same task and session remain available after restart and an incremented local bundle update. | ||
|
|
||
| ## Data safety and troubleshooting | ||
|
|
||
| Relay durable data stays in its normal Linux location or the explicit `RELAY_DB_PATH`; it must never be placed in Claude's unpacked extension directory. Disabling or removing the extension does not delete the Relay database. | ||
|
|
||
| Use Claude Desktop's extension controls to disable or remove the extension only. Do not delete the database. After removal, run the built Relay CLI with the recorded absolute `RELAY_DB_PATH` and task ID to verify that the retained task remains `ACTIVE`. | ||
|
|
||
| Inspect Claude extension logs for startup diagnostics. If Claude's hosted Node runtime does not meet Relay's `>=24 <25` requirement, or `better-sqlite3` cannot load for its Node ABI and Linux libc, stop and record the failure. Do not claim compatibility or lower the Node requirement without review. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| { | ||
| "manifest_version": "0.3", | ||
| "name": "relay", | ||
| "display_name": "Relay", | ||
| "version": "0.1.0", | ||
| "description": "Local task sidecar for human-AI workflows", | ||
| "long_description": "Relay gives Claude Desktop access to a local personal task queue through its canonical stdio server. Data stays in the user's normal Relay SQLite location unless RELAY_DB_PATH is explicitly configured.", | ||
| "author": { "name": "Krishnamurti" }, | ||
| "repository": { "type": "git", "url": "https://github.com/krishna916/relay.git" }, | ||
| "documentation": "https://github.com/krishna916/relay/blob/main/integrations/claude-desktop/README.md", | ||
| "support": "https://github.com/krishna916/relay/issues", | ||
| "server": { | ||
| "type": "node", | ||
| "entry_point": "server/main.js", | ||
| "mcp_config": { | ||
| "command": "node", | ||
| "args": ["${__dirname}/server/main.js"], | ||
| "env": {} | ||
| } | ||
| }, | ||
| "tools_generated": true, | ||
| "keywords": ["tasks", "productivity", "local-first", "mcp"], | ||
| "compatibility": { | ||
| "platforms": ["linux"], | ||
| "runtimes": { "node": ">=24 <25" } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| { | ||
| "name": "relay", | ||
| "version": "0.1.0", | ||
| "description": "Runtime package for Relay's local bundle", | ||
| "private": true, | ||
| "type": "module", | ||
| "engines": { | ||
| "node": ">=24 <25" | ||
| }, | ||
| "dependencies": { | ||
| "@modelcontextprotocol/sdk": "1.29.0", | ||
| "better-sqlite3": "13.0.1", | ||
| "zod": "4.4.3" | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Use a shipped mutation tool in the verification procedure.
README.mdlists five task tools andrelay_health, but it does not listtask_triage. The documented mutation step cannot run against this bundle. Replacetask_triagewith the actual shipped mutation tool from the MCP contract, or remove this step and document the supported explicit mutation.🤖 Prompt for AI Agents