Server vs Kawa Code MCP
A side-by-side look at the Server and Kawa Code MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Server for coding agents work as a local process; choose Kawa Code MCP for coding agents as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Server when
- You need dedicated capabilities in the Coding Agents domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: No auth required.
- You want tools like
aide_discover, aide_read, aide_scaffold.
Choose Kawa Code MCP when
- You need dedicated capabilities in the Coding Agents domain.
- You prefer a local stdio subprocess transport.
- You want tools like
get_relevant_context, check_active_intent, create_and_activate_intent.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Coding Agents | Coding Agents |
| Quality signal | 64/100 · Good | 61/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 4 | 0 |
| Directory activity | 2 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 9 | 20 |
| Full listing | View Server | View Kawa Code MCP |
Tools & capabilities
Server tools 9
aide_discoverScan for .aide spec files in this project. Returns a tree map of where specs live, following progressive disclosure. Without a path: returns a lightweight project-wide map — file locations and types only, no content. Use this once to understand the project's spec architecture. With a path: the response opens with the ancestor chain — the cascading intent lineage from project root down to the target directory, with each ancestor showing its description and alignment status (aligned/misaligned when set). The ancestor chain gives you the full inherited context before you read a single spec body. After the ancestor chain comes the detailed subtree of the target directory — summaries extracted from file content and anomaly warnings. Use this to drill into the area you're working on. .aide files are progressive disclosure specs that live next to orchestrator code — they contain intent (strategy, implementation contracts, anti-patterns), research (sources, data, patterns), or QA checklists (todo). Read .aide files BEFORE reading code — they are the context layer between folder structure and implementation details. File types (.aide, intent.aide, research.aide, plan.aide, todo.aide): - .aide — Intent spec (default). Strategy, contracts, anti-patterns. - intent.aide — Same as .aide, used only when research.aide exists in the same folder. - research.aide — Raw research. Sources, data points, pattern synthesis. - plan.aide -- Architect's implementation plan. Checkboxed steps for the implementor. - todo.aide — QA re-alignment document. Captures where implementation drifted from intent. Never have both .aide and intent.aide in the same folder.aide_readRead an .aide spec file with full context. Returns the file content, its classified type (intent/research/plan/todo), related specs in the same directory, and links found in the content (relative paths, inline references, URLs). Use this after aide_discover to drill into a specific spec.aide_scaffoldCreate new .aide spec files with automatic naming convention enforcement. Handles the naming rules: intent specs are .aide by default, but become intent.aide when research.aide exists in the same folder. Creating a research.aide auto-renames any existing .aide to intent.aide. Types: - intent — Strategy, contracts, anti-patterns - research — Sources, data, patterns (triggers rename of existing .aide) - both — Creates research.aide + intent.aide pair - todo — QA re-alignment document for QA agents - plan -- Architect's implementation plan (no naming interaction with intent/research)aide_validateHealth check for .aide spec files in the project. Detects orphaned specs (in folders with no orchestrator), missing specs (orchestrators with 3+ helper imports but no .aide), naming conflicts (.aide + intent.aide in same folder), broken links, orphaned research (research.aide without intent spec), and missing descriptions (specs with no description field in frontmatter).aide_upgradeCompare the AIDE methodology artifacts in this project against the canonical versions and return structured JSON results grouped by category. Use this when the user asks to update AIDE, sync AIDE, refresh AIDE, check for AIDE updates, or bring AIDE up to date. This is NOT for editing user .aide specs — it inspects methodology infrastructure only. The tool uses a two-call pattern for progressive disclosure: **First call (no `category` param):** Returns a lightweight summary — every category with file names, statuses, and counts, but NO file content. Use this to understand what has drifted and present a summary to the user. Ask which categories they want to apply. **Second call (with `category` param):** The tool writes all differs/missing files directly to disk itself and returns a manifest — file results with `filePath`, `status` (`"updated"`, `"created"`, or `"unchanged"`), and `name`, but NO `canonicalContent`. The agent never sees file content and never uses the Write tool for methodology files. Repeat the second call for each category the user confirms. As the calling agent, you must: 1. Call without `category` first to get the summary 2. Present each drifted category (differs/missing) and ask the user which to apply 3. For each confirmed category, call again with `category=X` — the tool writes the files and returns a manifest. Report what was updated/created to the user. 4. For the `mcp` category, the manifest still includes `prescription` data — merge the entry into the existing MCP config yourself (read → merge → write). If `malformed`, tell the user — do not overwrite. 5. For `ide`, the manifest may include `instructions` for VS Code extension install — execute that command for the user. Zed config is written directly by the tool. 6. For `brain`, `category=brain` never writes; the manifest entry carries an `instructions` field directing the agent to invoke `/aide:brain config`, which is the single canonical home for brain.aide creation. **IMPORTANT — one-at-a-time wizard pattern using AskUserQuestion:** Do NOT present all categories at once. Walk the user through ONE category at a time using AskUserQuestion with Yes/Skip options. Stop after each question and wait for confirmation before calling with that category. Categories: pointer-stub, methodology-docs, version-metadata, commands, agents, skills, mcp, ide, readme, brain. Upgrade surface (user code and user .aide specs are never touched): - AIDE pointer stub in the agent config file - Canonical methodology docs under .aide/docs/ - versions.json metadata under .aide/docs/ - Slash commands for all pipeline phases - Pipeline agent files, skill templates - MCP server entry in the project's MCP config - IDE file association config (Zed settings, VS Code extension) Supports Claude Code, Cursor, Windsurf, and Copilot. Auto-detects the framework or accepts an override.aide_infoBoot-time reporter called by the orchestrator at startup. Returns two independent top-level fields that the orchestrator must branch on separately: **`outdated` (array of stale artifact keys) — soft notification.** Compares the host's `.aide/versions.json` against the canonical manifest shipped with this npm package. Each element names an artifact key that is behind. An empty array means everything is current. A missing `.aide/versions.json` (old install predating version tracking) silently collapses to `[]`. Staleness is informational — the orchestrator continues with a heads-up to the user. **`brain` (precondition state) — hard gate.** Reports whether the host's brain MCP entry is wired and consistent. Shape: `{ status, name?, hints }`. The orchestrator must halt and direct the user to resolve the issue before continuing if `status` is not `'ok'`. No path validation is performed — the package never stats any directory on disk; state derives entirely from comparing `.aide/config/brain.aide` against `.mcp.json`. The four `brain.status` values: - `ok` — `.aide/config/brain.aide` exists and the host's `.mcp.json` `brain` entry matches the parsed `mcpServerConfig`. `name` is the user-declared descriptive label from brain.aide. The pipeline may proceed. - `no-brain-aide` — `.aide/config/brain.aide` is missing or unparseable. No `name` field. Remediation: run `/aide` and complete the brain wiring interview. - `no-mcp-entry` — brain.aide parsed successfully but the host's `.mcp.json` is absent, malformed, or has no `mcpServers.brain` key. `name` is present. Remediation: run `npx @aidemd-mcp/server@latest sync`. - `mcp-drift` — brain.aide and `.mcp.json` both exist but their `brain` entries disagree on `command` or `args`. `name` is present. Remediation: run `npx @aidemd-mcp/server@latest sync`. `hints` is always present on every status — an array of candidate brain root paths the orchestrator can surface during recovery. No parameters needed — uses the server's working directory.aide_brainOn-demand brain entry-point tool. Call this when you need to reach the brain mid-task — do NOT call it on every /aide boot. Boot-time brain precondition state is already reported by aide_info.brain.status; firing aide_brain at boot duplicates that work unnecessarily. **Optional `kind` parameter** — closed two-value vocabulary: `"orientation"` (default) or `"config"`. - `"orientation"` — returns the orientation section: a runtime briefing delivered when an agent reaches for the brain mid-task. Omitting `kind` is equivalent to passing `"orientation"`. - `"config"` — returns the integration-specific wiring flow, used by `/aide:brain config` to walk through brain setup. Install-time seed sections (`playbookIndex`, `studyPlaybook`, `updatePlaybook`, `researchIndex`) are NOT surfaced via this tool — agents reach those via the brain's read tool against the on-disk seed files. **Response shape: `{ status, instructions }` — exactly two fields. No `backend`, no `connector`, no `name`, no `kind`.** `status` — mirrors the `BrainState` tagged union from `buildBrainState`. The four-state vocabulary: `ok`, `no-brain-aide`, `no-mcp-entry`, `mcp-drift`. Branch on `status` alone — no other discriminant is present. `instructions` — always non-empty on every branch. Act on this field directly: - On `ok`: the verbatim bytes of the selected section from the host's `.aide/config/brain.aide`, byte-identical to what the user wrote between that section's markers. No trimming, no normalization, no `${...}` substitution. The selected section takes over from here — the tool has no further role. - On `no-brain-aide`: fixed remediation prose directing the user to run `npx @aidemd-mcp/server@latest init`. Do not proceed as if the brain were available. - On `no-mcp-entry`: fixed remediation prose directing the user to run `npx @aidemd-mcp/server@latest sync` and restart Claude Code. Do not proceed as if the brain were available. - On `mcp-drift`: fixed remediation prose directing the user to run `npx @aidemd-mcp/server@latest sync` and restart Claude Code, explicitly forbidding the agent from patching `.mcp.json` itself. Non-ok remediation prose is identical regardless of `kind` — the file is broken for both sections in the same way.aide_initBootstrap the AIDE development environment into a project. Returns structured JSON for agent consumption — not prose. The tool uses a two-call pattern for progressive disclosure: **First call (no `category` param):** Returns a lightweight summary — every step with `name`, `status` (would-create/would-overwrite/would-skip/exists), `category`, and `filePath`, but NO `content` fields. Also returns `brainHints` (brain root candidates) and detected `framework`. Use this to understand what needs to be done and which categories require user prompts. **Second call (with `category` param):** The tool writes all `would-create` AND approved `would-overwrite` files directly to disk itself and returns a manifest — steps with `filePath`, `status` (`created`, `overwritten`, or `exists`), and `name`, but NO `content`. `would-skip` steps stay `would-skip` in the manifest (tool writes nothing for them). The agent never sees file content and never uses the Write tool for new files. **Exception — MCP steps:** For MCP steps, the manifest includes `prescription` data (key name and entry object) so the agent can read the existing config, merge, and write. The tool never touches MCP config directly. **Exception — brain category:** When calling with `category=brain`, also pass `brainPath` with the user-confirmed brain root path. The tool creates the brain root scaffold directories directly. **Exception — IDE VS Code steps:** IDE steps that need external tooling (VS Code CLI) return instructions for the agent to execute, since those aren't simple file writes. **Agent branch logic — silent-on-create, prompt-on-overwrite:** After the first call, walk the categories using this rule: - **Pure-create category** (all steps are `would-create`, `would-skip`, or `exists`): apply silently by calling with `category=X` immediately — no AskUserQuestion. A category with nothing on disk to overwrite has no decision the user can inform. - **Overwrite-bearing category** (any step is `would-overwrite`): pause and use AskUserQuestion with structured options. Name the files that would be overwritten. If the user approves, call with `category=X` — the tool overwrites and returns `overwritten` in the manifest. If the user declines an overwrite but wants the new files, call with `category=X` — the tool writes only `would-create` steps; the `would-overwrite` step stays `would-overwrite` in the manifest. - **Inherent-decision categories** (framework, brain root path, MCP config merge, IDE choice): always use AskUserQuestion regardless of disk state. These are not file-write decisions — filesystem contents cannot resolve them. **IMPORTANT — one-at-a-time wizard pattern using AskUserQuestion:** Do NOT present a summary table of all categories. Do NOT offer "all" as an option. Do NOT ask conversational questions — use the `AskUserQuestion` tool with structured options at every pause point. 1. Call without `category` first to get the metadata 2. Present ONLY the detected framework — use AskUserQuestion with Yes/{alternatives} options. STOP. 3. Walk categories in order: methodology, commands, agents, skills, mcp, brain, ide, readme. For each: - Pure-create: apply silently (call with `category=X`), report results, move to next. - Overwrite-bearing: use AskUserQuestion naming the would-overwrite files. STOP. Wait for selection, then call with `category=X`. Report manifest (created N, overwrote M). Move to next. - Inherent decision: always use AskUserQuestion. STOP. 4. For brain: use AskUserQuestion with brainHints as labeled options (user can pick Other for custom path). STOP. Then call with `category=brain` and `brainPath`. 5. For MCP: use AskUserQuestion with Merge/Skip options. Merge the `prescription` entry into the existing config yourself (read → merge → write). STOP. 6. For IDE: use AskUserQuestion with multiSelect for Zed/VS Code/Neither. STOP. Each pause point is ONE AskUserQuestion → wait for selection → then proceed. Never show multiple categories at once. Never ask open-ended conversational questions.aide_inspectReturn JSDoc, signature, and kind for a named symbol without opening the full file — Tier 2 progressive disclosure for code. When an agent knows a function name from an import list or orchestrator file, call inspect to learn what the symbol does, what it accepts, and what it returns, based on its contract alone. Searches across TypeScript and JavaScript source files (ts, tsx, js, jsx, mjs, cjs). Use the optional `file` parameter to narrow the search to a single file when the location is already known.
Kawa Code MCP tools 20
get_relevant_contextFind past intents and decisions relevant to the current user request. When to use: - After you have done a quick initial exploration of the user's request and know which files are involved. Calling earlier with only a vague prompt gives weak results. - To pull task-specific context instead of dumping all recent activity — preferred for large projects. Inputs of note: - `prompt`: the user request, in their words or your paraphrase. - `activeFiles` (recommended): files you have identified as relevant to the request. Significantly improves relevance. - `maxIntents`, `maxDecisions`, `minRelevance`: result-shaping caps and threshold. Returns: - `relevantIntents`: past work units (intents) related to the task, scored by relevance. - `relevantDecisions`: prior decisions related to the task — both intent-scoped and repo-scoped. Summary-only (no inline rationale, to keep context lean); call `get_decision_detail(decisionId)` for the full rationale/context/consequences of any decision you want to open. Recommended sequence: 1. `check_active_intent` at session start to resume any existing work. 2. Briefly explore the user's request to identify involved files. 3. `get_relevant_context` with the prompt and `activeFiles` to inform the approach.check_active_intentREQUIRED before writing any code. Returns this session's current intent; if there is none, confirm the details with the user and call create_and_activate_intent. Intents are active PER SESSION — many can be active on one repo at once. hasActiveIntent reflects only YOUR session, while activeIntents lists every session's current intent (yours and teammates') and may be non-empty when you have none. A stale intent stays "active"; terminal states are committed / pushed / done / abandoned / superseded.create_and_activate_intentCreate a new intent from the user's request and mark it as active for THIS session. Call this when check_active_intent returns no active intent for your session. Before calling: 1. Summarize what the user is asking for 2. Ask the user to confirm the intent details (title, description, type) 3. Then call this tool with the confirmed details This ensures all AI-generated code gets properly tracked and attributed. Multi-active model: many intents can be active on a repo at once (one per session/teammate). Creating + activating one only sets YOUR session's current focus — it never blocks or displaces another session's active intent, so there is no lock conflict to resolve. If the tool returns conflicts (action="conflict"), it found an existing team-member intent that overlaps semantically or in files. Present the conflict details to the user and ask whether to proceed. If yes, retry with force=true to bypass conflict detection.activate_intentActivate an existing intent by ID — sets it as THIS session's current focus. Use this to: - Switch your current focus to a different intent found via list_team_intents or get_relevant_context - Re-activate an intent that was deactivated (e.g., to complete it) - Resume work on a previously created intent - Resume an "abandoned" intent (see below) Accepts both cloud IDs (from get_relevant_context / API) and local UUIDs (from list_team_intents). Multi-active model: activating an intent only moves YOUR session's current pointer. Many intents can be active on a repo at once (one current per session/teammate), so this never blocks on or displaces another session's active intent — there is no lock to take over. Resuming abandoned intents: - Abandoned intents have their decisions soft-deleted (invisible to recall and get_relevant_context). Activating one transparently restores them — single-intent decisions for this intent get their soft-delete cleared so the prior reasoning becomes visible again. Multi-intent decisions stay visible throughout (they were never soft-deleted).resume_intentResume an existing intent by ID in one call — activate it AND load its recorded decisions. Use this to pick up a handoff. When a prompt says "follow up on intent <id>" (or you otherwise want to continue a specific existing intent), call resume_intent(<id>) instead of creating a new one. It: - activates the intent as THIS session's current focus (multi-active — never displaces a teammate's active intent), and - returns the intent's title/description/status plus its recorded decisions (summary-only; call get_decision_detail(id) for full rationale on any one). This is the fast path for cross-developer handoff without a session or transcript export: the reasoning lives in Kawa Code, so a teammate resumes the thread from just the intent id. For the code itself, the intent's owner should have committed or pushed first (a prompt carries reasoning, not an uncommitted working tree). Returns { resumed, intentId, intent?, decisions[], count, message }. resumed=false with a message when the id can't be activated.get_intents_for_fileIntents with code blocks in a file, so you can see in-progress work and team conflicts before editing. Pass startLine + endLine to narrow to a range; the result then reports the exact overlap and warns when it hits a teammate's active intent.list_team_intentsList intents from team members for this repository. Use this to: - See what your team is working on - Check for potential overlapping work before starting a new task - Review the status of various features/refactors in progress Filtering (status, author, date range) and pagination are applied server-side across the full result set (default: 50 per page; use limit/offset to page). `count` is the total number of matching intents, not just the returned page.complete_intentMark the active intent completed and clear it. Call after a successful git commit, passing commitSha so code blocks are captured. status: committed (default, local commit) | pushed | done | abandoned. You MUST inspect the response: - success === true — done. If committedDecisionCount > 0, say N decisions were recorded; do NOT list them. If apiSyncDeferred, say the sync was deferred and will replay. If collisions is non-empty, relay it as an advisory coordination heads-up (collisions[].label + files) — the completion still succeeded. If deferredConflicts is non-empty, the completion ALSO succeeded; say "N decision(s) need a disposition in the Kawa Code panel" and do NOT re-run this tool. - success === false && reason === "transient-failure" — the intent stays active and nothing was lost. Report failedStage plus the error; retry once the cause clears, or abandon if it persists. Autonomous sessions: deferredConflicts is not a blocking state — log and continue.update_intentUpdate an active intent's title, description, scope, or constraints. Use this to reformulate an intent as understanding evolves during work. Intents are living documents — they should be updated to reflect what the work actually became, not left as the initial guess. Common triggers for reformulation: - The real problem turned out to be different from the initial hypothesis - Scope expanded or narrowed during investigation - The approach changed after discovering constraints If no intentId is provided, the currently active intent is updated.log_workDEPRECATED — trivial changes (typos, one-line fixes, obvious bugs, doc updates, config changes) should skip the intent workflow entirely: just make the change and commit, no intent needed. Do not call this tool. Kept available for backwards compatibility only and will be removed in a future release.record_decisionSilently record a decision point during development. Call this tool when you: - Choose between multiple alternatives (type: fork) - Try an approach that fails or is rejected (type: abandoned) - Find unexpected behavior or limitations (type: discovery) - Identify a hard constraint that must be respected (type: constraint) - Make an explicit trade-off between competing concerns (type: tradeoff) - Select an external library or dependency (type: dependency) Decisions can be **intent-scoped** (tied to a specific work unit) or **repo-scoped** (general knowledge like discoveries and constraints). Omit intentId for repo-scoped decisions. Decisions are accumulated silently during the session and presented for review before commit. This creates a "reasoning changelog" that captures not just what was done, but why. IMPORTANT: Include constraintViolations when alternatives are rejected due to architectural constraints.get_session_decisionsGet all decisions recorded in the current session for an intent. Use this before committing to review what decisions were captured during development. Decisions are presented for user review and can be edited or removed before being persisted. Returns: - intentId: The intent these decisions belong to - decisions: Array of decision points (summary-only — call get_decision_detail(decisionId) for full rationale/context/consequences/alternatives) - count: Number of decisions recorded- +8 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Server
{
"mcpServers": {
"aidemd-mcp-server": {
"command": "npx",
"args": [
"-y",
"@aidemd-mcp/server@latest"
]
}
}
}
Kawa Code MCP
{
"mcpServers": {
"kawa-code-mcp": {
"command": "npx",
"args": [
"-y",
"@kawacode/mcp"
]
}
}
}
Frequently asked questions
Server is categorized under Coding Agents and uses a local stdio subprocess. Kawa Code MCP belongs to Coding Agents and uses a local stdio subprocess. Pick Server for coding agents work and Kawa Code MCP for coding agents.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Server is listed as free. Auth: no auth required. Kawa Code MCP has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add aidemd-mcp-server and kawa-code-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Server has a quality signal of 64/100 (Good) with 2 views, 0 installs and 4 GitHub stars. Kawa Code MCP has 61/100 (Good) with 1 views, 0 installs and 0 GitHub stars.