All-in-one MCP server for local LLMs (web/doc/scholar/calc) no API keys required.

TOOL4LM — Multi-Tool MCP Server for Local LMs

Node.jsTypeScriptLicense: MIT

All-in-one tools to supercharge your local or remote LLMs. Search smarter. Calculate faster. Summarize better.

TOOL4LM là một MCP (Model Context Protocol) server viết bằng Node.js/TypeScript giúp bổ sung công cụ cho các mô hình ngôn ngữ chạy cục bộ (LM Studio/Ollama/…): web search, đọc & tóm tắt trang, tìm & đọc tài liệu nội bộ, tra cứu học thuật, và máy tính. Không cần API key mặc định.

✨ Tính năng

  • 🔎 Web Search: tìm nhiều nguồn (SearXNG + DuckDuckGo HTML), khử trùng lặp, trả về tiêu đề + URL + snippet.
  • 🌐 Web Fetch/Read: tải trang có giới hạn kích thước/thời gian (chống SSRF) và trích văn bản “đọc được” để tóm tắt.
  • 📂 Doc Search/Read: tìm & đọc tài liệu trong thư mục sandbox (txt/md/html/pdf). PDF dùng pdf-parse (lazy-load).
  • 📚 Scholar Search/Get: tra cứu học thuật (arXiv + Crossref + Wikipedia) và lấy metadata theo DOI/arXivId.
  • 🧮 Calculator: đánh giá biểu thức với mathjs, hỗ trợ precision (làm tròn).

🧰 Tool & tham số (tên chính ⇄ alias gạch dưới)

Tool Khi nào dùng Tham số (shape)
calc.evalcalc_eval Tính toán cục bộ { expr: string, precision?: number }
web.searchweb_search Tìm web đa engine { q: string, max?: number, lang?: string, site?: string, engines?: string[], k?: number, limit?: number }
web.fetchweb_fetch Tải 1 URL (HTML/binary) { url: string, timeout?: number, max_bytes?: number, headers?: Record<string,string> }
web.readweb_read Trích văn bản “đọc được” { url: string, html?: string }
doc.finddoc_find Tìm trong thư mục sandbox { q: string, top?: number, limit?: number }
doc.readdoc_read Đọc 1 file trong sandbox { path: string }
index.buildindex_build Build chỉ mục tài liệu { root?: string }
sch.searchsch_search Tìm bài/paper/DOI { q: string, top?: number, limit?: number }
sch.getsch_get Lấy metadata paper { doi?: string, arxivId?: string, url?: string }
wiki.searchwiki_search Tìm tiêu đề Wikipedia { q: string, lang?: string }
wiki.getwiki_get Lấy summary Wikipedia { title: string, lang?: string }

Đã bật openWorldHint nên nếu model lỡ thêm field lạ host vẫn chấp nhận; nhưng khuyến nghị dùng đúng tham số như bảng để ổn định.

🔧 Cài đặt & chạy

npm install
npm run build
npm start

Khi chạy thành công sẽ in: [TOOL4LM] started. Sandbox: <đường_dẫn_sandbox>

⚙️ Cấu hình MCP (LM Studio)

Thêm vào mcp.json của LM Studio:

{
  "mcpServers": {
    "TOOL4LM": {
      "command": "node",
      "args": ["--enable-source-maps", "C:/path/to/tool4lm/dist/server.js"],
      "type": "mcp",
      "env": {
        "SANDBOX_DIR": "C:/path/to/your_docs",
        "SEARXNG_ENDPOINTS": "https://searx.be/search,https://searx.tiekoetter.com/search",
        "ENGINE_ORDER": "searxng,duckduckgo",
        "LANG_DEFAULT": "vi",
        "REGION_DEFAULT": "vn",
        "MAX_FETCH_BYTES": "1048576",
        "FETCH_TIMEOUT_MS": "8000"
      }
    }
  }
}

Trên Windows, nên dùng / trong JSON để tránh escape \.

📝 Ví dụ luồng sử dụng

Tra cứu web có trích dẫnweb.searchweb.fetchweb.read → tóm tắt + đính kèm URL. Tài liệu nội bộdoc.finddoc.read → tóm tắt + trích đoạn (ghi kèm path). Học thuậtsch.searchsch.get theo DOI/arXivId. Tính toáncalc.eval với ^/pow(a,b) (hoặc đã normalize **).

🌍 Biến môi trường

  • SANDBOX_DIR — thư mục tài liệu (mặc định: ./sandbox).
  • SEARXNG_ENDPOINTS — danh sách endpoint /search của SearXNG, cách nhau dấu phẩy.
  • ENGINE_ORDER — ví dụ searxng,duckduckgo.
  • LANG_DEFAULT, REGION_DEFAULT — gợi ý ngôn ngữ/khu vực khi tìm web.
  • MAX_FETCH_BYTES — giới hạn dung lượng tải trang.
  • FETCH_TIMEOUT_MS — timeout tải trang (ms).

🤝 Đóng góp

Issues/PRs rất hoan nghênh! Nếu thấy bug/đề xuất, mở issue giúp mình nhé.

📜 Giấy phép

MIT

☕ Ủng hộ

Nếu bạn thấy dự án hữu ích, có thể ủng hộ mình qua PayPal:

Donate with PayPal

hoặc bấm nút bên dưới:

MCP Server · Populars

MCP Server · New

    conorluddy

    Context-Pods

    🫛 Local-first Model Context Protocol management suite. Provides an MCP to create and manage other local MCPs. Useful for local Tooling etc.

    Community conorluddy
    vfarcic

    DevOps AI Toolkit

    Intelligent dual-mode agent for deploying applications to ANY Kubernetes cluster through dynamic discovery and plain English governance

    Community vfarcic
    paiml

    Depyler

    Compiles Python to Rust, helping transition off of Python to Energy Efficient and Safe Rust Code

    Community paiml
    campfirein

    Cipher

    Cipher is an opensource memory layer specifically designed for coding agents. Compatible with Cursor, Windsurf, Claude Desktop, Claude Code, Gemini CLI, AWS's Kiro, VS Code, and Roo Code through MCP, and coding agents, such as Kimi K2. Built by https://byterover.dev/

    Community campfirein
    neilberkman

    Clippy 📎

    Unified clipboard tool for macOS that intelligently handles both text and file copying

    Community neilberkman