ideate MCP Server
Enables AI-augmented software delivery through an append-only process record, with hooks for capturing decisions, session outcomes, and commit boundaries, and provides session priming with recency-based context.
README
@ideate/plugin
The public, composable surface of ideate — a Claude Code plugin for AI-augmented software delivery.
ideate decomposes into three functions: a process record (the durable, auditable trail of what was decided and done — append-only, project-local, never curated or ranked by ideate itself), a knowledge graph (memory and retrieval over that trail — developed as a separate project, not part of this plugin), and a delegation board (how work is handed to and coordinated across agents — a future sibling capability, not part of this plugin today). ideate is deliberately non-prescriptive about workflow: it supplies primitives that fire mechanically, not a process you are told to follow, and it never blocks, redirects, or opines on what you do.
What this plugin provides today
This package ships the Layer-0 floor: the append-only process record and the mechanical capture/priming wiring around it. Nothing here is optional workflow — every piece below fires without requiring an agent to remember to call it.
- An append-only process record. Every entry — a decision, a finding, a session outcome, a subagent outcome, a commit boundary, a task completion — is appended, never updated or deleted; a correction is a new record that references the superseded one. Every write passes a capture-time secret-scanning gate before anything touches disk.
- Capture hooks.
SessionEnd,PreCompact,SubagentStop,TaskCompleted, andPostToolUse(ongit commit) are wired inhooks/hooks.jsonso records are captured mechanically as you work, with zero required tool calls. Every ideate hook is non-blocking: it exits 0, writes side effects andadditionalContextonly, and never blocks, denies, or halts anything the host is doing. - Session priming. At session start, and on subagent start, a bounded, unranked digest of the most recent process records is surfaced as additional context — recency- and scope-selected only, never scored or curated, and explicitly framed as quoted historical data rather than instructions.
- Telemetry. Native counters for capture, priming, and failure events,
inspectable with the
ideate-telemetryCLI.
Install
There are two ways to wire this plugin into a Claude Code project. Both land
on the same dist/server.js MCP server and hooks/hooks.json — the
manifests below are just two different ways of pointing Claude Code at them.
This section documents the contracts (what each mechanism provides); it does
not prescribe which one to use or what workflow to run once installed.
(a) Marketplace install
This repo ships .claude-plugin/marketplace.json, a Claude Code
plugin-marketplace manifest listing this plugin (name: ideate, source: "./" — the repo root). From within Claude Code:
/plugin marketplace add ideate-ai/ideate
/plugin install ideate
This is the manifest-driven path — Claude Code resolves the plugin and
wires .mcp.json / hooks/hooks.json for you. Known limitation (honest
status): this repo deliberately does not commit built output (dist/ is
git-ignored), and a plugin install performs no build step — so the MCP
server and CLIs are NOT functional straight from a marketplace install
today. Until a distribution mechanism for built output exists (tracked as
an open question in the project record), use the manual path below, which
is the tested, supported route.
(b) Manual wiring
For a project that wants to point at this plugin directly rather than through the marketplace resolver:
-
Build the package:
pnpm install && pnpm run build(compilessrc/todist/; required before the MCP server or CLIs will run —dist/is not checked in). -
Add an MCP server entry to the consuming project's
.mcp.jsonpointing at the built server, e.g.:{ "mcpServers": { "ideate": { "command": "node", "args": ["<path-to-this-plugin>/dist/server.js"] } } }This registers the three MCP verbs (
record_append,record_read,record_decision) described below. -
Wire the mechanical capture hooks by pointing the consuming project's host at this plugin's
hooks/hooks.json. That file declares the actual hook shape this plugin provides —SessionStart(priming viabin/ideate-record prime),SubagentStart/SubagentStop,SessionEnd(bin/ideate-record session-end),PreCompact, andPostToolUseongit commit— each entry acommandhook invoking either${CLAUDE_PLUGIN_ROOT}/bin/ideate-recordor one of thehooks/*.mjsscripts. How a consuming project performs that wiring (copying the file, referencing it, or another host-specific mechanism) is outside this plugin's contract — only the shape ofhooks/hooks.jsonitself is.
Build / test (contributor path)
Prerequisites: Node >= 22 and a pnpm-compatible install.
pnpm install
pnpm run build # compiles src/ to dist/ — required before the MCP server
# or the CLIs will run; dist/ is not checked in
pnpm test # vitest, fork pool capped at 4 (see vitest.config.ts)
pnpm run test:fresh-copy runs scripts/fresh-copy-check.mjs, which copies
this directory to a scratch location with no surrounding project context and
re-runs install/build/test there — the mechanical proof that this package
stands alone.
The process-record surface
The record core has exactly two transports over one implementation: three MCP tools, and a CLI. Both write through the same gated append-only store, so a record captured via one transport is indistinguishable from one captured via the other.
MCP verbs (registered by the ideate MCP server, dist/server.js):
record_append(kind, claim, verification_anchor?, scope?, content, task_id?)— append one process record. Open-vocabularykind(e.g.finding,session-outcome,commit-boundary, …).record_read(scope?, limit?)— read records newest-first, optionally filtered by a plain substring match against scope/kind/source. Unranked: selection only, no scoring.record_decision(claim, rationale?, verification_anchor?, scope?, task_id?)— sugar forrecord_append(kind="decision", ...); the ADR entry point. The decision write is its capture — there is no separate decision store.
ideate-record CLI (bin/ideate-record, the same gated core as a
standalone executable — this is what the capture hooks invoke):
ideate-record append --kind <k> --claim <c> [--anchor <a>] [--scope <s>] [--content <text>|-] [--task <id>]— append one record directly; exits 1 on failure.ideate-record read [--scope <substring>] [--limit <n>] [--json]— print records newest-first; exits 1 on failure.ideate-record session-end— reads aSessionEndhook payload from stdin and appends a recall-shaped session-outcome record. Hook path: always exits 0 (a capture failure must never look like a hook failure to the host).ideate-record prime [--scope <substring>] [--budget <n>]— print a compact, unranked digest of the most recent records for hookadditionalContext. Hook path: always exits 0.
Honest status
- Available now: the append-only process record, the five mechanical
capture points (
SessionEnd,PreCompact,SubagentStop,TaskCompleted,PostToolUseongit commit), session/subagent priming, the capture-time secret-scanning gate, and native telemetry counters. - Not yet built: the delegation board (work-state coordination across agents). This is a future sibling capability; nothing in this plugin depends on it.
- Eval-gated, not yet built: any feature whose value is an
intelligence-adjacent claim is withheld until the evaluation harness
(
@ideate/harness, private, not part of this package) demonstrates it, per gates G1–G7 of the project's eval design. This includes: planning-time gap identification (/ideate:gap-checkand its advisory hook — designed, not built, gated on G4), and per-prompt priming (technically wireable, but deferred — its token-cost tradeoff is exactly the kind of default the harness must license first, gated on G1/G2). None of this plugin's shipped behavior depends on either. - This package is
"private": trueinpackage.jsonand stays that way until publishing this plugin to npm is separately ratified.
License
AGPL-3.0-only — see LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。