Ruflo
Agent teams, swarms, memory and hooks for Claude Code and Codex, served over MCP.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Fast indexed code search for AI agents, powered by Sourcegraph Zoekt.
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ผลตรวจผ่าน 1/2 · ทำงานบนเครื่องคุณ
ขั้นแรก: คุณใช้ AI ตัวไหน
เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง
ต่อกับ Claude ได้ แต่ต้องเตรียมก่อน
ต้องมีคีย์ของ Zoekt MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย
วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง
SettingsDeveloperEdit Config
{
"mcpServers": {
"zoekt": {
"command": "uvx",
"args": [
"zoekt-mcp"
],
"env": {
"ZOEKT_URL": "ใส่ค่าของคุณ"
}
}
}
}วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร
ใช้ Zoekt MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude บอกว่ากำลังใช้ Zoekt MCP หรือมีชื่อเครื่องมือของ Zoekt MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ChatGPT ยังต่อ Zoekt MCP ไม่ได้
Zoekt MCP ต้องติดตั้งในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะตัวที่ทำงานบนเว็บ
ก · ใช้แอปที่ต่อ Zoekt MCP ได้
ข · ตัวอื่นในหมวด ค้นข้อมูลและความจำของ AI ที่ต่อกับ ChatGPT ได้
เลือกจากตัวที่ใช้มากในหมวดเดียวกัน เฉพาะตัวที่ต่อด้วยที่อยู่ได้โดยไม่ต้องใส่คีย์
ต่อกับ Claude Code ได้ แต่ต้องเตรียมก่อน
ต้องมีคีย์ของ Zoekt MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว)
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย
วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง
Mac: กด Command+Space พิมพ์ Terminal · Windows: เปิด PowerShell
claude mcp add zoekt --env ZOEKT_URL='ใส่ค่าของคุณ' -- uvx zoekt-mcpแก้ “ใส่ค่าของคุณ” เป็นคีย์ของคุณก่อนกด Enter
วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร
ต้องเห็น Zoekt MCP ในรายการและขึ้นว่าเชื่อมต่อแล้ว
ใช้ Zoekt MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Claude Code บอกว่ากำลังใช้ Zoekt MCP หรือมีชื่อเครื่องมือของ Zoekt MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ Cursor ได้ แต่ต้องเตรียมก่อน
ต้องมีคีย์ของ Zoekt MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว)
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย
วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง
ในค่าตั้งของ Zoekt MCP ช่อง ZOEKT_URL ยังว่าง ใส่คีย์ของคุณแล้วบันทึก
วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร
ใช้ Zoekt MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า Cursor บอกว่ากำลังใช้ Zoekt MCP หรือมีชื่อเครื่องมือของ Zoekt MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Cursor เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
ต่อกับ VS Code ได้ แต่ต้องเตรียมก่อน
ต้องมีคีย์ของ Zoekt MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Python (uv) ในเครื่องก่อน (ทำครั้งเดียว)
ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Python (uv)
เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย
วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง
ในค่าตั้งของ Zoekt MCP ช่อง ZOEKT_URL ยังว่าง ใส่คีย์ของคุณแล้วบันทึก
วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร
ใช้ Zoekt MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง✓ ถ้า VS Code บอกว่ากำลังใช้ Zoekt MCP หรือมีชื่อเครื่องมือของ Zoekt MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ
ชื่อเมนูตรวจกับหน้าช่วยเหลือของ VS Code เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป
โปรแกรมอื่นที่ใช้ MCP ได้ เช่น Windsurf, Zed หรือ Gemini CLI มีวิธีเพิ่มต่างกัน ดูวิธีของแต่ละตัวในหน้ารวมโปรแกรม
ค่าตั้งแบบไฟล์ JSON อยู่ในหัวข้อ “สำหรับคนเขียนโค้ด” ด้านล่าง
Claude Code
claude mcp add zoekt --env ZOEKT_URL='ใส่ค่าของคุณ' -- uvx zoekt-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"zoekt": {
"command": "uvx",
"args": [
"zoekt-mcp"
],
"env": {
"ZOEKT_URL": "ใส่ค่าของคุณ"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"zoekt": {
"command": "uvx",
"args": [
"zoekt-mcp"
],
"env": {
"ZOEKT_URL": "ใส่ค่าของคุณ"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"zoekt": {
"type": "stdio",
"command": "uvx",
"args": [
"zoekt-mcp"
],
"env": {
"ZOEKT_URL": "ใส่ค่าของคุณ"
}
}
}
}ZOEKT_URL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
pypi: zoekt-mcpoci: ghcr.io/radiovisual/zoekt-mcp:0.3.2ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569
ติดตั้งบนเครื่องได้ใน
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 11 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub radiovisual ซึ่งเป็นเจ้าของ repo
แก้โค้ดล่าสุด 7 เดือนที่ผ่านมา นานกว่า 6 เดือน
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์
ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย
ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx
ยังไม่มีรีวิว
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด 7 เดือนที่ผ่านมา และส่งรุ่นล่าสุด (0.3.2) เข้า registry 7 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv), Docker ในเครื่องด้วย
ในหมวดเดียวกันมี Ruflo, Context7, Metabase
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Agent teams, swarms, memory and hooks for Claude Code and Codex, served over MCP.
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
Lets AI clients search, explore, query, and visualize data in a Metabase instance.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server that exposes Sourcegraph Zoekt code search to any MCP-capable AI agent — Claude Code, Claude Desktop, Cursor, MCP Inspector, etc. — so the agent can run fast, indexed, regex/symbol-aware code search over your repositories regardless of the language you're working in.
zoekt-webserver you run yourself via the Docker Compose file attached to every GitHub release — or point the MCP server at any existing zoekt-webserver you have lying around.search_code, list_repos, get_file.flowchart LR
subgraph Client["MCP client"] CC["Claude Code Claude Desktop Cursor, etc."] end
subgraph Server["zoekt-mcp (Python)"] Tools["search_code list_repos get_file"] end
subgraph Backend["Docker: zoekt backend"] Web["zoekt-webserver"] Idx[("zoekt index named volume")] Indexer["zoekt-indexer (one-shot)"] end
Code[("Your code bind mount")]
CC <-->|"stdio MCP protocol"| Tools Tools <-->|"HTTP JSON /api/search /api/list /print"| Web Web --> Idx Code --> Indexer Indexer --> Idx
sequenceDiagram
actor You participant Claude as Claude Code participant MCP as zoekt-mcp participant Web as zoekt-webserver participant Idx as zoekt index
You->>Claude: "where is getVideoId defined?" Claude->>MCP: search_code("sym:getVideoId") MCP->>Web: POST /api/search Web->>Idx: scan shards Idx-->>Web: matches + ctags symbols Web-->>MCP: raw JSON result Note over MCP: trim to {repo, file, line, text, symbols} MCP-->>Claude: shaped result Claude-->>You: "src/index.js:17 (function)"
Getting from "nothing installed" to "Claude can search my code" is three steps: install the MCP server, run the backend, wire it into your client. No git clone required in any of them.
You need exactly one of these to run the MCP server, plus Docker for the backend:
uvx zoekt-mcp install path. MCP clients spawn the server via uvx, so which uv must resolve in whatever shell your client launches processes in. Install once per machine: # Official installer (macOS / Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
brew install uv
pipx install uv
The installer drops uv and uvx into ~/.local/bin/ (Linux/macOS) or %USERPROFILE%\.local\bin\ (Windows). Verify with uv --version.
docker run ghcr.io/radiovisual/zoekt-mcp install path. Any recent Docker Desktop or engine works. You need Docker anyway for the backend, so this path saves you from installing uv if you don't already have it.And for the backend:
zoekt-webserver and the one-shot indexer via the compose file attached to every release.The zoekt backend is a regular Docker Compose stack you run yourself — zoekt-mcp does not lifecycle-manage it. Grab the compose file and helper script from the latest GitHub release and bring them up against whatever directory holds your code:
# Fetch the two files you need from the latest release.
mkdir -p ~/.zoekt-mcp && cd ~/.zoekt-mcp curl -LO https://github.com/radiovisual/zoekt-mcp/releases/latest/download/docker-compose.yml curl -LO https://github.com/radiovisual/zoekt-mcp/releases/latest/download/index.sh chmod +x index.sh
echo "ZOEKT_REPOS_DIR=/home/you/code" > .env
docker compose up -d
So if /home/you/code looks like this:
~/code/
├── project-a/ → indexed as zoekt repo "project-a" ├── project-b/ → indexed as zoekt repo "project-b" └── scratch-notes/ → indexed as zoekt repo "scratch-notes"
…zoekt indexes all three repos in one pass and you can scope any query with repo:project-a — or leave repo: off to search across everything at once. See Indexing multiple codebases below for more on the one-server-many-repos model.
Sanity check:
curl -s -XPOST -d '{"Q":"repo:."}' http://localhost:6070/api/list \
| python3 -m json.tool | head -20
You should see each subdirectory of ZOEKT_REPOS_DIR listed as a zoekt repo.
On macOS / Windows Docker Desktop, the path you pick must be under
an allowed file-sharing root (check Docker Desktop → Settings →
Resources → File Sharing). On Linux there's no such restriction.
Just want to try it without touching your real code directory?
Clone the repo and use the in-tree test fixture:
./tests/fixtures/up.sh— see Development at the
bottom of this file.
Two install paths — pick whichever matches your existing tooling. Both end up running the same versioned server binary; the only difference is how it's launched.
uvx (recommended if you already have uv)uvx downloads the latest zoekt-mcp from PyPI on first invocation, caches it, and spawns it. No permanent install, no venv to manage.
Claude Code (`~/.claude.json`):
{
"mcpServers": { "zoekt": { "type": "stdio", "command": "uvx", "args": ["zoekt-mcp"], "env": { "ZOEKT_URL": "http://localhost:6070" } } } }
Or via the claude CLI:
claude mcp add zoekt \
--env ZOEKT_URL=http://localhost:6070 \ -- uvx zoekt-mcp
Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
{
"mcpServers": { "zoekt": { "command": "uvx", "args": ["zoekt-mcp"], "env": { "ZOEKT_URL": "http://localhost:6070" } } } }
Cursor (`~/.cursor/mcp.json` or `.cursor/mcp.json` in a project):
{
"mcpServers": { "zoekt": { "command": "uvx", "args": ["zoekt-mcp"], "env": { "ZOEKT_URL": "http://localhost:6070" } } } }
To pin a specific version instead of always using the latest:
"args": ["zoekt-mcp==0.1.0"]
If you already have Docker running for the backend and would rather not install uv, use the container image instead. MCP clients spawn it over stdio exactly like the uvx path.
Claude Code / Claude Desktop / Cursor:
{
"mcpServers": { "zoekt": { "command": "docker", "args": [ "run", "-i", "--rm", "--network=host", "-e", "ZOEKT_URL=http://localhost:6070", "ghcr.io/radiovisual/zoekt-mcp:latest" ] } } }
On Docker Desktop (macOS/Windows) the host isn't reachable via localhost from inside a container. Drop --network=host and use host.docker.internal instead:
"args": [
"run", "-i", "--rm", "-e", "ZOEKT_URL=http://host.docker.internal:6070", "ghcr.io/radiovisual/zoekt-mcp:latest" ]
To pin a specific version, replace :latest with the semver tag (e.g. :0.1.0). The image is multi-arch (linux/amd64 + linux/arm64), so it works on Apple Silicon and ARM Linux hosts without extra flags.
Restart Claude Code / Claude Desktop / Cursor and the three tools (search_code, list_repos, get_file) should appear. Try something like "where is getVideoId defined?" and watch it call search_code("sym:getVideoId").
One zoekt-mcp server handles as many repos as you want — that's the default. Every top-level subdirectory of ZOEKT_REPOS_DIR becomes a separate searchable repo in one shared index. The search_code tool can scope to a subset with repo:NAME (regex matched against repo names) or leave repo: off to search across everything.
If your projects live under different parent directories (e.g. ~/work/ and ~/personal/), the simplest fix is to create a single "index root" directory with symlinks pointing at each project and set ZOEKT_REPOS_DIR to that index root. One server, one config, all repos searchable.
mkdir -p ~/.zoekt-root
ln -s ~/work/project-a ~/.zoekt-root/project-a ln -s ~/personal/side-thing ~/.zoekt-root/side-thing
cd ~/.zoekt-mcp echo "ZOEKT_REPOS_DIR=$HOME/.zoekt-root" > .env docker compose up -d
Docker has to follow the symlinks when it resolves the bind mount,
which works on Linux but is hit-or-miss on Docker Desktop. If the
linked directories don't show up inside the container, fall back
to putting real directories (or clones) under
~/.zoekt-root
instead of symlinks.
A second zoekt-mcp instance is only worth the setup cost when you want fully isolated index pools — for example, keeping work code and personal code in completely separate search namespaces, or running two different backends (e.g. different zoekt versions) side by side. It is not needed just to index more code; one server with many subdirectories is the right tool for that.
If you genuinely want two instances:
~/.zoekt-mcp/docker-compose.yml to a second file, e.g. ~/.zoekt-mcp/docker-compose.personal.yml.name: (e.g. zoekt-mcp-personal)6071:6070)zoekt-mcp-personal-index)zoekt-mcp-personal-webserver)~/.zoekt-mcp/.env.personal, pointing ZOEKT_REPOS_DIR at a different directory. cd ~/.zoekt-mcp
docker compose up -d docker compose -f docker-compose.personal.yml \ --env-file .env.personal up -d
zoekt-mcp binary, different ZOEKT_URL values: {
"mcpServers": { "zoekt-work": { "command": "uvx", "args": ["zoekt-mcp"], "env": { "ZOEKT_URL": "http://localhost:6070" } }, "zoekt-personal": { "command": "uvx", "args": ["zoekt-mcp"], "env": { "ZOEKT_URL": "http://localhost:6071" } } } }
Claude Code sees two independent sets of tools (search_code / list_repos / get_file from each namespace) and decides which to call based on the question.