1. Conduid
  2. Blockchain
  3. Maple
MCP server · Blockchain

Maple

Open-source visual UX review comments on deployed previews, with a CI merge gate and an agent loop

Unclaimed Apache-2.0 devtools
39Low

Scored 4 days ago · breakdown

About Maple

Maple is an MCP server published by maple-kit in the Blockchain category: open-source visual UX review comments on deployed previews, with a CI merge gate and an agent loop.

The repository has 21 stars and 3 forks, with the last commit 3 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

Claude Code
claude mcp add maple-825a -- npx -y @maple-kit/mcp
npx
npx -y @maple-kit/mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Maple

Powered by Claude · Grounded in docs

I know everything about Maple. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 2 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • !No dynamic code executionSource scan found eval or shell execution. Review how tool inputs reach it before granting credentials.

1 check has not been run yet.

Releases

@maple-kit/ui@0.23.0@maple-kit/ui@0.23.0 · 14 Oct 2026Minor Changes c1b07d1: `/mock/plan` no longer answers 400 for a page with many or odd flags. It drops a flag it cannot plan on its own, keeps the `MockPlanOptions.flags.limit` (default 100) most relevant to the sentence, and answers the…
@maple-kit/react@0.23.0@maple-kit/react@0.23.0 · 14 Oct 2026Patch Changes Updated dependencies [074a57b] Updated dependencies [c1b07d1] Updated dependencies [a7aff9a] Updated dependencies [a68fdf9] @maple-kit/mock@0.23.0 @maple-kit/core@0.23.0
@maple-kit/mock@0.23.0@maple-kit/mock@0.23.0 · 14 Oct 2026Minor Changes 074a57b: The flags list shows only the flags the page read. `@maple-kit/mock/launchdarkly` exports `launchDarklyUsage()`, a LaunchDarkly `flag-used` inspector (and `launchDarklyUsageHook()` for `hooks`), to pass as `options:…
@maple-kit/ui@0.22.0@maple-kit/ui@0.22.0 · 14 Oct 2026Minor Changes b47e689: Breaking: off a Mac, a bare Alt tap starts a comment, not a Ctrl tap, and Shift+Alt closes Maple, not Shift+Ctrl. Screen reader users tap Ctrl to silence speech, and each tap started a comment. `TapModifier` is now…
@maple-kit/react@0.22.0@maple-kit/react@0.22.0 · 14 Oct 2026Patch Changes Updated dependencies [b47e689] Updated dependencies [3d10af4] Updated dependencies [217ebcf] Updated dependencies [925d52e] Updated dependencies [fc2da1a] Updated dependencies [9f874c1] Updated dependencies [7c1e8c9] Updated…

README

A reviewer points at something on a preview deployment and says what is wrong. Maple captures where they pointed, what they were looking at and who they are, hands it to a coding agent in a form it can act on, and holds the merge until every comment is resolved.

Status: 0.x. All eight packages are published, with provenance, through a trusted publisher. 0.x makes no compatibility promise: a public interface is broken when breaking it is the right shape, and the changeset says what broke.

How it works

  1. Mount: One route in your application, and one script in the preview build.
  2. Comment: A reviewer points to an issue on the app. Maple records all the context needed for the agent to pick it up.
  3. Fix: Your agent monitors new comments via the MCP, implements a fix and marks it as resolved.
  4. Gate: A CI check holds the merge until all comments are resolved, and all visual gates pass.

Code got fast. Planning, definitions of done and edge cases did not, so they get skipped and surface in testing. Maple moves that review to the preview, where the comment can still be acted on.

What it does

Each package's README shows the rest: the CLI, the design lint, flags and roles in a mock and the connectors.

Why another one

Pincushion, Vercel Toolbar, Chromatic, BugHerd and Marker.io each do some of this. None combines all four of:

  • Open source, Apache-2.0, with no hosted service required.
  • Deployed previews. Maple runs on the preview URL your CI already builds, so anyone with the link can comment — a designer, a product manager, a client. Tools like Agentation run against localhost, which means the only person who can leave a comment is the person running the build.
  • A merge gate — CI blocks while a visual comment is unresolved, and optionally until somebody says they looked. See docs/gate.md.
  • An agent loop — the agent reads comments, fixes, and resolves them.

Pick a setup

The SDK route has no default store: without one, its comment endpoints answer 404. Smallest setup first:

Add it to an app

The quickest wiring, for trying Maple on your own machine. Sharing a preview needs a store per reviewer: see Pick a setup.

npm install @maple-kit/core @maple-kit/ui @babel/core

@babel/core is an optional peer, and the tagger is what needs it: leave it out and tagger: true has nothing to transform with.

Mount the route and the tagger from the build, then render the overlay:

// vite.config.ts
import { createCommentStore } from "@maple-kit/core";
import { githubStore } from "@maple-kit/core/connectors";
import { maple } from "@maple-kit/core/vite";

const preview = process.env.MAPLE_PREVIEW === "1";

export default defineConfig({
  plugins: [
    react(),
    maple({
      tagger: preview,
      route: {
        // Local trial only: every comment is written as this one token.
        // The route has no default store; without one its comment endpoints 404.
        store: createCommentStore(
          githubStore({ owner: "acme", repo: "web", token: process.env.GITHUB_TOKEN! }),
        ),
      },
    }),
  ],
});
// main.tsx
import { Maple } from "@maple-kit/ui/maple";

createRoot(root).render(
  <>
    <App />
    <Maple branch={import.meta.env.VITE_MAPLE_BRANCH} />
  </>,
);

The shared GITHUB_TOKEN is for a local trial only. A preview other people review builds the store per request from each reviewer's own token, through the resolver in docs/github-auth.md, so a comment is authored by whoever wrote it and no GitHub secret sits in the preview.

Next.js uses withMaple from @maple-kit/core/next and a catch-all route at app/api/maple/[...maple]/route.ts; examples/next-app has both. The setup-maple-org skill walks through the GitHub App a reviewer signs in with.

Use with Claude Code

The Maple plugin bundles the skills that set Maple up and act on its comments, the MCP server that reads and resolves them, and the Stop hook that keeps an agent working while they are open:

/plugin marketplace add maple-kit/maple
/plugin install maple@maple-kit

The server and the hook read GITHUB_TOKEN, MAPLE_GITHUB_OWNER and MAPLE_GITHUB_REPO from the environment Claude Code starts in. In a project where the last two are unset, the hook lets every stop through.

To install only the skills, for Claude Code or any other agent the skills CLI supports, run npx skills add maple-kit/maple.

Vendor-agnostic by construction

Maple stores nothing itself. A connector is one file implementing plain Promise-returning methods:

import type { StoreConnector } from "@maple-kit/core/connectors";

export function myStore(options: MyOptions): StoreConnector {
  return {
    name: "my-store",
    async list(query) {
      /* … */
    },
    async append(comment) {
      /* … */
    },
  };
}

There are six kinds — store, media, observability, identity, gate and classifier — and a connector's capabilities are exactly the methods it defines. Run maple connectors to print the matrix from the code, or see docs/connectors.md.

Packages

Package What it is
@maple-kit/core Server SDK, overlay controller, connector contracts, build plugins.
@maple-kit/ui The marks, the island and the composer: the overlay a reviewer uses.
@maple-kit/react Hooks over the controller, for an overlay in your own design system.
@maple-kit/mcp The MCP server an agent talks to, and a Stop hook.
@maple-kit/cli The maple command.
@maple-kit/mock Rewrites a page's API responses, flags and role into a named state.
@maple-kit/classifier Scores a comment as it is written, and plans a mock from a sentence.
@maple-kit/lint Design-system rules read off the page the browser laid out.

Documentation

  • The merge gate: what blocks a merge, what approving does, which App to pin

Security

Report a vulnerability privately, as SECURITY.md describes. To run Maple in an organisation, read docs/security.md: who trusts what, which secrets exist where, and a checklist to work through before a preview is shared.

See it running

The project site is maple-kit.org. To run the Vite example yourself:

nvm use
pnpm install
pnpm --filter @maple-kit/example-vite dev   # http://localhost:5173

A real Vite application with three comments already on it: marks on the page, the island in the corner, and all three picks working against an SDK route the dev server mounts. examples/vite-app says what it does and does not prove.

Development

nvm use          # or fnm use, mise install — .nvmrc pins the version
pnpm install
pnpm hooks
pnpm lint && pnpm typecheck && pnpm test

Requires Node 24, the active LTS, and pnpm 10. Switch before the install: pnpm 10 and 11 load node:sqlite, which Node 23 does not have, so on the wrong version pnpm crashes rather than telling you the version is wrong. See CONTRIBUTING.md.

Licence

Apache-2.0. Contributions are accepted under the Developer Certificate of Origin — sign off with git commit -s. There is no CLA.

README fetched from the repository 2 days ago. The original is authoritative.

Questions

About Maple

How do I install Maple?

Run claude mcp add maple-825a -- npx -y @maple-kit/mcp, then add the server to your MCP client's configuration.

Is Maple safe to use with an AI agent?

Its trust score is 39 out of 100 (low). It passes 4 of the 5 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Maple still maintained?

Yes — the latest release is @maple-kit/ui@0.23.0 (14 Oct 2026), and the last commit was 3 days ago. The repository has 21 stars and 83 open issues.