@elvatis_com/elvatis-mcp 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +33 -28
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@elvatis_com/elvatis-mcp)](https://www.npmjs.com/package/@elvatis_com/elvatis-mcp)
6
6
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
7
- [![Tests](https://img.shields.io/badge/tests-11%2F11%20passed-brightgreen)](#test-results)
7
+ [![Tests](https://img.shields.io/badge/unit%20tests-42%2F42%20passed-brightgreen)](#test-results)
8
8
 
9
9
  ## What is this?
10
10
 
@@ -13,10 +13,10 @@ elvatis-mcp connects Claude (or any MCP client) to your infrastructure:
13
13
  - **Smart home** control via Home Assistant (lights, thermostats, vacuum, sensors)
14
14
  - **Memory** system with daily logs stored on your OpenClaw server
15
15
  - **Cron** job management and triggering
16
- - **Multi-LLM orchestration** through 4 AI backends: OpenClaw, Google Gemini, OpenAI Codex, and local LLMs
17
- - **Smart prompt splitting** that analyzes complex requests and routes sub-tasks to the right AI
16
+ - **Multi-LLM orchestration** through 5 AI backends: Claude, OpenClaw, Google Gemini, OpenAI Codex, and local LLMs
17
+ - **Smart prompt splitting** that analyzes complex requests, routes sub-tasks to the right AI, and executes the plan with rate limiting
18
18
 
19
- The key idea: Claude is the orchestrator, but it can delegate specialized work to other AI models. Coding tasks go to Codex. Research goes to Gemini. Simple formatting goes to your local LLM (free, private). Trading and automation go to OpenClaw. And `prompt_split` figures out the routing automatically.
19
+ The key idea: Claude is the orchestrator, but it can delegate specialized work to other AI models. Coding tasks go to Codex. Research goes to Gemini. Simple formatting goes to your local LLM (free, private). Trading and automation go to OpenClaw. `prompt_split` figures out the routing automatically, and `prompt_split_execute` runs the plan with rate limiting on cloud agents.
20
20
 
21
21
  ## What is MCP?
22
22
 
@@ -69,7 +69,7 @@ prompt_split returns:
69
69
  t4: openclaw_memory_write -- "Save summary to today's log" (after t2, t3)
70
70
  ```
71
71
 
72
- Claude then executes the plan, calling tools in the right order and running parallel tasks concurrently. Three analysis strategies:
72
+ Use `prompt_split_execute` to run the plan automatically, or let Claude execute it step by step. Tasks run in dependency order with parallel groups executed concurrently. Three analysis strategies:
73
73
 
74
74
  | Strategy | Speed | Quality | Uses |
75
75
  |---|---|---|---|
@@ -80,7 +80,7 @@ Claude then executes the plan, calling tools in the right order and running para
80
80
 
81
81
  ---
82
82
 
83
- ## Available Tools (32 total)
83
+ ## Available Tools (34 total)
84
84
 
85
85
  ### Home Assistant (7 tools)
86
86
  | Tool | Description |
@@ -100,7 +100,7 @@ Claude then executes the plan, calling tools in the right order and running para
100
100
  | `openclaw_memory_read_today` | Read today's memory log |
101
101
  | `openclaw_memory_search` | Search memory files across the last N days |
102
102
 
103
- ### Cron Automation (6 tools)
103
+ ### Cron Automation (7 tools)
104
104
  | Tool | Description |
105
105
  |---|---|
106
106
  | `openclaw_cron_list` | List all scheduled OpenClaw cron jobs |
@@ -125,7 +125,7 @@ Claude then executes the plan, calling tools in the right order and running para
125
125
  | `claude_run` | Send a prompt to Claude via the local CLI. For non-Claude MCP clients (Cursor, Windsurf). |
126
126
  | `gemini_run` | Send a prompt to Google Gemini via the local CLI. 1M token context. |
127
127
  | `codex_run` | Send a coding task to OpenAI Codex via the local CLI. |
128
- | `local_llm_run` | Send a prompt to a local LLM (LM Studio, Ollama, llama.cpp). Free, private. |
128
+ | `local_llm_run` | Send a prompt to a local LLM (LM Studio, Ollama, llama.cpp). Free, private. Supports streaming. |
129
129
  | `llama_server` | Start/stop/configure a llama.cpp server with TurboQuant cache support. |
130
130
 
131
131
  ### System Management (4 tools)
@@ -230,27 +230,27 @@ See [BENCHMARKS.md](BENCHMARKS.md) for the full benchmark suite, methodology, an
230
230
  | GPU | AMD Radeon RX 9070 XT Elite (16 GB GDDR6) |
231
231
  | RAM | 128 GB DDR4 |
232
232
  | OS | Windows 11 Pro |
233
- | Runtime | LM Studio + ROCm (`llama.cpp-win-x86_64-amd-rocm-avx2@2.8.0`) |
233
+ | Runtime | LM Studio + Vulkan (`llama.cpp-win-x86_64-vulkan-avx2@2.8.0`) |
234
234
 
235
- ### Local LLM Inference (LM Studio, ROCm GPU, `--gpu max`)
235
+ ### Local LLM Inference (LM Studio, Vulkan GPU, `--gpu max`)
236
236
 
237
- Median of 3 runs, `max_tokens=512`. Tasks: classify (1-word sentiment), extract (JSON), reason (arithmetic), code (Python function).
237
+ Median of 3 runs, `max_tokens=512`. Tasks: classify (1-word sentiment), extract (JSON), reason (arithmetic), code (Python function). Vulkan is the recommended runtime for AMD RX 9070 XT (wins 4 of 5 models over ROCm).
238
238
 
239
- | Model | Params | classify | extract | reason | code |
240
- |-------|--------|----------|---------|--------|------|
241
- | Phi 4 Mini Reasoning | 3B | 3.9s | 5.1s | 8.6s | 8.5s |
242
- | Deepseek R1 0528 Qwen3 | 8B | 2.5s | 7.7s | 13.3s | 7.3s |
243
- | Qwen 3.5 9B | 9B | 4.9s | 11.2s | 6.6s | 11.4s |
244
- | Phi 4 Reasoning Plus | 15B | 0.4s | 17.4s | 4.5s | 17.3s |
245
- | **GPT-OSS 20B** | **20B** | **0.6s** | **0.7s** | **0.7s** | **3.1s** |
239
+ | Model | Params | classify | extract | reason | code | avg tok/s |
240
+ |-------|--------|----------|---------|--------|------|-----------|
241
+ | Phi 4 Mini Reasoning | 3B | 2.6s | 1.9s | 4.7s | 4.8s | **106** |
242
+ | Deepseek R1 0528 Qwen3 | 8B | 3.0s | 6.5s | 7.2s | 7.4s | 70 |
243
+ | Qwen 3.5 9B | 9B | 6.2s | 4.0s | 8.4s | 7.2s | 48 |
244
+ | Phi 4 Reasoning Plus | 15B | 0.4s | 9.7s | 3.5s | 9.9s | 40 |
245
+ | **GPT-OSS 20B** | **20B** | **0.6s** | **0.6s** | **0.6s** | **1.9s** | 63 |
246
246
 
247
- **GPU speedup vs CPU (Deepseek R1 8B):** classify 8.4x faster, extract 3.2x faster.
247
+ **GPU speedup vs CPU (Deepseek R1 8B, Vulkan):** classify 7.2x faster, extract 3.8x faster.
248
248
 
249
249
  ### Sub-Agent Comparison (same task, different backends)
250
250
 
251
251
  | Agent | Backend | Avg Latency | Cost | Notes |
252
252
  |-------|---------|-------------|------|-------|
253
- | **local_llm_run** | GPT-OSS 20B (ROCm GPU) | **1.3s** | Free | 3x faster than Codex, 5x faster than Claude |
253
+ | **local_llm_run** | GPT-OSS 20B (Vulkan GPU) | **1.0s** | Free | 4x faster than Codex, 6x faster than Claude |
254
254
  | codex_run | OpenAI Codex CLI | 4.1s | Pay-per-use | Best for coding tasks |
255
255
  | claude_run | Claude Sonnet 4.6 | 6.3s | Pay-per-use | Best for complex reasoning |
256
256
  | gemini_run | Gemini 2.5 Flash | 34.0s | Free tier | CLI startup overhead, best for long context |
@@ -270,12 +270,12 @@ Median of 3 runs, `max_tokens=512`. Tasks: classify (1-word sentiment), extract
270
270
 
271
271
  | Metric | Result |
272
272
  |--------|--------|
273
- | Pass rate | 6/10 (60%) |
274
- | Task count accuracy | 7/10 (70%) |
275
- | Avg agent match | 70% |
273
+ | Pass rate | **10/10 (100%)** |
274
+ | Task count accuracy | 10/10 (100%) |
275
+ | Avg agent match | 100% |
276
276
  | Latency | <1ms (no LLM call) |
277
277
 
278
- The `auto` strategy (Gemini or local LLM) handles complex multi-step prompts with higher accuracy. See [BENCHMARKS.md](BENCHMARKS.md) for details.
278
+ Improvements in v0.8.0+: word boundary regex matching, comma-clause splitting for multi-agent prompts, per-tool routing rules, `openclaw_notify` routing. See [BENCHMARKS.md](BENCHMARKS.md) for the full test corpus.
279
279
 
280
280
  > Want to contribute benchmarks from your hardware? See [BENCHMARKS.md](BENCHMARKS.md#community-contributions).
281
281
 
@@ -444,6 +444,8 @@ Connect your client to `http://your-server:3333/mcp`.
444
444
  | `MCP_TRANSPORT` | `stdio` | Transport mode: `stdio` or `http` |
445
445
  | `MCP_HTTP_PORT` | `3333` | HTTP port |
446
446
  | `SSH_DEBUG` | -- | Set to `1` for verbose SSH output |
447
+ | `ELVATIS_DATA_DIR` | `~/.elvatis-mcp` | Directory for persistent usage data (rate limiter) |
448
+ | `RATE_LIMITS` | -- | JSON string with per-agent rate limit overrides |
447
449
 
448
450
  ---
449
451
 
@@ -501,12 +503,12 @@ On Windows, elvatis-mcp automatically resolves the SSH binary to `C:\Windows\Sys
501
503
 
502
504
  ## `/mcp-help` Slash Command
503
505
 
504
- In Claude Code, the `/project:mcp-help` slash command shows the full 34-tool routing guide as formatted output:
506
+ In Claude Code, the `/mcp-help` slash command shows the full 34-tool routing guide as formatted output:
505
507
 
506
508
  ```
507
- /project:mcp-help # full guide
508
- /project:mcp-help openclaw_status # help for a specific tool
509
- /project:mcp-help analyze this trading strategy for risk # routing recommendation
509
+ /mcp-help # full guide
510
+ /mcp-help openclaw_status # help for a specific tool
511
+ /mcp-help analyze this trading strategy for risk # routing recommendation
510
512
  ```
511
513
 
512
514
  ---
@@ -577,9 +579,12 @@ src/
577
579
  file-transfer.ts File upload/download via SSH
578
580
  system-status.ts Unified health check across all services
579
581
  splitter.ts Smart prompt splitter (multi-strategy)
582
+ split-execute.ts Plan executor with agent dispatch and rate limiting
580
583
  help.ts Routing guide and task recommender
581
584
  routing-rules.ts Shared routing rules and keyword matching
585
+ rate-limiter.ts Rate limiting + cost tracking for cloud sub-agents
582
586
  tests/
587
+ unit.test.ts 42 unit tests (no external services needed)
583
588
  integration.test.ts Live integration tests
584
589
  ```
585
590
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elvatis_com/elvatis-mcp",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "MCP server for OpenClaw — expose smart home, memory, cron, and more to Claude Desktop, Cursor, Windsurf, and any MCP client",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",