dalicore-mcp-client
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dalicore-mcp-clientreplace 'localhost' with 'example.com' in config.yml"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dalicore MCP Client
Streamlined Model Context Protocol (MCP) server with 8 essential tools for file operations, code editing, and command execution.
Built for efficiency based on real usage data - covers 97.5% of actual workflow with minimal overhead.
Why This Fork?
The Token Cost Problem: Every tool call in MCP consumes tokens. Desktop Commander's 25+ tools meant:
AI models waste tokens evaluating irrelevant tools
Increased confusion leads to wrong tool selection
Higher API costs for every interaction
Original: Desktop Commander MCP had 25+ tools
Problem: Only 8 tools accounted for 97.5% of actual usage
Solution: Stripped down to essentials, enhanced the survivors
Data-driven design:
Analyzed 12,302 actual tool calls across real usage
Kept the 8 most-used tools (97.5% coverage)
Cut 288 lines of bloat (46% reduction)
Significantly less tool context sent with every interaction (25 → 8 tools)
Key improvements over Desktop Commander:
System information built-in - No separate tool call needed (OS, architecture, paths, allowed directories)
Line count tracking -
read_fileandwrite_fileshow actual lines processedIntelligent chunking -
write_fileautomatically chunks large files (25-30 lines) to avoid token wasteBetter error messages - Clear guidance when operations fail, with suggestions for fixes
Smart state detection -
start_processdetects REPL prompts and completion states automatically
Bottom line: Fewer tools = lower costs, faster responses, less confusion.
Related MCP server: MCP Custom Tools Server
The 8 Essential Tools
Process Management
start_process - Execute commands with smart state detection
34.4% of all usage
Primary tool for running builds, tests, scripts
Detects REPL prompts and completion states
File Operations
read_file - Read files with pagination, tail support, and URL fetching
29.2% of all usage
Handles images (PNG, JPEG, GIF, WebP)
Supports offset/length for large files
write_file - Write files with automatic chunking
2.2% of all usage
Rewrite or append modes
Smart 25-30 line chunks to avoid token waste
Code Editing
edit_block - Surgical text replacements with fuzzy matching
17.0% of all usage
Character-level diff feedback
Multiple occurrence support
Searching
search_code - Fast content search with ripgrep
11.2% of all usage
Context lines, file patterns, regex support
Structured output for easy parsing
search_files - Find files by name pattern
1.2% of all usage
Glob pattern support
Recursive directory traversal
File System
list_directory - List files and directories
2.5% of all usage
Clear [FILE] and [DIR] markers
Path validation
Debugging & History
tool_history - View recent tool call history with success/failure tracking
Track what operations were performed and whether they succeeded
See actual results (lines written, matches found, command output)
Filter by tool type, time range, or file/command patterns
Compact or verbose output modes with ✓/✗ status indicators
Parses both request and result logs for complete operation history
Advanced filtering:
filter: "edits" (write_file, edit_block only) or "all" (every tool call)since: Time-based filtering ("1h", "30m", "2d", or ISO timestamp)pathFilter: Search by file path or command content (e.g., "git push")showFullCommands: Display complete commands without truncation
Result tracking shows:
Success/failure status with error messages
Lines read/written for file operations
Matches found for search operations
Process output and exit status
Actual replacements applied for edits
Use cases:
Debug failed operations with detailed error messages
Verify operations completed successfully
Track command history and output
Find all operations on specific files
Audit recent changes by time period
What We Cut (and Why)
Removed ~18 tools that accounted for only 2.5% of usage:
❌ get_config / set_config_value → Just edit config file with edit_block
❌ read_multiple_files → Use multiple read_file calls
❌ create_directory → Use start_process("mkdir -p /path")
❌ move_file → Use start_process("mv src dst")
❌ interact_with_process / read_process_output → Use one-shot commands or temp scripts
❌ list_processes / kill_process → Use start_process("ps aux") / start_process("kill PID")
❌ And more...
Philosophy: Use start_process with OS commands instead of wrapping every shell command as a separate tool.
Smart Features
System Awareness
System info is automatically sent to the LLM on every connection:
Operating system and architecture
Default shell (bash, zsh, cmd, powershell)
Allowed directories
Path separator and case sensitivity
OS-appropriate command guidance
No separate tool needed - Claude knows your environment automatically.
Helpful Blocked Command Messages
When you try to use a blocked command, you get helpful alternatives:
Example:
🚫 SED COMMAND BLOCKED
You tried: sed -n '100,200p' file.txt
**What to use instead:**
✅ read_file(path, { offset: 100, length: 101 })
For building files from pieces:
✅ start_process("head -100 file.txt > newfile.txt")
**You already have these tools - use them!**Teaches best practices instead of just saying "no."
Installation
Prerequisites
Node.js 18+
npm
Setup
Clone the repository:
git clone https://github.com/Corlzee/dalicore-mcp-client.git
cd dalicore-mcp-client
npm install
npm run buildAdd to Claude Desktop config:
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"dalicore-mcp-client": {
"command": "node",
"args": ["/absolute/path/to/dalicore-mcp-client/dist/index.js"]
}
}
}Restart Claude Desktop
Configuration
Config file location: ~/.config/commander-keen/config.json
Key Settings
{
"blockedCommands": ["rm", "sudo", "chmod", "chown"],
"defaultShell": "bash",
"allowedDirectories": [
"/home/user/projects",
"/home/user/documents"
],
"readOnlyDirectories": ["/home/user/reference"],
"fileReadLineLimit": 1000,
"fileWriteLineLimit": 50,
"telemetryEnabled": true
}Configuration Options
blockedCommands: Array of prohibited shell commandsdefaultShell: Shell forstart_process(bash, zsh, cmd, powershell)allowedDirectories: Paths accessible for file operations (empty array = all access)readOnlyDirectories: Paths with read-only accessfileReadLineLimit: Max lines perread_filecallfileWriteLineLimit: Max lines perwrite_filecalltelemetryEnabled: Anonymous usage tracking
Editing Config
Use edit_block on the config file:
edit_block(
"~/.config/commander-keen/config.json",
'"allowedDirectories": [...]',
'"allowedDirectories": [..., "/new/path"]'
)Usage Examples
Running Commands
start_process("npm run build", 30000)
start_process("python3 script.py", 10000, "bash")Reading Files
// First 50 lines
read_file("/path/file.txt", { offset: 0, length: 50 })
// Last 20 lines (tail)
read_file("/path/file.txt", { offset: -20 })
// Lines 100-200
read_file("/path/file.txt", { offset: 100, length: 101 })
// From URL
read_file("https://example.com/data.json", { isUrl: true })Writing Files
// Create new file
write_file("/path/file.txt", "content", { mode: "rewrite" })
// Append to file
write_file("/path/file.txt", "more content", { mode: "append" })Editing Code
edit_block(
"/path/file.js",
"const x = 10;",
"const x = 20;"
)
// Multiple replacements
edit_block(
"/path/file.js",
"console.log",
"logger.info",
{ expected_replacements: 5 }
)Searching
// Search code content
search_code("/path", "TODO", {
filePattern: "*.js",
contextLines: 2
})
// Find files by name
search_files("/path", "*.test.js")Best Practices
File Writing
Always chunk files >30 lines into multiple
write_filecallsUse
rewritefor first chunk,appendfor restKeeps token usage low and improves reliability
Path Usage
Use absolute paths (
/home/user/file.txt)Relative paths depend on current directory (unreliable)
Tilde paths (
~/file.txt) may not work in all contexts
Command Execution
For one-shot tasks, use
start_processdirectlyFor complex workflows, write temp scripts and execute
For data analysis, write Python/Node scripts instead of trying to use REPLs
Blocked Commands
If a command is blocked, read the error message
It will suggest the correct tool or approach
Commands like
sed,awk,rmare blocked for safety
Architecture
Server Components
server.ts (332 lines) - MCP protocol handler, 7 tool definitions
schemas.ts (88 lines) - Zod validation schemas
handlers/ - Individual tool implementations
utils/systemInfo.ts - OS detection and info generation
utils/blockedCommandHelp.ts - Helpful error messages
Design Principles
Data-driven: Keep only what's actually used
Helpful errors: Teach best practices when blocking
System aware: Automatically provide environment context
Minimal overhead: 7 tools, 332 lines, fast startup
Development
Build
npm run buildWatch Mode
npm run watchTesting
npm testDebugging
npm run start:debugThen attach debugger on port 9229.
Statistics
Based on 12,302 actual tool calls:
Top 5 tools: 93% of usage
Top 7 tools: 97.5% of usage
Other 18 tools: 2.5% of usage
Decision: Keep the 7, cut the 18.
Contributing
This is a focused, streamlined fork. If you want to add tools:
Check if
start_processcan do itProvide usage data showing demand
Follow the "essential tools only" philosophy
License
MIT
Credits
Original: Desktop Commander MCP by Eduard Ruzga (@wonderwhy-er)
This Fork: Streamlined to 7 essential tools based on 12,302 actual tool calls
Data-Driven Philosophy: Less is more (when backed by data)
Support
Issues: https://github.com/Corlzee/dalicore-mcp-client/issues
Docs: https://docs.claude.com (general MCP documentation)
Streamlined. Efficient. Data-driven.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Corlzee/dalicore-mcp-client'
If you have feedback or need assistance with the MCP directory API, please join our Discord server