Context7
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Self-hosted semantic code search MCP for Claude Code & Cursor. Multi-repo, AST-aware, stays local.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"paparats": {
"command": "npx",
"args": [
"-y",
"@paparats/cli"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add paparats -- npx -y @paparats/cliวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"paparats": {
"command": "npx",
"args": [
"-y",
"@paparats/cli"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"paparats": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@paparats/cli"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub IBazylchuk ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (2.18.2) เข้า registry 5 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Context7, Codebase Memory, Exa
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
ส่งคู่มือการใช้ไลบรารีและเฟรมเวิร์กรุ่นล่าสุดให้ AI อ่านก่อนตอบ ช่วยให้โค้ดที่ AI เขียนไม่ใช้คำสั่งเก่าที่เลิกใช้แล้ว
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.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
The MCP server for Paparats MCP — semantic code search over multiple repos with AST-aware chunking, a cross-chunk symbol graph, git-history per chunk, and an agent-maintained architectural memory layer.
Not published to npm. This package is consumed as a library by
@paparats/indexer
and shipped as a Docker image:
ibaz/paparats-server.
End users install through
@paparats/cli.
Three jobs in one process:
nl2code / code2code / techqa), query expansion for the support tools (abbreviations, case variants, plurals, filler removal), in-memory LRU query cache with per-group invalidation, confidence scoring, token-savings telemetry./mcp (coding), /support/mcp (support) and the opt-in, docs-only /knowledge/mcp (knowledge) — each with its own tool set and system instructions. Streamable HTTP for every client, with legacy SSE routes kept. Plus an agent-maintained architectural memory layer.http://<host>:9876/health – liveness probe
http:// :9876/metrics – Prometheus (PAPARATS_METRICS=true) http:// :9876/ui – operator console http:// :9876/api/analytics/... – analytics REST API (UI backend)
http:// :9876/mcp – MCP, coding mode (Streamable HTTP) http:// :9876/sse – MCP, coding mode (legacy SSE) http:// :9876/messages – MCP, coding mode (SSE message channel)
http:// :9876/support/mcp – MCP, support mode http:// :9876/support/sse – MCP, support mode (SSE) http:// :9876/support/messages – MCP, support mode (SSE message channel)
http:// :9876/knowledge/mcp – MCP, knowledge mode (stateless, bearer auth, POST only; mounted only when configured)
POST /api/index registers a project; POST /api/file-changed and POST /api/file-deleted update single files. See docs/tools.md for the full tool inventory per endpoint.
A docs-only MCP endpoint for a consumer in another network — an agent backend behind a load balancer that may search curated documentation and nothing else. Off unless PAPARATS_KNOWLEDGE_TOKENS and PAPARATS_KNOWLEDGE_AUDIENCE are both set; one without the other stops the server at startup.
search_docs and get_document only. No glossary block, no resources, no workflow prompts. search_docs returns structuredContent with an outputSchema, so a wrapping service can build citations without parsing markdown.Authorization: Bearer , compared in constant time, checked before the request body is read. 401 + WWW-Authenticate: Bearer otherwise.PAPARATS_KNOWLEDGE_AUDIENCE (never internal), in the projects of PAPARATS_KNOWLEDGE_PROJECTS when set. Both are intersected with PAPARATS_DOCS_AUDIENCE / PAPARATS_PROJECTS when those are set. Out-of-scope documents read exactly like missing ones.POST, no session id; GET/DELETE answer 405. 64 kB body limit, 1000-character query cap.Documents get their audience at index time: frontmatter audience: first, then docs.audience from .paparats.yml / projects.yml, otherwise internal. An invalid frontmatter value is logged and stored as internal. See the documentation search guide.
Set `PAPARATS_KNOWLEDGE_PROJECTS` — otherwise a stray audience: in some code repository's README is enough to widen what the endpoint serves.
Expose only that path, POST only. For example with nginx:
location = /knowledge/mcp {
limit_except POST { deny all; } client_max_body_size 64k; proxy_pass http://paparats:9876; proxy_http_version 1.1; proxy_buffering off; # responses stream as text/event-stream } location / { return 404; }
Code search tells the agent what the code does. The arch-memory layer tells it why — and the agent maintains that knowledge itself, across sessions, without you authoring a single doc.
Three card kinds in a separate Qdrant collection per group (paparats_ _arch), embedded with qwen3-embedding-0.6b (1024d, last-pooled):
| Kind | Fields | Idempotency |
|---|---|---|
| Component | name, summary (markdown: Does / Owns / Does not / Touched when), files, neighbours, anchors | By name (structural) |
| Decision | title, context, decision, alternatives_rejected, consequences, scope, supersedes | Server-side similarity gate |
| Lesson | rule, why, when, scope, severity, evidence | Server-side similarity gate |
Similarity gate (cosine on qwen3-embedding-0.6b):
>= 0.85 → duplicate. Decisions are refused so the agent must reconcile or supersede. Lessons bump updatedAt on the existing card (Reflexion "rule confirmed").0.70 – 0.85 → similar. Nothing is written; the agent should refine wording or pass supersedes.< 0.70 → accepted as a new card.supersedes bypasses the gate and marks the prior decision status=superseded so it disappears from default search but stays in history.
Reading via `arch_context` accepts min_score (default 0.45). Each returned card carries an updated N ago stamp and the cosine score so the agent can detect stale or low-confidence hits.
Bootstrap with `init_arch_memory` — a workflow prompt analogous to /init in Claude Code. Walks the repo, identifies 8-20 components by domain boundary, writes the cards. Followed by audit_architecture (sweep stale cards) and record_lesson_from_correction (turn user corrections into structured lessons).
MCP resources:
arch://schema — full card-schema reference.arch://stats/{group} — live counts (total / by kind / by status) and oldest/newest updatedAt.Prometheus metrics (PAPARATS_METRICS=true):
paparats_arch_context_calls_total{group} — counterpaparats_arch_write_total{kind, status} — counter labelled by gate outcomepaparats_arch_search_score — histogram of cosine scores from arch_contextpaparats_arch_collection_size{group, kind, status} — gaugearch_context is read-only on both MCP endpoints. arch_record_* is support-only — recording belongs to the architectural-review workflow.
| Module | Responsibility |
|---|---|
types.ts | Shared interfaces |
lib.ts | Public library entry point (re-exports for programmatic use) |
config.ts | .paparats.yml reader, 11 language profiles, autoProjectConfig() |
app.ts | Express app factory, HTTP API routes, request wiring |
index.ts | Server bootstrap — starts HTTP server, wires components, graceful shutdown |
ast-chunker.ts | AST-based chunking via tree-sitter |
chunker.ts | Regex chunking fallback (4 strategies) |
ast-symbol-extractor.ts | AST-based per-chunk symbol extraction |
ast-queries.ts | Tree-sitter S-expression queries per language |
tree-sitter-parser.ts | WASM tree-sitter manager — lazy grammar loading |
symbol-graph.ts | Cross-chunk symbol edges |
embeddings.ts | llama-server provider + SQLite cache + cached wrapper |
indexer.ts | Group-aware Qdrant indexing — createQdrantClient(), toCollectionName(), single-parse chunkFile() |
searcher.ts | Vector search, query expansion (support tools only), cache, metrics |
query-expansion.ts | Abbreviation / case / plural / filler expansion |
task-prefixes.ts | Query-type detection + bge-code-v1 / Qwen3 query instructions |
query-cache.ts | In-memory LRU cache with TTL and per-group invalidation |
metrics.ts | Prometheus metrics (prom-client) + NoOpMetrics fallback |
metadata.ts | Tag resolution + auto-detection from directory structure |
metadata-db.ts | SQLite store for git commits, tickets, symbol edges |
git-metadata.ts | Git history extraction — diff-hunk mapping to chunks |
ticket-extractor.ts | Jira / GitHub / custom ticket parsing |
mcp-handler.ts | MCP protocol — coding, support and knowledge endpoints with isolated tool sets and instructions |
knowledge-mode.ts | Knowledge mode — env parsing, bearer auth, body limit, scope intersection |
arch/types.ts | Architectural-memory types |
arch/collection.ts | Per-group paparats_ _arch collection lifecycle |
arch/text-embeddings.ts | qwen3-embedding-0.6b text embedder via llama-server |
arch/store.ts | CRUD + server-side similarity gate + stats() aggregation |
| arch/context.ts | arch_context query
ตัดมาแค่ช่วงต้น อ่านต่อใน repo