local-mcp

स्थानीय फ़ाइल संचालन के लिए शून्य-निर्भरता MCP सर्वर। 13 फ़ाइलसिस्टम उपकरण + प्रगतिशील खोज के लिए 3 मेटा-उपकरण — कोई SDK, कोई फ्रेमवर्क, npm install की आवश्यकता नहीं।
MCP प्रोटोकॉल: 2024-11-05 · परिवहन: stdio + Streamable HTTP · रनटाइम: Node.js ≥ 22.0.0
आर्किटेक्चर
local-mcp.mjs — 595 पंक्तियाँ, 13 उपकरण, प्रवेश बिंदु
lib/mcp-core.mjs — 229 पंक्तियाँ, stdio + HTTP परिवहन, 9 MCP विधियाँ
lib/config.mjs — 31 पंक्तियाँ, MCP_WORKSPACE/DATA env कॉन्फ़िगरेशन सत्यापन के साथ
**कुल: ~855 पंक्तियाँ, शून्य रनटाइम निर्भरताएँ।**
उपकरण
फ़ाइलसिस्टम उपकरण (13)
मेटा-उपकरण (3) — प्रगतिशील खोज
| उपकरण | विवरण |
|---|
search_tools | कीवर्ड द्वारा उपलब्ध उपकरण खोजें — सभी को सूचीबद्ध करने की तुलना में ~90% टोकन बचाता है |
describe_tool | किसी विशिष्ट उपकरण के लिए पूर्ण इनपुट स्कीमा प्राप्त करें (मांग पर लोड किया गया) |
call_tool | तर्कों के साथ किसी भी उपकरण को नाम से निष्पादित करें |
हर अनुरोध में सभी 13 उपकरण स्कीमा (~3,000 टोकन) भेजने के बजाय, इन 3 मेटा-उपकरणों के साथ प्रगतिशील खोज इसे ~50 टोकन तक कम कर देती है — ~90% टोकन बचत।
प्रदर्शन अनुकूलन (v1.1.1)
अतिरिक्त अनुकूलन
आरंभ करना
# शून्य इंस्टॉल — कोई निर्भरता नहीं
node local-mcp.mjs
# कॉन्फ़िगरेशन के साथ
MCP_WORKSPACE=D:/projects node local-mcp.mjs
stdio मोड (डिफ़ॉल्ट)
{
"mcpServers": {
"local-mcp": {
"command": "node",
"args": ["D:/path/to/local-mcp.mjs"],
"env": {
"MCP_WORKSPACE": "D:/projects"
}
}
}
}
HTTP मोड
node local-mcp.mjs --http
node local-mcp.mjs --http --port 3456
JSON-RPC 2.0 POST, SSE स्ट्रीमिंग (Accept: text/event-stream), CORS, और GET /tools का समर्थन करता है।
CLI फ़्लैग्स
node local-mcp.mjs --help # उपयोग + env वेरिएबल दिखाएँ
node local-mcp.mjs --list-tools # उपलब्ध उपकरण प्रिंट करें और बाहर निकलें
node local-mcp.mjs --http # HTTP मोड शुरू करें
node local-mcp.mjs --http --port 3456
कॉन्फ़िगरेशन
सुरक्षा
- सभी फ़ाइल संचालन
MCP_WORKSPACE और उपनिर्देशिकाओं तक सीमित
- प्रोटोटाइप-सुरक्षित बुकमार्क कुंजियाँ (
__proto__/constructor/prototype इंजेक्शन को रोकती हैं)
- परमाणु लेखन (अस्थायी + नाम बदलना) आंशिक फ़ाइल लेखन को रोकते हैं
- बाइनरी फ़ाइल पहचान गैर-पाठ फ़ाइलों को पढ़ने से रोकती है
.gitignore और सामान्य बहिष्कृत निर्देशिकाएँ (node_modules, .git, आदि) का सम्मान किया जाता है
निर्भरताएँ
शून्य रनटाइम निर्भरताएँ। केवल Node.js अंतर्निहित का उपयोग करता है:
चेंजलॉग
v1.1.1 — प्रदर्शन अनुकूलन
- A. स्ट्रीम head/tail पढ़ना: 500MB लॉग 3s → 5ms
- B. ls में आलसी स्टैट: 1000-फ़ाइल निर्देशिका 50ms → 2ms
- C.
availableParallelism() के साथ अनुकूली grep समवर्तीता
- D. मैप इंसर्शन ऑर्डर के माध्यम से LRU कैश निष्कासन
- E. Grep बाइट सुरक्षा (100MB / 1000 फ़ाइलें)
- F. MCP 2025 स्पेक के लिए प्रगति सूचना पासथ्रू
- फिक्स:
streamHead स्कोप बग — done को Promise कॉलबैक के बाहर परिभाषित किया गया
v1.1.0
- 13 फ़ाइलसिस्टम उपकरण + प्रगतिशील खोज के लिए 3 मेटा-उपकरण
- stdio + Streamable HTTP परिवहन
- Myers डिफ इंजन, पढ़ने का कैश, स्ट्रीमिंग निष्पादन
- सत्यापन के साथ पर्यावरण-आधारित कॉन्फ़िगरेशन
डेवलपमेंट
# परीक्षण चलाएँ
node --test test/*.test.mjs
# उपकरण जोड़ना
# 1. local-mcp.mjs में स्कीमा + हैंडलर परिभाषित करें
# 2. server.tool() के साथ पंजीकृत करें
# 3. परीक्षण जोड़ें
योगदान
- शून्य-निर्भरता बाधा बनाए रखें
- नई कार्यक्षमता के लिए परीक्षण जोड़ें
- प्रदर्शन परिवर्तनों के लिए अनुकूलन तालिका अपडेट करें
लाइसेंस
MIT