Sandbox
@cablate/Agentic-MCP-Skill

Progressive MCP client and daemon for agent tools

Agentic-MCP wraps MCP servers in a daemon with socket-based communication and a CLI for discovery and tool calls. It uses three layers: server metadata, tool lists, and per-tool schemas, so builders load only what they need.

40 stars3 forksTypeScriptUpdated 7mo ago
Who it's for

Builders who want MCP servers to stay lightweight in Claude Code, Codex, Cursor, or any agent CLI.

What it delivers

You can work with MCP servers without loading the full tool catalog into every session.

What it does

Three-layer progressive disclosure

Shows server metadata first, then tool names and descriptions, then the schema for one tool when needed.

Daemon-based MCP handling

Keeps MCP connections open in a long-running daemon instead of reloading everything in each conversation.

CLI discovery and tool calls

Provides commands to inspect servers, list tools, view schemas, and call tools from the terminal.

Hot reload support

Reloads MCP server configuration without restarting the daemon.

How to get it

  1. 1Run
    # Install globally
    npm install -g @cablate/agentic-mcp
    
    # Verify installation
    agentic-mcp --version
    
    # Start daemon
    agentic-mcp daemon start
  2. 2Run
    node dist/cli/index.js daemon start --config <config-path>
  3. 3Run
    agentic-mcp call playwright browser_navigate --params '{"url": "https://example.com"}'
  4. 4Automate browser operations using Playwright MCP server
    # 1. Navigate to website
    agentic-mcp call playwright browser_navigate --params '{"url": "https://www.apple.com/tw"}'
    
    # 2. Take screenshot
    agentic-mcp call playwright browser_take_screenshot
    
    # 3. Click element
    agentic-mcp call playwright browser_click --params '{"element": "Mac link", "ref": "e19"}'
  5. 5Reload after modifying mcp-servers.json without restarting daemon
    agentic-mcp daemon reload
  6. 6Response example
    ✓ Configuration reloaded
      Old servers: playwright_global
      New servers: playwright_global, filesystem_global

README

Agentic-MCP with Skill

AgentSkill for MCP - Three-layer progressive disclosure validates AgentSkills.io pattern for efficient MCP token usage

Agentic-MCP 封面圖

Website Node.js Version

English | 繁體中文


Design Intent

Proven AgentSkills Pattern

In the AgentSkills.io ecosystem, Progressive Disclosure combined with Script linkage has been validated as effective:

  • AI only loads specific information when needed, significantly reducing token usage
  • Scripts can be invoked via AI commands, providing high customization potential
  • Sharing tools via scripts is far less costly than developing and using complex MCP Servers

The impact of this pattern is significant and substantial.

Current MCP Skill Dilemma

Despite this, many Skills using MCP still face two extreme options:

Option 1: Install MCP directly in Claude Code, Skill only guides AI to call MCP

  • MCP server occupies AI context long-term
  • Full tool list loaded every conversation
  • Token waste, and MCP itself cannot be progressively explored

Option 2: Write custom scripts yourself

  • Tests user's programming skills
  • High customization but lacks standards
  • Each MCP has its own format/specs, high adaptation cost for both open and closed source
  • Difficult to maintain and share

This Skill's Goal

Validate whether AgentSkills.io pattern applies to improving MCP usage

This concept validation attempts to port AgentSkills' successful pattern to the MCP domain:

  1. Can AgentSkills architecture apply to MCP server management?
  2. Is three-layer progressive disclosure effective in MCP scenarios?
  3. Is Socket-based daemon architecture more practical than direct MCP usage?

Experimental Nature

This is not a mature product, but an experiment:

  • Test AgentSkills pattern applicability in MCP domain
  • Explore actual effectiveness of three-layer loading
  • Validate pros/cons of Daemon architecture
  • Serve as reference prototype for future development

Important Disclaimer

This is a very early, rushed AI-assisted demo version with current goals:

  • Validate concept feasibility
  • Explore usage patterns
  • Collect feedback for improvements

Not recommended for production use. Expect many issues and optimization opportunities. If you find any problems or have suggestions, please open an Issue or contribute a PR.


Core Concepts

Three-Layer Progressive Disclosure

Like AgentSkills, you don't need to load everything at once:

Layer 1: Know which servers are available

Load only basic info (name, version, status)
Usage: ~50-100 tokens
Use case: Check availability, choose server

Layer 2: Know what tools this server provides

Load tool list (names + brief descriptions)
Usage: ~200-400 tokens
Use case: Browse available tools, decide what to use

Layer 3: Load only the tools you need

Load complete input format for specific tool
Usage: ~300-500 tokens/tool
Use case: Before calling tool

Why This Approach

Assume an MCP server has 20 tools, you only need 2:

Loading MethodToken UsageDescription
Load All6,00020 tools × 300 tokens
Three-Layer Progressive850Metadata(50) + List(200) + 2 tools(600)
Savings86%Only load what you need

Development Status

Future Plans

Based on concept validation results, future directions include:

Short-term Goals

  • More convenient MCP Servers management (UI, auto-discovery, one-click install)
  • Implement Auth features (API Key management, permission control)

Mid-term Goals

  • Enhance MCP Server tool calling experience (better error messages, parameter validation, result formatting)
  • Intercept MCP Server output with customizable Script data processing, avoid massive messy data entering conversation memory

This project's direction depends on:

  • Concept validation results
  • Community feedback
  • Actual usage needs

Feedback and suggestions welcome.


Quick Start

Prerequisites

  • Node.js >= 18.0.0
  • npm

1. Install from npm (Recommended)

# Install globally
npm install -g @cablate/agentic-mcp

# Verify installation
agentic-mcp --version

# Start daemon
agentic-mcp daemon start

2. Configure

Edit mcp-servers.json in the project root:

{
  "servers": {
    "playwright": {
      "description": "Browser automation tool for web navigation, screenshots, clicks, form filling, and more",
      "type": "stdio",
      "command": "npx",
      "args": ["@playwright/mcp@latest", "--isolated"]
    }
  }
}

3. Start Daemon

node dist/cli/index.js daemon start --config <config-path>

4. Test Connection

# Check daemon health
agentic-mcp daemon health

# Layer 1: Check server status
agentic-mcp metadata playwright

# Layer 2: List available tools
agentic-mcp list playwright

# Layer 3: View specific tool format
agentic-mcp schema playwright browser_navigate

5. Call Tool

agentic-mcp call playwright browser_navigate --params '{"url": "https://example.com"}'

Testing

This project uses Vitest for testing with the following test suites:

Running Tests

# Run tests in watch mode
npm test

# Run tests once
npm run test:run

# Run with coverage report
npm run test:coverage

Test Structure

tests/
├── unit/
│   ├── client.test.ts       # ProgressiveMCPClient tests (12 tests)
│   ├── socket-client.test.ts # SocketClient tests (7 tests)
│   └── cli/
│       └── commands.test.ts  # CLI command tests (6 tests)

Current Coverage

  • Statements: 61.71%
  • Branches: 47.29%
  • Functions: 65.85%
  • Lines: 61.53%

Test coverage focuses on core modules (client.ts, socket-client.ts). Daemon integration tests are deferred to future work.

Test Philosophy

This project follows a pragmatic progressive approach:

  • Focus on happy path testing first
  • Use real MCP server (@modelcontextprotocol/server-filesystem) for integration
  • Mock only where necessary (e.g., net module for SocketClient)
  • Defer complex scenarios (daemon socket tests) to keep initial implementation simple

Usage Examples

Web Automation

Automate browser operations using Playwright MCP server:

# 1. Navigate to website
agentic-mcp call playwright browser_navigate --params '{"url": "https://www.apple.com/tw"}'

# 2. Take screenshot
agentic-mcp call playwright browser_take_screenshot

# 3. Click element
agentic-mcp call playwright browser_click --params '{"element": "Mac link", "ref": "e19"}'

Hot Reload Configuration

Reload after modifying mcp-servers.json without restarting daemon:

agentic-mcp daemon reload

Response example:

✓ Configuration reloaded
  Old servers: playwright_global
  New servers: playwright_global, filesystem_global

Architecture

System Architecture

+-----------------------------+
|     AI / CLI Layer          |
|  (CLI commands)              |
|  - agentic-mcp metadata      |
|  - agentic-mcp list          |
|  - agentic-mcp schema        |
|  - agentic-mcp call          |
+-----------+-----------------+
            | Socket (newline-delimited JSON)
            v
+-----------------------------+
|   MCP Daemon (Long-Running)  |
|  - Maintain persistent MCP   |
|    connections               |
|  - Socket communication      |
|  - Manage shared sessions    |
|  - Support Hot Reload        |
+-----------+-----------------+
            | MCP Protocol
            v
+-----------------------------+
|        MCP Servers           |
|  - playwright (browser)      |
|  - filesystem (files)        |
|  - github (Git)              |
|  - custom servers            |
+-----------------------------+

Configuration

MCP Servers Configuration

Edit mcp-servers.json:

{
  "servers": {
    "playwright": {
      "description": "Browser automation tool for web navigation, screenshots, clicks, and form filling",
      "transportType": "stdio",
      "command": "npx",
      "args": ["@playwright/mcp@latest", "--isolated"]
    }
  }
}

Configuration Notes:

  • description (optional): Server description for AI to understand the MCP server's purpose. If not provided, Layer 1 metadata will not include this field.

Resources


This is a concept validation project, feedback welcome

Files in the repo

Repository payload14 top-level entries
  • cli
  • src
  • tests
  • .gitignore
  • Banner.png
  • CHANGELOG.md
  • LICENSE
  • package-lock.json
  • package.json
  • README_zhTW.md
  • README.md
  • SKILL.md
  • tsconfig.json
  • vitest.config.ts

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k