# MCP Examples

> This skill should be used when the user asks for "MCP examples", "real-world patterns", "code search patterns", "browser proxy patterns", "process management patterns", "show me examples", or wants to see actual implementations from lci, agnt, or other real MCPs.

- Skill: `majiayu000/mcp-examples` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/mcp-examples`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/mcp-examples/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/mcp-examples

---


# MCP Examples

## Purpose

Provide real-world MCP patterns from production servers: code search (lci), browser integration (agnt), process management, and knowledge bases.

## When to Use

- Need concrete examples of patterns
- Want to see actual implementations
- Designing similar functionality
- Learning from working systems

## Code Search Pattern (lci)

### Architecture
- **Pattern:** Hub-and-Spoke + Progressive Discovery
- **Tools:** 8+ tools
- **Token System:** result_id, symbol_id

### Key Tools

**search - Hub tool**
```json
{
  "input": {"pattern": "string", "filter": "optional"},
  "output": {
    "results": [
      {"id": "r1", "name": "User.authenticate", "preview": "...", "conf": 0.95}
    ],
    "has_more": true,
    "total": 127
  }
}
```

**get_definition - Spoke tool**
```json
{
  "input": {"id": "r1"},
  "output": {
    "symbol_id": "s1",
    "name": "User.authenticate",
    "signature": "...",
    "source": "...",
    "location": {"file": "user.ts", "line": 42}
  }
}
```

**Token efficiency:** ID reference saves ~80% tokens vs. repeating full code

### Progressive Detail Example

```
Query: "authenticate"

High match (0.95): Full details (200 tokens)
  - Name, signature, docs, preview, location

Medium match (0.70): Summary (50 tokens)
  - Name, type, file

Low match (0.40): Minimal (10 tokens)
  - Name, ID only
```

## Browser Proxy Pattern (agnt)

### Architecture
- **Pattern:** CRUD + Aggregation
- **Tools:** 10+ tools
- **Token Systems:** proxy_id, session_id, request_id

### Key Tools

**proxy_start - Create**
```json
{
  "input": {"target_url": "http://localhost:3000"},
  "output": {
    "proxy_id": "dev",
    "listen_addr": "http://localhost:12345",
    "status": "running"
  }
}
```

**currentpage - Aggregation**
```json
{
  "input": {"proxy_id": "dev"},
  "output": {
    "session_id": "page-1",
    "url": "http://localhost:3000",
    "errors_count": 3,          // Not full error objects
    "interactions_count": 127,   // Not every interaction
    "mutations_count": 45,       // Not every mutation
    "performance": {...}
  },
  "detail_access": "Use detail=['errors'] for full data"
}
```

**Key pattern:** Counts in overview, full data on request

### Hierarchical IDs

```
proxy_id (dev)
  ↓
session_id (page-1)
  ↓
request_id (req_a1b2)
```

Each level provides more specificity.

## Process Management Pattern

### Architecture
- **Pattern:** CRUD + Lazy Loading
- **Tools:** 8+ tools
- **Token System:** process_id

### Progressive Status

**Level 1 - Count**
```json
{
  "active": 5,
  "stopped": 2
}
```

**Level 2 - List**
```json
{
  "processes": [
    {"id": "p1", "name": "dev-server", "status": "running"},
    {"id": "p2", "name": "test", "status": "running"}
  ]
}
```

**Level 3 - Status**
```json
{
  "id": "p1",
  "status": "running",
  "uptime": "2h15m",
  "memory": "245MB",
  "preview": "Server listening :3000"
}
```

**Level 4 - Full**
```json
{
  /* ...all Level 3... */,
  "full_output": "... complete logs ...",
  "env": {...},
  "metrics": {...}
}
```

## Knowledge Base Pattern

### Architecture
- **Pattern:** Discovery-Detail
- **Tools:** Search, topics, articles
- **Token System:** article_id, topic_id

### Layered Access

```
list_topics()
  → ["auth", "deploy", "monitor"]

get_topic_summary("auth")
  → {articles: 12, updated: "2024-01"}

search_articles("OAuth")
  → [{id: "a1", title: "...", preview: "..."}]

get_article("a1")
  → {title, content, related: [...]}
```

## Common Patterns Across Examples

### 1. ID Reference System

All use IDs to avoid repeating data:
- **lci:** result_id → symbol_id
- **agnt:** proxy_id → session_id → request_id
- **process:** process_id
- **kb:** topic_id → article_id

**Savings:** 70-90% token reduction

### 2. Progressive Detail

All vary detail by context:
- **lci:** By confidence (0.95 = full, 0.40 = minimal)
- **agnt:** By request (counts vs. full arrays)
- **process:** By depth (count → list → status → full)
- **kb:** By layer (topics → summary → full article)

### 3. Automation Flags

All include standard flags:
```json
{
  "has_more": boolean,
  "total": integer,
  "returned": integer,
  "complete": boolean
}
```

### 4. Accept Extra Parameters

All accept unknown params with warnings:
```typescript
const {known, params, ...extra} = input
if (extra) warnings.push(`Unknown: ${Object.keys(extra)}`)
```

## Anti-Patterns Seen and Fixed

### ❌ Repeating Data

**Before (wasteful):**
```json
// Tool 1
{"results": [{"name": "...", "code": "... 200 lines ..."}]}

// Tool 2 needs same data
// User copies entire result
```

**After (efficient):**
```json
// Tool 1
{"results": [{"id": "r1", "name": "...", "preview": "10 lines"}]}

// Tool 2
input: {"id": "r1"}  // Reference only
```

### ❌ No Progressive Detail

**Before:**
```json
{
  "results": [
    {"name": "...", "full": "... 500 tokens ..."},
    {"name": "...", "full": "... 500 tokens ..."},
    {"name": "...", "full": "... 500 tokens ..."}
  ]
}
```

**After:**
```json
{
  "results": [
    {"id": "a1", "conf": 0.95, "full": "..."},  // Only high confidence
    {"id": "b2", "conf": 0.70, "summary": "..."},
    {"id": "c3", "conf": 0.40}  // Just ID
  ]
}
```

### ❌ Flat Structure

**Before (15+ tools, no organization):**
```
search_users, search_posts, get_user, get_post, ...
```

**After (grouped):**
```
Query Tools: search
Lookup Tools: get_user, get_post
Management: create_user, update_user
```

## Real-World Token Savings

### lci code_search Tool

**Without IDs:**
- Average result: 250 tokens (full code)
- 10 results: 2,500 tokens

**With IDs:**
- Average preview: 50 tokens
- 10 results: 500 tokens
- **Savings:** 80%

### agnt currentpage Tool

**Without aggregation:**
- Full errors array: 400 tokens
- Full interactions: 600 tokens
- Full mutations: 300 tokens
- **Total:** 1,300 tokens

**With aggregation:**
- Error count: 10 tokens
- Interaction count: 10 tokens
- Mutation count: 10 tokens
- **Total:** 30 tokens (97% savings)
- Use detail parameter for full arrays when needed

## Additional Resources

### Examples Directory

- **`examples/lci-workflow.json`** - Complete lci search workflow
- **`examples/agnt-workflow.json`** - Browser debugging workflow
- **`examples/process-workflow.json`** - Process management workflow

## Quick Reference

**Proven patterns:**

1. **Hub-and-Spoke** - lci (search → details)
2. **CRUD** - agnt (lifecycle management)
3. **Aggregation** - agnt currentpage (counts not arrays)
4. **Lazy Loading** - process status (overview → full)
5. **Discovery-Detail** - kb (topics → articles)

**Key lessons:**

- IDs save 70-90% tokens
- Progressive detail by relevance/confidence
- Counts in overview, arrays on request
- Accept extra params with warnings
- Automation flags for AI agents

Study these real-world examples when designing similar functionality.

