Show HN: KnowledgeMCP – Biến mọi tài liệu thành điểm cuối MCP (không cần LLM khi truy vấn)
URL bài viết: https://github.com/hashwnath/KMCP URL bình luận: https://news.ycombinator.com/item?id=48469712 Điểm: 2 Bình luận: 0
KnowledgeMCP
Cung cấp cho tài liệu của bạn một điểm cuối (endpoint) MCP. Mọi tác nhân AI đều có thể sử dụng chúng.
draft.mp4
KnowledgeMCP chuyển đổi bất kỳ nguồn tài liệu nào (trang web, PDF, Confluence, Notion, S3, GitHub) thành một điểm cuối Giao thức Ngữ cảnh Mô hình (Model Context Protocol - MCP) tuân thủ tiêu chuẩn. Claude, GitHub Copilot, Cursor và bất kỳ tác nhân tương thích MCP nào khác có thể tìm kiếm và đọc các tài liệu đó ngay lập tức — mà không cần gọi LLM tại thời điểm truy vấn (chúng tôi sử dụng một mô hình nhúng cục bộ nhỏ + tìm kiếm lai BM25/kNN trong OpenSearch).
🔌 Tích hợp MCP — ba công cụ (docs_search, code_sample_search, docs_fetch) mà bất kỳ tác nhân nào cũng có thể kết nối.
💰 Đường dẫn truy vấn không tốn phí — nhúng cục bộ + tìm kiếm lai OpenSearch. Không có phí OpenAI/Bedrock cho mỗi truy vấn.
🐳 `docker compose up` hoạt động — chạy hoàn toàn cục bộ, không cần tài khoản AWS, không cần thẻ tín dụng.
☁️ Đường dẫn AWS sẵn sàng cho sản xuất khi bạn cần — Lambda + DynamoDB + SQS + S3 + OpenSearch được quản lý thông qua mẫu SAM đi kèm.
Bắt đầu nhanh
`git clone https://github.com/hashwnath/KMCP.git`
`cd KMCP`
`make up # docker compose up -d --build`
Sau đó:
Bảng điều khiển (Dashboard) → http://localhost:3000 (đăng ký → thêm nguồn → tìm kiếm)
API REST quản trị (Admin REST API) → http://localhost:8081
Điểm cuối MCP (MCP endpoint) → http://localhost:8000/mcp/{your-tenant-slug}
Lần khởi động đầu tiên sẽ tải xuống mô hình fastembed (~30 MB) và OpenSearch (ảnh ~700 MB).
Cách các tác nhân sử dụng
Trỏ bất kỳ máy khách MCP nào đến URL đối tượng thuê của bạn:
```
{
"mcpServers": {
"MyDocs": {
"url": "http://localhost:8000/mcp/your-tenant-slug",
"type": "http"
}
}
}
```
Tác nhân nhận được ba công cụ:
| Công cụ | Mục đích | Trả về |
| :------------------ | :--------------------------------------- | :--------------------------------------------------------------------- |
| `docs_search` | tìm kiếm ngữ nghĩa + từ khóa | tối đa 10 đoạn với tiêu đề, URL, đoạn trích ~500 token |
| `code_sample_search` | tìm kiếm cụ thể theo mã với bộ lọc ngôn ngữ tùy chọn | tối đa 20 đoạn mã với ngôn ngữ + ngữ cảnh |
| `docs_fetch` | nội dung trang đầy đủ | markdown sạch |
Kiến trúc
```
┌────────────────────────────────────────────────────────────┐
│ Tác nhân AI (Claude, Cursor, Copilot, Continue, ...) │
└──────────────────────────┬─────────────────────────────────┘
│ POST /mcp/{tenant_slug}
┌──────────────────────────▼─────────────────────────────────┐
│ Máy chủ MCP (FastMCP) — docs_search / code_search / fetch │
└──────────────────────────┬─────────────────────────────────┘
┌──────────────┼──────────────┐
▼ ▼ ▼
┌───────────────┐ ┌──────────┐ ┌──────────────┐
│ OpenSearch │ │ SQLite │ │ Hệ thống tệp │
│ (BM25 + kNN) │ │ tenants │ │ blobs │
│ ~768 token │ │ sources │ │ uploads │
│ chunks │ │ jobs │ │ │
└───────────────┘ └──────────┘ └──────────────┘
▲
┌──────────────────────────┴─────────────────────────────────┐
│ API quản trị (Starlette) + Trình xử lý nền │
│ đăng ký/đăng nhập (JWT) crawl → markdown → chunk → │
│ CRUD nguồn nhúng → OpenSearch │
│ phân tích │
└────────────────────────────────────────────────────────────┘
```
(Trong chế độ AWS, thay thế SQLite → DynamoDB, Filesystem → S3, hàng đợi trình xử lý → SQS, và chạy mỗi dịch vụ như một Lambda riêng. Mã ứng dụng không thay đổi vì mọi lệnh gọi AWS đều được định tuyến qua `src/common/backends/`.)
Các loại nguồn được hỗ trợ
| Loại | Nội dung được nhập |
| :--------------- | :------------------------------------------------------------------------------ |
| `website_url` | Thu thập toàn bộ sơ đồ trang web → markdown |
| `paste_text` | Văn bản nội tuyến |
| `file_upload` | PDF, DOCX, PPTX, MD, HTML, TXT |
| `cloud_storage` | S3, Azure Blob, GCS |
| `wiki_kb` | Confluence, Notion, SharePoint, GitBook |
| `git_repo` | Kho lưu trữ GitHub/GitLab công khai hoặc riêng tư (mã thông báo tùy chọn) |
Cấu hình
Các giá trị mặc định hoạt động cho `docker-compose` cục bộ. Để tùy chỉnh, sao chép `.env.example` vào `.env` và chỉnh sửa. Các tùy chọn hữu ích nhất:
| Biến | Mặc định | Ghi chú |
| :----------------- | :------- | :---------------------------------------- |
| `BACKEND` | `local` | `local` (mặc định) hoặc `aws` |
| `EMBEDDING_PROVIDER` | `local` | `local` (fastembed) / `bedrock` / `openai` |
LOCAL_EMBEDDING_MODEL
BAAI/bge-small-en-v1.5
Bất kỳ mô hình nào được fastembed hỗ trợ
OPENSEARCH_ENDPOINT
http://opensearch:9200
Trong compose; ghi đè cho OpenSearch được lưu trữ
MAX_DOCS_PER_TENANT
500
Hạn ngạch trên mỗi người thuê
RATE_LIMIT_PER_SECOND
10
Giới hạn tốc độ điểm cuối MCP (trên mỗi người thuê)
Triển khai sản xuất AWS
Xem docs/AWS_DEPLOYMENT.md để biết mẫu SAM (Lambda + DynamoDB + SQS + S3 + OpenSearch + SES), ước tính chi phí và sổ tay vận hành.
Đóng góp
Các yêu cầu kéo (PR) được hoan nghênh. Xem CONTRIBUTING.md để biết tổng quan về cơ sở mã và thiết lập phát triển cục bộ.
make test # bộ pytest đầy đủ (BACKEND=local)
make test-aws # bộ mô phỏng AWS
make up # docker compose up -d --build
Giấy phép
Phần phụ trợ (src/, infra/, cấu hình cấp cao nhất) — AGPL-3.0
Phần giao diện người dùng (frontend/) — MIT
Giấy phép AGPL-3.0 có nghĩa là việc sử dụng được lưu trữ/SaaS phải công bố các sửa đổi theo cùng một giấy phép. Nếu điều đó gây ra vấn đề cho trường hợp sử dụng của quý vị, vui lòng mở một vấn đề để chúng ta có thể thảo luận về cấp phép thương mại.
Tại sao lại là KnowledgeMCP?
KnowledgeMCP
Các công cụ RAG điển hình
Chi phí truy vấn
0 USD (nhúng cục bộ + OpenSearch)
0,01-0,10 USD/truy vấn (xếp hạng lại LLM)
Tích hợp tác nhân
MCP gốc — cắm và chạy
API REST + mã kết nối tùy chỉnh
Tự lưu trữ
docker compose up, không cần tài khoản đám mây
Thường cần API đám mây
Đa người thuê
Cách ly trên mỗi người thuê được tích hợp sẵn
Một người thuê, gắn thêm sau
Độ trễ
~100ms (không có LLM trong đường dẫn)
1-5s (xếp hạng lại LLM)
Cộng đồng
Thảo luận trên GitHub — câu hỏi, ý tưởng, trình bày và chia sẻ
Vấn đề — báo cáo lỗi, yêu cầu tính năng
Lời cảm ơn
FastMCP — khung máy chủ MCP
fastembed — thư viện nhúng thời gian chạy ONNX
OpenSearch — tìm kiếm kết hợp BM25 + kNN
Nhóm máy chủ Microsoft Learn MCP — vì đã ghi lại những bài học kinh nghiệm quý báu đã định hình thiết kế ngữ cảnh người thuê thông qua phần mềm trung gian
Nguồn tin: Hacker News LLM — Tác giả: Hashwanths. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.