{
  "video": {
    "id": "pAnLpiAG6Es",
    "title": "MCP Doesn't Suck. Your Agent Does. — Jan Čurn, Apify",
    "duration": 1124,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": ""
  },
  "analysis": {
    "video_id": "pAnLpiAG6Es",
    "title": "MCP Doesn't Suck. Your Agent Does. — Jan Čurn, Apify",
    "one_liner": "MCP's bad reputation comes from naive agent harnesses that dump every tool into context, not from the protocol; use MCP for standardized remote access and a CLI wrapper (Apify's MCPC) as the local agent interface so agents get progressive discovery and code mode through a single bash tool call.",
    "summary": "Jan Čurn (founder and CEO of Apify) answers last year's wave of 'MCP sucks' and 'MCP is dead' takes. He argues that the real problems, such as context bloat and sensitive data sitting in context, come from naive harnesses: the MCP spec says nothing about how a harness should be built. CLIs do well because agents know the shell by heart, discover commands progressively and run them as code by default. But CLIs are a local black box with no standard auth or transport, so he proposes combining the two and demos MCPC, Apify's universal CLI client for MCP, along with early results from a 'connector evals' benchmark.",
    "key_points": [
      "The most-cited complaint is that MCP eats context. Early harnesses registered every tool up front, so 10 servers with 10 tools each meant about 100 tools, which could use roughly a third of the context before any work was done. Tool results were then appended too, so context grew and became stale, costing accuracy and money.",
      "The MCP specification says 'absolutely nothing' about how to design the harness. Using MCP effectively is the agent builder's job, not a flaw in the protocol.",
      "He covers three fixes. (1) Sub-agents keep the main context window clean, but the tokens still cost money and sensitive results like passwords still sit in some context. (2) Progressive tool discovery, introduced by Anthropic and then Cursor (e.g. Claude's tool search tool), loads tools only when they are needed. (3) Cloudflare's 'code mode' treats MCP tools as code, because models are better at writing code than at tool calling, which is 'an artificial construct' that has to be synthesized into training data. He says Cloudflare's code mode is hard to use and tied to their platform.",
      "Most agents and MCP clients are 'living in the dark ages': they don't support newer protocol features such as server instructions or asynchronous tasks.",
      "CLIs are progressive by default: agents call them only when needed, learn them from --help, and already know basic Unix commands from training data. Running bash is effectively code mode from the start, and labs can synthesize unlimited shell training data.",
      "CLIs are a local black box with no standard auth or transport protocol. Enterprises can't easily instrument them or inject credentials, and nobody ships 'CLI connectors'. His conclusion: CLI for the local interface, MCP for remote access.",
      "MCPC is a lightweight wrapper with no LLM, installable via npm or bun. It supports stdio and remote servers, OAuth login with credentials saved to the OS keychain, server instructions, a grep command for progressive tool discovery across servers, asynchronous tasks you can detach from and pick up later, persistent sessions shared between Claude Code and Codex, a --json flag on every command for piping through jq, proxies for sandboxing, and x402 wallet support. Its help text is optimized so agents can use it without external skills.",
      "Apify's 'connector evals' framework compares connectors (CLI vs MCP vs MCPC) rather than agents. Using Claude Code with Sonnet 5, MCPC and native CLI performed about the same on time and token cost. Raw MCP sometimes finished faster but used more tokens, and in other tests did worse. He calls the tests still fairly early."
    ],
    "takeaways": [
      "If you build an agent harness, don't register every MCP tool in context up front. Use progressive tool discovery or code mode.",
      "Don't put sensitive values or large data in model context. Sub-agents only push that problem further away; they don't remove it.",
      "Use MCP for standardized remote access (auth, sessions, connectors) and expose it to agents through a CLI behind the single bash tool, so results can be piped through tools like jq without spending context tokens.",
      "Evaluate connectors, not just agents. Measure time and token cost for CLI vs raw MCP vs a CLI wrapper on your own tasks.",
      "Check whether your MCP client supports newer protocol features such as server instructions and async tasks, since most don't."
    ],
    "topics": [
      "mcp",
      "agents",
      "cli",
      "context-engineering",
      "code-mode",
      "tool-discovery",
      "evals"
    ],
    "tools": [
      "MCP",
      "Anthropic",
      "Claude",
      "ChatGPT",
      "Claude Code",
      "Codex",
      "Cursor",
      "Cloudflare code mode",
      "Apify",
      "MCPC",
      "OpenClaw",
      "MCPorter",
      "npm",
      "bun",
      "jq",
      "OS keychain",
      "x402",
      "Sonnet 5",
      "Terminal Bench",
      "connector evals"
    ],
    "quotes": [
      {
        "text": "but that's not the problem of MCP that's problem of of the harness",
        "at": "03:26",
        "url": "https://www.youtube.com/watch?v=pAnLpiAG6Es&t=206s"
      },
      {
        "text": "so still most agents are living in the dark ages",
        "at": "07:04",
        "url": "https://www.youtube.com/watch?v=pAnLpiAG6Es&t=424s"
      },
      {
        "text": "but for remote access MCP is better.",
        "at": "10:05",
        "url": "https://www.youtube.com/watch?v=pAnLpiAG6Es&t=605s"
      },
      {
        "text": "So, please stop saying CLA is better than MCP because MCP plus CLI is the best.",
        "at": "18:15",
        "url": "https://www.youtube.com/watch?v=pAnLpiAG6Es&t=1095s"
      }
    ],
    "words": 3780
  },
  "summary_url": "/#pAnLpiAG6Es",
  "transcript": {
    "html": "/transcripts/pAnLpiAG6Es.html",
    "txt": "/transcripts/pAnLpiAG6Es.txt",
    "vtt": "/transcripts/pAnLpiAG6Es.vtt"
  }
}