Context7
Up-to-date docs for AI agents
作者による説明(英語の原文)
Durable AI memory: recall distilled facts in a later session or subagent, and remember new ones.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
KHWAN_API_KEY, KHWAN_CORE, KHWAN_USER, KHWAN_BASE_URL「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://mcp.khwan.ai/mcp/{core}/{user}アドレスには、あなたしか知らない {…} の部分(アカウントなど)があるので、コピーして書き換えてください。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"khwan": {
"command": "uvx",
"args": [
"khwan-mcp"
],
"env": {
"KHWAN_API_KEY": "your-value",
"KHWAN_CORE": "your-value",
"KHWAN_USER": "your-value",
"KHWAN_BASE_URL": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add --transport http khwan 'https://mcp.khwan.ai/mcp/{core}/{user}'claude mcp add khwan --env KHWAN_API_KEY=your-value --env KHWAN_CORE=your-value --env KHWAN_USER=your-value --env KHWAN_BASE_URL=your-value -- uvx khwan-mcp動かす前に、空欄の値を入力してください。
アドレスには、あなたしか知らない {…} の部分(アカウントなど)があるので、コピーして書き換えてください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"khwan": {
"url": "https://mcp.khwan.ai/mcp/{core}/{user}"
}
}
}プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"khwan": {
"command": "uvx",
"args": [
"khwan-mcp"
],
"env": {
"KHWAN_API_KEY": "your-value",
"KHWAN_CORE": "your-value",
"KHWAN_USER": "your-value",
"KHWAN_BASE_URL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
アドレスには、あなたしか知らない {…} の部分(アカウントなど)があるので、コピーして書き換えてください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"khwan": {
"type": "http",
"url": "https://mcp.khwan.ai/mcp/{core}/{user}"
}
}
}プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"khwan": {
"type": "stdio",
"command": "uvx",
"args": [
"khwan-mcp"
],
"env": {
"KHWAN_API_KEY": "your-value",
"KHWAN_CORE": "your-value",
"KHWAN_USER": "your-value",
"KHWAN_BASE_URL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://mcp.khwan.ai/mcp/{core}/{user}アドレスには、あなたしか知らない {…} の部分(アカウントなど)があるので、コピーして書き換えてください。
メニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
KHWAN_CORE envKHWAN_USER envKHWAN_BASE_URL envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名はドメイン khwan.ai で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
アドレスにあなた自身のアカウント情報が必要なため、代わりにチェックできません
アドレスにあなた自身のアカウント情報が必要なため、代わりにチェックできません
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:KHWAN_API_KEY
どちらでも使えます。パソコンにインストールしても、クラウド版につないでもかまいません。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.12)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Context7, Codebase Memory, Exa
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Durable memory that survives the session. An MCP server that plugs Khwan — a pure AI-memory layer — into Claude Code, Claude Desktop, or any MCP client.
Khwan never runs *your* model. The client is the model. Its job is to persist and distil what matters into a brain you can recall in a later session or seed a subagent with — a compact, bounded set of facts instead of a replayed transcript. One account can hold many isolated cores (brains), and — on paid plans — an isolated sub-brain per end-user.
Nothing on the read or write path costs you an inference call: khwan_recall and khwan_remember make none. Khwan does run one model of its own, on a schedule — a nightly pass that distils stored turns into standing lessons. A real production run was 8 brains and 245 stored turns distilled into 11 lessons, for $0.0094. That pass is Khwan's cost, not yours, and it is the whole difference from memory layers that compress, graph, or consolidate on every turn.
Be honest about the mechanism — an MCP adds to a host's context, it cannot replace the transcript the host already sends. So:
The token-smart pattern: seed once, remember durable facts (below), rather than running the full loop on every turn of a caching host. The full prepare → record loop still shines in a custom agent on a non-caching host, where replacing history with distilled memory bounds per-turn cost directly.
pip install khwan-mcp # or: uvx khwan-mcp
claude mcp add khwan --scope project \
-e KHWAN_CORE=default \ -- khwan-mcp
--scope project writes .mcp.json into the repo, so the setting travels with the project. Note what is not in that command: the key.
claude mcp add -e KHWAN_API_KEY=… writes the literal value into .mcp.json — a file whose whole point is being committed. Two ways to avoid that, and the second is the one that works everywhere:
Shell environment. Leave KHWAN_API_KEY out of the config entirely and export it in the shell that launches claude. The server inherits it.
export KHWAN_API_KEY=kwk_live_xxx
A launcher (works in the desktop app too). A desktop app is started from a dock or menu, not a login shell, so it inherits none of your shell exports and the approach above silently yields no key. Read it from a file instead:
mkdir -p ~/.khwan && chmod 700 ~/.khwan
printf 'KHWAN_API_KEY=kwk_live_xxx\n' > ~/.khwan/env && chmod 600 ~/.khwan/env
cat > ~/.khwan/khwan-mcp <<'SH' #!/bin/sh set -a [ -f "$HOME/.khwan/env" ] && . "$HOME/.khwan/env" set +a exec khwan-mcp "$@" SH chmod 700 ~/.khwan/khwan-mcp
Then point the config at the launcher and keep only non-secret settings inline:
claude mcp add khwan --scope project \
-e KHWAN_CORE=acme -e KHWAN_USER=Web \ -- ~/.khwan/khwan-mcp
.mcp.json is now safe to commit, and every new repo costs two lines instead of a pasted key. Anyone else on the team writes their own ~/.khwan/env.
Memory is only useful if the right project's memory comes back. Two axes, and both give complete isolation:
| selected by | free | paid | |
|---|---|---|---|
| core | KHWAN_CORE | 1 — default only | 5 (starter) → 25 (pro) |
| sub-brain | KHWAN_USER | 3 | unlimited |
A sub-brain is a full separate brain, not a filter: account::@web shares nothing with account::@api. So the two axes multiply, and a free account already holds four isolated brains — the core on its own, plus three sub-brains:
account default core, no KHWAN_USER brain 1
account::@web KHWAN_USER=web brain 2 account::@api KHWAN_USER=api brain 3 account::@docs KHWAN_USER=docs brain 4
Which means one-brain-per-project works on the free plan, for up to four projects — and it needs no `KHWAN_CORE` at all:
# in ~/code/web
claude mcp add khwan --scope project -e KHWAN_USER=web -- ~/.khwan/khwan-mcp
claude mcp add khwan --scope project -e KHWAN_USER=api -- ~/.khwan/khwan-mcp
Named cores are the paid axis. Reach for one when four brains stop being enough, or when you want them grouped per client rather than per repository:
# in ~/code/acme-web
claude mcp add khwan --scope project -e KHWAN_CORE=acme -e KHWAN_USER=Web -- ~/.khwan/khwan-mcp
claude mcp add khwan --scope project -e KHWAN_CORE=acme -e KHWAN_USER=Api -- ~/.khwan/khwan-mcp
Two things to know before you point KHWAN_CORE anywhere. A core must exist first — an unknown slug answers 404, not "created it for you" — and they are created in the dashboard. On the free plan there is nothing to point at: the cap of one is spent on default, so creating a named core answers 402. Leave KHWAN_CORE unset there and use KHWAN_USER. Sub-brains, by contrast, are created on first write.
On a caching host like Claude Code, prefer seed + remember over the per-turn loop:
"Call
khwan_recall(query=" ")and use the returnedseed_textas
context."
"That's a standing decision — call
khwan_remember(fact="…")."
Reinforce it in your project's CLAUDE.md, e.g.:
- At the start of a task, call `khwan_recall` to seed relevant memory.
khwan_remember.
Seeding a subagent is where the win is clearest — hand it a bounded brief instead of the whole transcript:
"Recall deploy memory with
khwan_recall(query="deploy runbook"), then spawn a
subagent whose brief is that
seed_textplus the task."
Claude Desktop and Claude Code keep separate MCP configuration — a server added to one is invisible to the other, and claude mcp add does not touch this file. Add to claude_desktop_config.json:
{
"mcpServers": { "khwan": { "command": "/Users/you/.khwan/khwan-mcp", "env": { "KHWAN_CORE": "acme", "KHWAN_USER": "Web" } } } }
Use an absolute path: a desktop app does not get your shell's PATH either, so a bare khwan-mcp may not resolve. One core is selected for the whole app — there is no per-project switch here, so choose a broad one.
| Var | Required | Purpose |
|---|---|---|
KHWAN_API_KEY | yes | Your key from the Khwan dashboard (kwk_live_…). |
KHWAN_CORE | no | Select a named core. Paid plans only — free has just default. |
KHWAN_USER | no | A separate brain inside the core — 3 on free, unlimited on paid. |
KHWAN_BASE_URL | no | Override the API base — e.g. http://127.0.0.1:8010 for a local engine. |
| Tool | When |
|---|---|
khwan_recall(query, limit=3) | seed a session/subagent — synthesised lessons + up to 3 relevant facts, as seed_text. |
khwan_remember(fact) | persist a durable fact/preference for future sessions. |
khwan_prepare(input) | full loop, before answering — memory context + a turn_token. |
khwan_record(turn_token, answer) | full loop, after answering — persists the turn so Khwan learns. |
khwan_memory(limit=20) | inspect what the brain currently remembers. |
khwan_cores() | list the isolated cores on the account. |
khwan_recall / khwan_remember are the token-smart pair for a caching host; khwan_prepare / khwan_record are the full loop for custom agents (pass the exact turn_token from prepare back into record).
khwan_recall returns at most three facts — that ceiling is the server's, so limit can lower it but not raise it — plus any lessons synthesis has distilled from many past turns. Lessons lead the seed_text: a rule earned over months outranks a single turn that happens to sit nearby in the index.
Retrieval applies a relevance floor, so an empty `facts` is an answer: the brain has nothing close to this question. Read it as "not known here" rather than as a failure, and do not fill the gap by leaning on whichever fact was nearest.
The floor is deliberately loose, because a memory wrongly dropped is invisible while a memory wrongly kept is not. Expect a returned fact to be *plausibly* related, not certainly relevant — read it before relying on it.
A new brain knows nothing, so its first weeks of recall are thin — while the answers are often already sitting in the host's own transcripts, unread. examples/backfill/ replays Claude Code transcripts into a brain: deterministic, no model calls, dry-run by default.
python3 examples/backfill/backfill_claude_code.py --map cores.json
The tools above are called *when Claude decides to*. For deterministic memory — no reliance on the model — use the hook preset in examples/claude-code-hooks/: a UserPromptSubmit hook injects memory on every prompt and a Stop hook records every answer.
⚠️ On a caching host this is the *thorough* option, not the *cheap* one — it
adds per-turn tokens. Prefer it when recall reliability matters more than token
cost (or on a non-caching client); otherwise use
khwan_recallat session
start.
github.com/khwanlabs/khwan-mcp — this server runs on your machine, with your key, reading what you type. Read it before you install it.
MIT — © Khwan Labs. See LICENSE.