본문으로 건너뛰기
cccskills
무료GitHub에 공개

mcp-chaining

Research-to-implement pipeline chaining 5 MCP tools with graceful degradation

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md5.0 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

MCP Chaining Pipeline

A research-to-implement pipeline that chains 5 MCP tools for end-to-end workflows.

When to Use

  • Building multi-tool MCP pipelines
  • Understanding how to chain MCP calls with graceful degradation
  • Debugging MCP environment variable issues
  • Learning the tool naming conventions for different MCP servers

What We Built

A pipeline that chains these tools:

StepServerTool IDPurpose
1niania__searchSearch library documentation
2ast-grepast-grep__find_codeFind AST code patterns
3morphmorph__warpgrep_codebase_searchFast codebase search
4qltyqlty__qlty_checkCode quality validation
5gitgit__git_statusGit operations

Key Files

  • scripts/research_implement_pipeline.py - Main pipeline implementation
  • scripts/test_research_pipeline.py - Test harness with isolated sandbox
  • workspace/pipeline-test/sample_code.py - Test sample code

Usage Examples

# Dry-run pipeline (preview plan without changes)
uv run python -m runtime.harness scripts/research_implement_pipeline.py \
    --topic "async error handling python" \
    --target-dir "./workspace/pipeline-test" \
    --dry-run --verbose

# Run tests
uv run python -m runtime.harness scripts/test_research_pipeline.py --test all

# View the pipeline script
cat scripts/research_implement_pipeline.py

Critical Fix: Environment Variables

The MCP SDK's get_default_environment() only includes basic vars (PATH, HOME, etc.), NOT os.environ. We fixed src/runtime/mcp_client.py to pass full environment:

# In _connect_stdio method:
full_env = {**os.environ, **(resolved_env or {})}

This ensures API keys from ~/.claude/.env reach subprocesses.

Graceful Degradation Pattern

Each tool is optional. If unavailable (disabled, no API key, etc.), the pipeline continues:

async def check_tool_available(tool_id: str) -> bool:
    """Check if an MCP tool is available."""
    server_name = tool_id.split("__")[0]
    server_config = manager._config.get_server(server_name)
    if not server_config or server_config.disabled:
        return False
    return True

# In step function:
if not await check_tool_available("nia__search"):
    return StepResult(status=StepStatus.SKIPPED, message="Nia not available")

Tool Name Reference

nia (Documentation Search)

nia__search              - Universal documentation search
nia__nia_research        - Research with sources
nia__nia_grep            - Grep-style doc search
nia__nia_explore         - Explore package structure

ast-grep (Structural Code Search)

ast-grep__find_code      - Find code by AST pattern
ast-grep__find_code_by_rule - Find by YAML rule
ast-grep__scan_code      - Scan with multiple patterns

morph (Fast Text Search + Edit)

morph__warpgrep_codebase_search  - 20x faster grep
morph__edit_file                 - Smart file editing

qlty (Code Quality)

qlty__qlty_check         - Run quality checks
qlty__qlty_fmt           - Auto-format code
qlty__qlty_metrics       - Get code metrics
qlty__smells             - Detect code smells

git (Version Control)

git__git_status          - Get repo status
git__git_diff            - Show differences
git__git_log             - View commit history
git__git_add             - Stage files

Pipeline Architecture

                    +----------------+
                    |   CLI Args     |
                    | (topic, dir)   |
                    +-------+--------+
                            |
                    +-------v--------+
                    | PipelineContext|
                    | (shared state) |
                    +-------+--------+
                            |
    +-------+-------+-------+-------+-------+
    |       |       |       |       |       |
+---v---+---v---+---v---+---v---+---v---+
| nia   |ast-grp| morph | qlty  | git   |
|search |pattern|search |check  |status |
+---+---+---+---+---+---+---+---+---+---+
    |       |       |       |       |
    +-------v-------v-------v-------+
                    |
            +-------v--------+
            | StepResult[]   |
            | (aggregated)   |
            +----------------+

Error Handling

The pipeline captures errors without failing the entire run:

try:
    result = await call_mcp_tool("nia__search", {"query": topic})
    return StepResult(status=StepStatus.SUCCESS, data=result)
except Exception as e:
    ctx.errors.append(f"nia: {e}")
    return StepResult(status=StepStatus.FAILED, error=str(e))

Creating Your Own Pipeline

  1. Copy the pattern from scripts/research_implement_pipeline.py
  2. Define your steps as async functions
  3. Use check_tool_available() for graceful degradation
  4. Chain results through PipelineContext
  5. Aggregate with print_summary()

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Agent Context Isolation

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

parcadei/Continuous-Claude-v33.9천2026년 1월 27일 업데이트

Agent Orchestration Rules

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

parcadei/Continuous-Claude-v33.9천2026년 1월 27일 업데이트

Agentic Workflow Pattern

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

parcadei/Continuous-Claude-v33.9천2026년 1월 27일 업데이트

Guide for integrating Agentica SDK with Claude Code CLI proxy

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

parcadei/Continuous-Claude-v33.9천2026년 1월 27일 업데이트

Reference guide for Agentica multi-agent infrastructure APIs

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

parcadei/Continuous-Claude-v33.9천2026년 1월 27일 업데이트

Write reliable prompts for Agentica/REPL agents that avoid LLM instruction ambiguity

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

parcadei/Continuous-Claude-v33.9천2026년 1월 27일 업데이트

parcadei의 스킬 모두 보기

이 스킬의 문제 신고