<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Protocol on jyukki's Blog</title><link>https://jyukki.com/tags/protocol/</link><description>Recent content in Protocol on jyukki's Blog</description><generator>Hugo -- 0.147.0</generator><language>ko-kr</language><lastBuildDate>Tue, 23 Jun 2026 10:06:00 +0900</lastBuildDate><atom:link href="https://jyukki.com/tags/protocol/index.xml" rel="self" type="application/rss+xml"/><item><title>2026-06-23 개발 트렌드: MCP는 세션 기반 연결에서 검증 가능한 Tool Contract 인프라로 이동한다</title><link>https://jyukki.com/posts/2026-06-23-mcp-stateless-tool-contract-trend/</link><pubDate>Tue, 23 Jun 2026 10:06:00 +0900</pubDate><guid>https://jyukki.com/posts/2026-06-23-mcp-stateless-tool-contract-trend/</guid><description>2026-07-28 MCP 릴리스 후보와 최신 tool shape 사례를 바탕으로, MCP가 단순 연결 표준에서 stateless·routable·schema-validated agent infrastructure로 이동하는 흐름을 정리합니다.</description><content:encoded><![CDATA[<p>2026년 6월 현재 MCP(Model Context Protocol) 흐름에서 중요한 변화는 &ldquo;AI 도구를 연결한다&quot;는 초기 설명을 넘어섰다는 점입니다. 이제 핵심 질문은 어떤 서버를 붙일 수 있느냐가 아니라 <strong>그 도구 호출을 어떻게 라우팅하고, 검증하고, 감사하고, 비용을 통제할 것인가</strong>로 옮겨가고 있습니다.</p>
<p>공식 MCP 블로그는 2026-07-28 릴리스 후보를 공개하면서 stateless protocol core, extensions framework, Tasks, MCP Apps, authorization hardening, deprecation policy를 예고했습니다. 2026-06-23 기준 최종 스펙은 아직 2026-07-28 예정이므로 &ldquo;이미 최종 반영됐다&quot;가 아니라 &ldquo;마이그레이션 검증 기간에 들어갔다&quot;로 보는 게 정확합니다. 동시에 현재 MCP tool spec은 <code>outputSchema</code>, <code>structuredContent</code>, <code>resource_link</code> 같은 구조화된 결과 계약을 강조하고 있고, Microsoft Dataverse MCP Server 사례는 tool shape를 권한·감사·업무 경계의 단위로 설명합니다.</p>
<p>이 흐름은 이전에 정리한 <a href="/posts/2026-05-15-mcp-apps-conversation-native-ui-trend/">MCP Apps와 Conversation-Native UI</a>, <a href="/posts/2026-04-30-tool-contract-test-agent-runtime-trend/">Tool Contract Test와 Schema Canary</a>, <a href="/posts/2026-04-14-execution-receipt-agent-operations-trend/">Execution Receipt</a>, <a href="/posts/2026-06-22-ai-agent-observability-evidence-contract-trend/">AI 에이전트 관측성 증거 계약</a>과 이어집니다. MCP는 더 이상 &ldquo;에이전트용 플러그인 모음&quot;이 아니라, 에이전트가 실제 시스템을 만지는 접점의 운영 표준으로 커지고 있습니다.</p>
<h2 id="이-글에서-얻는-것">이 글에서 얻는 것</h2>
<ul>
<li>MCP 2026-07-28 릴리스 후보가 왜 운영팀과 플랫폼팀에 중요한지 이해합니다.</li>
<li>stateless core, <code>Mcp-Method</code>/<code>Mcp-Name</code> 라우팅, tool output schema가 어떤 실무 문제를 줄이는지 설명할 수 있습니다.</li>
<li>tool shape를 권한, 감사, 비용, schema validation 단위로 설계하는 기준을 잡을 수 있습니다.</li>
<li>MCP 서버를 운영 환경에 붙일 때 read-only 도구와 write-capable 도구를 다르게 다루는 체크리스트를 만들 수 있습니다.</li>
</ul>
<h2 id="핵심-개념이슈">핵심 개념/이슈</h2>
<h3 id="1-mcp는-세션-기반-연결에서-http-친화적-stateless-core로-이동-중이다">1) MCP는 세션 기반 연결에서 HTTP 친화적 stateless core로 이동 중이다</h3>
<p>초기 원격 MCP 서버 운영에서 부담이 컸던 부분은 session이었습니다. 클라이언트가 초기화 handshake를 거치고, 이후 요청에 session id를 들고 다니면 서버 배포는 자연스럽게 sticky session, shared session store, gateway body inspection 같은 구조로 기울어집니다. 작은 PoC에서는 문제가 작지만, 여러 팀이 붙는 production gateway에서는 운영 비용이 커집니다.</p>
<p>2026-07-28 릴리스 후보는 이 방향을 바꿉니다. protocol-level session과 <code>initialize</code> handshake를 제거하고, 요청마다 protocol version, client info, capability 정보를 <code>_meta</code>로 전달하는 모델을 제안합니다. HTTP transport에서는 <code>Mcp-Method</code>, <code>Mcp-Name</code> 같은 헤더로 gateway가 operation을 body inspection 없이 라우팅할 수 있게 됩니다.</p>
<p>이 변화의 의미는 단순한 성능 개선이 아닙니다.</p>
<ul>
<li>load balancer가 특정 server instance에 붙어 있을 필요가 줄어듭니다.</li>
<li>gateway가 JSON body를 열어보지 않아도 method/name 기준 rate limit을 걸 수 있습니다.</li>
<li><code>tools/list</code> 같은 결과에 cache freshness를 명시할 수 있어 tool discovery 비용을 줄일 수 있습니다.</li>
<li>trace context를 <code>_meta</code>에 실어 host, client SDK, MCP server, downstream API를 한 span tree로 연결할 수 있습니다.</li>
</ul>
<p>즉 MCP가 &ldquo;채팅 앱과 도구 서버의 연결&quot;에서 &ldquo;평범한 HTTP 인프라 위에서 운영 가능한 agent API layer&quot;로 이동하는 흐름입니다.</p>
<h3 id="2-tool-result는-자연어-응답이-아니라-검증-가능한-출력-계약이-된다">2) Tool result는 자연어 응답이 아니라 검증 가능한 출력 계약이 된다</h3>
<p>에이전트가 tool을 호출한 뒤 받는 결과가 자연어 문자열뿐이면, 다음 단계는 다시 모델의 추론에 의존합니다. &ldquo;성공했습니다&quot;라는 문장을 보고 실제로 생성된 id, 실패한 row, 권한 상태, 재시도 가능 여부를 안정적으로 파싱하기 어렵습니다. 그래서 MCP tool spec의 <code>structuredContent</code>와 <code>outputSchema</code>가 중요합니다.</p>
<p>현재 MCP tool spec은 tool definition에 <code>inputSchema</code>뿐 아니라 optional <code>outputSchema</code>를 둘 수 있게 합니다. tool이 구조화된 결과를 반환하면 서버는 schema를 만족해야 하고, 클라이언트는 검증해야 합니다. 또한 tool result는 text, image, audio뿐 아니라 resource link와 embedded resource를 포함할 수 있습니다.</p>
<p>실무적으로는 아래 기준을 세울 수 있습니다.</p>
<table>
  <thead>
      <tr>
          <th>도구 유형</th>
          <th>최소 출력 계약</th>
          <th>자동 실행 기준</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>조회 도구</td>
          <td><code>items</code>, <code>next_cursor</code>, <code>source</code>, <code>staleness_ms</code></td>
          <td>schema validation 통과 시 요약 가능</td>
      </tr>
      <tr>
          <td>변경 도구</td>
          <td><code>changed_resource_ids</code>, <code>receipt_id</code>, <code>rollback_hint</code></td>
          <td>approval과 audit log 없으면 자동 실행 금지</td>
      </tr>
      <tr>
          <td>파일/대용량 결과</td>
          <td><code>resource_link</code>, <code>mimeType</code>, <code>size</code>, <code>checksum</code></td>
          <td>원문을 context에 통째로 넣지 않음</td>
      </tr>
      <tr>
          <td>외부 전송 도구</td>
          <td><code>recipient</code>, <code>message_id</code>, <code>delivery_status</code></td>
          <td>사용자 확인과 중복 방지 key 필수</td>
      </tr>
      <tr>
          <td>배치 도구</td>
          <td><code>accepted_count</code>, <code>failed_count</code>, <code>dlq_ref</code></td>
          <td>실패율 threshold와 재처리 경로 필수</td>
      </tr>
  </tbody>
</table>
<p>이 기준은 <a href="/posts/2026-04-30-tool-contract-test-agent-runtime-trend/">Tool Contract Test</a>와 바로 연결됩니다. MCP 서버를 만들 때 &ldquo;모델이 알아서 읽겠지&quot;가 아니라, 도구 결과를 다음 도구와 검증기가 안정적으로 소비할 수 있게 schema를 먼저 잡아야 합니다.</p>
<h3 id="3-tool-shape는-거버넌스-경계다">3) Tool shape는 거버넌스 경계다</h3>
<p>Microsoft Dataverse MCP Server의 최근 설명에서 눈에 띄는 포인트는 &ldquo;MCP를 지원한다&quot;보다 &ldquo;어떤 tools가 노출되는지&quot;를 강조한다는 점입니다. <code>search_data</code>, <code>create_record</code>, <code>update_record</code>, <code>delete_record</code>, <code>read_query</code>, <code>describe</code>, 파일 업로드/다운로드 같은 tool 목록 자체가 에이전트가 할 수 있는 일의 경계입니다.</p>
<p>이건 개발자 경험만의 문제가 아닙니다. tool shape는 아래 운영 질문에 답하는 단위가 됩니다.</p>
<ul>
<li>어떤 tool은 read-only인가, 어떤 tool은 write-capable인가</li>
<li>어떤 tool은 explicit user approval이 필요한가</li>
<li>어떤 tool은 role-based access control을 통과해야 하는가</li>
<li>어떤 tool result가 감사 로그와 receipt를 남겨야 하는가</li>
<li>어떤 client surface에서 어떤 tool을 허용할 것인가</li>
</ul>
<p>따라서 MCP 서버 설계는 endpoint를 많이 여는 경쟁이 아닙니다. 좋은 tool shape는 권한 경계가 명확하고, 이름과 schema만 봐도 위험도를 분류할 수 있으며, 실패 결과가 기계적으로 처리됩니다. 반대로 <code>execute_sql</code>, <code>run_command</code>, <code>do_action</code> 같은 만능 도구는 초기 개발은 빠르지만 운영 거버넌스가 급격히 어려워집니다.</p>
<h3 id="4-tool이-많아질수록-progressive-disclosure와-code-execution이-필요해진다">4) Tool이 많아질수록 progressive disclosure와 code execution이 필요해진다</h3>
<p>MCP 서버가 몇 개일 때는 모델 context에 tool definition을 전부 넣어도 버틸 수 있습니다. 하지만 서버가 수십 개, tool이 수백 개로 늘면 tool description 자체가 비용과 latency가 됩니다. Anthropic은 MCP와 code execution을 결합해 필요한 tool definition만 읽고, 대용량 중간 결과는 실행 환경에서 처리하는 접근을 설명했습니다.</p>
<p>이 흐름의 핵심은 &ldquo;모델에게 모든 것을 보여주지 말고, 필요한 interface만 단계적으로 보여주자&quot;입니다. 예를 들어 10,000 row spreadsheet를 그대로 모델 context에 넣는 대신, code execution 환경에서 필터링하고 상위 5건과 summary만 모델에 넘길 수 있습니다. 대용량 파일은 <code>resource_link</code>로 전달하고, tool output은 schema와 checksum으로 검증할 수 있습니다.</p>
<p>도입 기준은 아래처럼 잡을 수 있습니다.</p>
<ul>
<li>노출 tool이 <strong>30개 이상</strong>이면 tool search 또는 namespace 기반 progressive disclosure를 둔다.</li>
<li>단일 tool result가 <strong>10KB 이상</strong>이면 resource link 또는 summary+fetch 구조를 검토한다.</li>
<li>tool chain이 <strong>3단계 이상</strong>이고 중간 결과가 큰 경우 code execution 또는 workflow runner를 검토한다.</li>
<li>개인정보/고객 데이터가 중간 결과에 포함되면 원문 context 주입을 기본 금지한다.</li>
<li>agent-generated code 실행은 sandbox, network allowlist, CPU/memory/time limit 없이는 production에 붙이지 않는다.</li>
</ul>
<p>즉 code execution은 만능 해법이 아닙니다. token 비용과 context 누수를 줄여 주지만, sandbox 운영과 보안 감시라는 새 비용이 생깁니다.</p>
<h3 id="5-authorization-hardening은-mcp의-다음-병목이다">5) Authorization hardening은 MCP의 다음 병목이다</h3>
<p>MCP가 local desktop demo에서 enterprise workflow로 이동하면 인증/인가가 병목이 됩니다. 하나의 AI client가 여러 MCP server와 authorization server를 오가면 issuer mix-up, 잘못된 redirect URI, scope accumulation, refresh token 처리 같은 문제가 곧 운영 리스크가 됩니다.</p>
<p>2026-07-28 릴리스 후보는 OAuth/OIDC 배포 현실에 맞춘 authorization hardening을 예고합니다. 이건 보안팀만의 이슈가 아닙니다. 개발팀도 MCP server를 만들 때 아래를 기본값으로 봐야 합니다.</p>
<ul>
<li>server별 issuer와 audience를 명확히 검증한다.</li>
<li>client registration과 redirect URI 정책을 surface별로 분리한다.</li>
<li>write-capable tool은 read scope와 별도 scope를 쓴다.</li>
<li>scope escalation은 step-up approval과 receipt를 남긴다.</li>
<li>token, tool args, tool result가 logs와 traces에 그대로 남지 않게 마스킹한다.</li>
</ul>
<p>이 기준은 <a href="/posts/2026-05-24-mcp-native-secret-scanning-shift-left-trend/">MCP Native Secret Scanning</a>과도 연결됩니다. MCP tool 호출은 곧 권한 있는 API 호출이므로, 인증 경계와 secret scanning이 tool contract의 일부가 되어야 합니다.</p>
<h2 id="실무-적용">실무 적용</h2>
<h3 id="1-mcp-서버-인벤토리를-tool-단위로-다시-만든다">1) MCP 서버 인벤토리를 tool 단위로 다시 만든다</h3>
<p>서버 단위 목록만 있으면 부족합니다. 운영에 필요한 것은 tool 단위 목록입니다.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>server: dataverse-prod
</span></span><span style="display:flex;"><span>tool: create_record
</span></span><span style="display:flex;"><span>risk: write
</span></span><span style="display:flex;"><span>scope: dataverse.record.write
</span></span><span style="display:flex;"><span>approval: required for production
</span></span><span style="display:flex;"><span>output_schema: required
</span></span><span style="display:flex;"><span>receipt: required
</span></span><span style="display:flex;"><span>rate_limit: 30/min per user
</span></span><span style="display:flex;"><span>audit_retention: 180 days
</span></span><span style="display:flex;"><span>owner: platform-data
</span></span></code></pre></div><p>처음부터 완벽한 catalog를 만들 필요는 없습니다. 다만 production에 붙은 MCP server는 최소한 read-only, write, external-send, admin, file, code-exec 그룹으로 분류해야 합니다. 이 분류가 없으면 &ldquo;어떤 tool을 에이전트에게 열어도 되는가&quot;를 매번 감으로 결정하게 됩니다.</p>
<h3 id="2-outputschema-없는-도구는-자동-실행에서-제외한다">2) outputSchema 없는 도구는 자동 실행에서 제외한다</h3>
<p>사람이 직접 확인하는 low-risk 조회라면 text result도 허용할 수 있습니다. 하지만 agent workflow가 다음 단계를 자동으로 이어가는 도구라면 <code>outputSchema</code>가 사실상 필수입니다.</p>
<p>실무 gate는 이렇게 둘 수 있습니다.</p>
<ul>
<li>read-only summary tool: text 허용, source와 timestamp는 필수</li>
<li>structured query tool: <code>outputSchema</code> 또는 JSON schema fixture 필수</li>
<li>state-changing tool: <code>outputSchema</code>, receipt id, changed resource id, rollback hint 필수</li>
<li>external-send tool: recipient, message id, delivery status, idempotency key 필수</li>
<li>admin/delete tool: approval id와 audit log reference 없으면 실행 금지</li>
</ul>
<p>이 기준을 CI로 옮기면 좋습니다. MCP server PR에서 tool definition이 바뀌면 schema snapshot diff, backward compatibility check, example response validation을 실행합니다. 사람이 tool description 문장을 읽고 리뷰하는 것보다 훨씬 안정적입니다.</p>
<h3 id="3-2026-07-28-후보-변화는-인프라팀-이슈로-본다">3) 2026-07-28 후보 변화는 인프라팀 이슈로 본다</h3>
<p>MCP 2026-07-28 final이 예정대로 나온다면, remote MCP server 운영팀은 미리 확인할 것이 있습니다.</p>
<ul>
<li>session id나 initialize handshake에 의존하는 client/server 코드가 있는가</li>
<li>gateway가 request body를 파싱해 routing/rate limit을 걸고 있는가</li>
<li><code>tools/list</code> 결과 cache와 invalidation 정책이 있는가</li>
<li>traceparent/tracestate를 host부터 downstream까지 연결할 수 있는가</li>
<li>roots, sampling, logging 같은 deprecation 대상 기능에 의존하고 있는가</li>
<li>JSON Schema 2020-12 기능을 쓸 때 validation time과 schema depth 제한이 있는가</li>
</ul>
<p>권장 일정은 보수적으로 잡습니다. 2026년 6월 말까지 inventory를 만들고, 7월 중순까지 staging에서 candidate compatibility test를 돌리고, final spec이 나온 뒤 production canary를 5~10%부터 시작합니다. &ldquo;스펙이 나왔으니 바로 교체&quot;가 아니라, client SDK와 server SDK의 지원 수준을 같이 확인해야 합니다.</p>
<h3 id="4-tool-호출-receipt를-표준화한다">4) Tool 호출 receipt를 표준화한다</h3>
<p>에이전트가 tool을 호출했다면 실행 증거가 남아야 합니다. 최소 receipt는 아래 필드를 포함합니다.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;tool_call_id&#34;</span>: <span style="color:#f1fa8c">&#34;tc_20260623_001&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;server&#34;</span>: <span style="color:#f1fa8c">&#34;crm-mcp&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;tool&#34;</span>: <span style="color:#f1fa8c">&#34;update_record&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;schema_version&#34;</span>: <span style="color:#f1fa8c">&#34;2026-06-01&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;risk&#34;</span>: <span style="color:#f1fa8c">&#34;write&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;approval_id&#34;</span>: <span style="color:#f1fa8c">&#34;appr_123&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;args_hash&#34;</span>: <span style="color:#f1fa8c">&#34;sha256:...&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;result_status&#34;</span>: <span style="color:#f1fa8c">&#34;success&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;changed_resource_ids&#34;</span>: [<span style="color:#f1fa8c">&#34;account:42&#34;</span>],
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;rollback_hint&#34;</span>: <span style="color:#f1fa8c">&#34;restore account owner from previous_owner_id&#34;</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#ff79c6">&#34;trace_id&#34;</span>: <span style="color:#f1fa8c">&#34;00-...&#34;</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>원문 args를 모두 저장할 필요는 없습니다. 민감정보가 많다면 hash, schema version, validation result, changed resource id를 남기는 편이 안전합니다. 중요한 것은 나중에 &ldquo;누가 어떤 권한으로 무엇을 바꿨는가&quot;를 재구성할 수 있어야 한다는 점입니다.</p>
<h2 id="트레이드오프주의점">트레이드오프/주의점</h2>
<p>첫째, stateless protocol core는 서버 운영을 단순하게 만들지만 application state를 없애지는 않습니다. 장바구니, 브라우저 세션, 장기 작업, 파일 업로드처럼 상태가 필요한 업무는 explicit handle을 tool result로 반환하고 다음 호출에서 인자로 전달해야 합니다. 숨겨진 session이 사라졌을 뿐, 상태 설계 책임은 여전히 남습니다.</p>
<p>둘째, schema가 많아지면 개발 속도가 느려질 수 있습니다. 작은 내부 도구까지 모든 output을 엄격한 schema로 묶으면 실험 속도가 떨어집니다. 그래서 production 자동 실행, write-capable tool, external-send tool부터 엄격하게 시작하는 편이 좋습니다.</p>
<p>셋째, code execution은 context 비용을 줄이지만 공격 표면을 키웁니다. agent-generated code가 파일, 네트워크, secret, 내부 API에 접근한다면 사실상 작은 runtime platform을 운영하는 것입니다. sandbox, egress policy, resource limit, audit log가 없으면 direct tool call보다 위험해질 수 있습니다.</p>
<p>넷째, MCP server가 늘어날수록 discoverability와 governance가 충돌합니다. 개발자는 많은 tool을 빨리 붙이고 싶고, 보안팀은 적은 tool을 명확히 통제하고 싶어합니다. 해법은 tool 수를 무조건 줄이는 것이 아니라 tool shape, risk class, approval, schema, receipt를 표준화하는 것입니다.</p>
<h2 id="체크리스트-또는-연습">체크리스트 또는 연습</h2>
<h3 id="체크리스트">체크리스트</h3>
<ul>
<li><input disabled="" type="checkbox"> production MCP server를 server 단위가 아니라 tool 단위로 inventory했다.</li>
<li><input disabled="" type="checkbox"> read-only, write, external-send, admin, file, code-exec tool을 분류했다.</li>
<li><input disabled="" type="checkbox"> 자동 실행되는 tool은 <code>outputSchema</code> 또는 동등한 response fixture로 검증한다.</li>
<li><input disabled="" type="checkbox"> write-capable tool은 approval id, receipt id, changed resource id를 남긴다.</li>
<li><input disabled="" type="checkbox"> 큰 결과와 파일은 raw context 대신 <code>resource_link</code> 또는 fetch 가능한 resource로 전달한다.</li>
<li><input disabled="" type="checkbox"> tool result와 trace에 token, secret, 개인정보가 원문으로 남지 않게 마스킹한다.</li>
<li><input disabled="" type="checkbox"> MCP 2026-07-28 후보 변화 중 session, routing header, trace propagation, deprecation 의존성을 점검했다.</li>
<li><input disabled="" type="checkbox"> 30개 이상 tool이 노출된 client는 search/progressive disclosure 또는 namespace lazy loading을 둔다.</li>
</ul>
<h3 id="연습">연습</h3>
<ol>
<li>현재 팀의 MCP 또는 agent tool 10개를 골라 read-only/write/admin/external-send로 분류해 보세요.</li>
<li>가장 위험한 write tool 하나에 대해 <code>inputSchema</code>, <code>outputSchema</code>, receipt field, approval field를 설계해 보세요.</li>
<li>tool result가 100KB 이상인 흐름을 찾아 raw context 주입 대신 resource link와 summary 구조로 바꿔 보세요.</li>
<li>gateway가 <code>Mcp-Method</code>, <code>Mcp-Name</code>, tool risk class 기준으로 rate limit을 걸 수 있다고 가정하고 정책 표를 작성해 보세요.</li>
</ol>
<h2 id="참고한-흐름">참고한 흐름</h2>
<ul>
<li>Model Context Protocol Blog: The 2026-07-28 MCP Specification Release Candidate<br>
<a href="https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/">https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/</a></li>
<li>Model Context Protocol Specification 2025-06-18: Tools<br>
<a href="https://modelcontextprotocol.io/specification/2025-06-18/server/tools">https://modelcontextprotocol.io/specification/2025-06-18/server/tools</a></li>
<li>Microsoft Power Platform Blog: Dataverse MCP Server, Understanding the New Tool Shape<br>
<a href="https://www.microsoft.com/en-us/power-platform/blog/2026/06/08/dataverse-mcp-server-understanding-the-new-tool-shape/">https://www.microsoft.com/en-us/power-platform/blog/2026/06/08/dataverse-mcp-server-understanding-the-new-tool-shape/</a></li>
<li>Anthropic Engineering: Code execution with MCP<br>
<a href="https://www.anthropic.com/engineering/code-execution-with-mcp">https://www.anthropic.com/engineering/code-execution-with-mcp</a></li>
</ul>
<p>오늘의 결론은 이렇습니다. MCP의 다음 단계는 더 많은 도구를 붙이는 경쟁이 아니라, 붙인 도구를 운영 가능한 계약으로 만드는 일입니다. stateless routing, structured output, tool shape, authorization, receipt가 함께 갖춰질 때 에이전트는 &ldquo;쓸 수 있는 장난감&quot;이 아니라 &ldquo;감사 가능한 작업자&quot;가 됩니다.</p>
]]></content:encoded></item></channel></rss>