MCP TypeScript SDK 2.4.0 เป็น SDK ทางการตัวแรกที่ปล่อย Skills over MCP (SEP-2640) ใน release จริง — loadSkills() เสิร์ฟทั้งโฟลเดอร์ SKILL.md, SkillsClient ตรวจ digest ทุกไฟล์ ส่วน Python/C# merge แล้วแต่ยังไม่ออก release
23 ต.ค. 2026 (18:20 UTC ตามเวลา publish บน npm) ทีม Model Context Protocol ออก TypeScript SDK 2.4.0 (@modelcontextprotocol/server, client, core เวอร์ชัน 2.4.0) และไฮไลต์ของ release นี้คือ “Skills over MCP (SEP-2640)” เซิร์ฟเวอร์ MCP เผยแพร่ Agent Skills ทั้งโฟลเดอร์ได้ด้วย loadSkills(folder) แล้วเรียก skills.attach(server) ส่วนฝั่ง client มี SkillsClient ไว้ list, อ่าน และตรวจสอบสกิล
เรื่องนี้เป็นภาคต่อของโพสต์ SEP-2640 ขึ้นสถานะ Final เมื่อ 16 ก.ย. ตอนนั้นสเปกนิ่งแล้ว แต่ยังไม่มี SDK ทางการตัวไหนมีโค้ดที่ใช้ได้จริง ผ่านมาหกสัปดาห์ TypeScript เป็นตัวแรกที่ปล่อยออกมาใน release ส่วน Python SDK merge PR #3485 ไปตั้งแต่ 11 ต.ค. แต่ release ล่าสุดยังเป็น v2.3.0 (2 ต.ค.) ซึ่งไม่มี skills และ C# SDK เพิ่ง merge PR #1856 เมื่อ 23 ต.ค. หลังออก v2.3.0 ไปแล้ว (20 ต.ค.) ส่วน Go SDK release ล่าสุด v1.8.0 ก็ยังไม่มีสกิล
ฝั่งเซิร์ฟเวอร์: ชี้ไปที่โฟลเดอร์แล้วจบ
ทุกโฟลเดอร์ที่มี SKILL.md นับเป็นหนึ่งสกิล ส่วนโฟลเดอร์ชั้นบนใช้จัดกลุ่มใน URI เท่านั้น:
import { McpServer } from '@modelcontextprotocol/server';
import { loadSkills } from '@modelcontextprotocol/server/ext/skills/node';
const skills = await loadSkills('./skills');
const server = new McpServer({ name: 'team-skills', version: '1.0.0' });
skills.attach(server);
โฟลเดอร์ skills/acme/billing/refunds/SKILL.md จะได้ URI skill://acme/billing/refunds/SKILL.md ตามรูปแบบในสเปก ตัว catalog เก็บแค่ metadata (path, ขนาด, SHA-256 digest, frontmatter) และอ่านไฟล์จากดิสก์ทุกครั้งที่มีคำขอ แต่จะส่งไฟล์ออกไปก็ต่อเมื่อไบต์ยังตรงกับ digest ที่ประกาศไว้ ถ้ามีคนแก้ไฟล์บนดิสก์แล้วยังไม่ได้เรียก reload() เซิร์ฟเวอร์จะตอบ error แทนการส่งเนื้อหาที่ยังไม่ผ่านการตรวจ ส่วน reload() สแกนใหม่แล้วสลับ catalog ทั้งชุดทีเดียว ถ้าสแกนล้มเหลว catalog เดิมจะยังให้บริการต่อ
ใครไม่มี file system (เช่น Workers หรือเทสต์) ใช้ memorySkillFiles({...}) ได้ หรือจะ implement interface SkillFiles ที่มีแค่สองฟังก์ชัน (list กับ read) เพื่อดึงสกิลจาก object storage หรือฐานข้อมูลของตัวเองก็ได้ สกิลที่ไม่ผ่านการตรวจจะถูกข้ามพร้อมคำเตือน หรือทำให้โหลดล้มเหลวทั้งชุดถ้าตั้ง strict: true
ฝั่ง client: strict ไว้ก่อน
import { SkillsClient } from '@modelcontextprotocol/client/ext/skills';
const skills = new SkillsClient(client);
const { skills: entries } = await skills.list();
const git = entries.find(e => e.frontmatter.name === 'git-workflow')!;
const manifest = await skills.read(git); // ตรวจขนาด + SHA-256 + frontmatter
ค่าเริ่มต้นของ list() คือโยน error ทันทีถ้ามี entry ไหนไม่ผ่าน validation หรือมี URI ซ้ำกัน host ที่อยากเก็บสกิลที่ใช้ได้ไว้ก่อนต้องตั้ง skipInvalid: true เอง แล้วค่อยอ่านรายการที่ถูกปฏิเสธจาก invalid ส่วน read(entry) จะเทียบขนาดกับ digest ของไฟล์ แล้วเทียบ frontmatter ทีละฟิลด์กับ entry ที่ได้จาก listing
รายละเอียดเชิงออกแบบจาก PR #3047 ที่ควรรู้:
- ใช้ได้ทั้งสองเวอร์ชันโปรโตคอล สเปก stable กำหนดไว้แค่ 2026-07-28 แต่ SDK backport ไปที่ 2025-11-25 ด้วย (ไม่มีฟิลด์ caching) ผู้เขียน PR ระบุว่าถ้า working group ตัดสินว่าจะให้ใช้ได้เฉพาะ 2026 ก็จะซ่อน extension นี้บนการเชื่อมต่อ 2025 ทั้ง SDK
- ไม่มี dependency YAML ตอนรันไทม์ ใช้ parser แบบ subset ที่เขียนเอง (typing แบบ YAML 1.2 เช่น
yesเป็นสตริง ไม่ใช่true) เพิ่มขนาดราว 5 KB gzipped และอยู่เฉพาะใน subpathext/skills - ไม่มี breaking change เพราะโค้ดสกิลอยู่ใน subpath แยก package root ไม่โหลดอะไรเพิ่ม
- ใน release notes ระบุว่า
attachยัง experimental และอาจเปลี่ยนใน minor release (PR #3080)
เรื่องอื่นใน 2.4.0 ที่อาจทำให้โค้ดเดิมพัง
x-mcp-headerบนพารามิเตอร์ชนิดnumberถูกปฏิเสธ ตามที่สเปก 2026-07-28 กำหนด client จะไม่แสดง tool นั้นในรายการ และเซิร์ฟเวอร์ตอบ-32020ถ้ามีคนเรียก ทางแก้คือเปลี่ยนเป็นz.int()หรือเอา annotation ออกoutputSchemaที่สร้างจากz.object(...).meta({ id })บนการเชื่อมต่อ 2025-11-25 ไม่ถูกห่อใน{ result }อีกต่อไป ให้อ่านstructuredContentตรง ๆ- Ajv ที่ bundle มาใช้ fast-uri 3.1.8 ซึ่งปฏิเสธ
$id/$refที่ scheme ไม่ถูกต้อง เช่นmy_tool:output - เพิ่ม
scopeForRefresh(tokens)แบบ opt-in สำหรับ authorization server ที่ไม่ยอม refresh token ถ้าไม่ส่งscopeมาด้วย (ตัวอย่างในโน้ตคือ Microsoft Entra ID ที่ตอบAADSTS90009)
อีกจุดที่น่าสนใจคือคู่มือ skills และคู่มือ upgrade จาก v1 เป็น v2 ถูกแพ็กเป็น Agent Skill ด้วย ติดตั้งให้ coding agent ได้ด้วย npx skills add modelcontextprotocol/typescript-sdk --skill mcp-typescript-sdk-skills
มุมมอง AI Curator
ตลอดเดือนที่ผ่านมาเราเลือกไม่เขียนเรื่องนี้ซ้ำ เพราะสเปกที่ Final แล้วยังไม่ใช่ฟีเจอร์ที่ใช้งานได้ สิ่งที่ต้องรอคือ SDK ที่ออก release จริง ตอนนี้ TypeScript ปล่อยแล้ว ทีมที่ทำ MCP server ด้วย Node/Bun/Deno เริ่มย้ายสกิลภายในองค์กร (คู่มือ deploy, กฎ code review, ขั้นตอน refund ฯลฯ) ไปเสิร์ฟจากเซิร์ฟเวอร์กลางได้ทันที แทนที่จะก๊อปโฟลเดอร์ .claude/skills ไปทุก repo
แต่ต้องแยกให้ออกว่าตอนนี้มีแค่ฝั่ง SDK สกิลจะถูกใช้จริงก็ต่อเมื่อ host อย่าง Claude Code, Cursor หรือ Codex เรียก skills/list และ ณ ตอนเขียน เรายังไม่พบประกาศ public ว่า host ตัวไหนรองรับแล้ว ผมจึงแนะนำว่าทีมไทยที่สนใจควรเริ่มจัดสกิลให้อยู่ในรูปแบบโฟลเดอร์ + SKILL.md ที่ถูกต้องตั้งแต่ตอนนี้ (ชื่อโฟลเดอร์ตรงกับ name ใน frontmatter) เพราะรูปแบบนี้ใช้ได้ทั้งแบบไฟล์ในเครื่องและแบบเสิร์ฟผ่าน MCP
ที่ชอบคือดีฟอลต์ของ SDK เลือกทางปลอดภัยทุกจุด เช่น ไม่ส่งไฟล์ที่ digest ไม่ตรง และ list() โยน error ถ้ามี entry ผิด เพราะสกิลคือ “คำสั่งที่โมเดลจะทำตาม” เซิร์ฟเวอร์ที่ถูกแก้ไฟล์กลางทางจึงเท่ากับช่องทาง prompt injection ตรง ๆ อย่างไรก็ตาม digest พิสูจน์ได้แค่ว่าไฟล์ไม่ถูกแก้ระหว่าง listing กับ read ไม่ได้พิสูจน์ว่าเจ้าของเซิร์ฟเวอร์ไว้ใจได้ การเลือกว่าจะเชื่อเซิร์ฟเวอร์ไหนยังเป็นหน้าที่ของ host และของเรา ขั้นต่อไปที่ต้องจับตาคือ Python SDK release ที่มี #3485 และ host ตัวแรกที่เปิดให้ใช้ skills/list แบบ public
แหล่งข่าว
อ่านเพิ่มในหมวด AI Skills
Anthropic แนะ “ยุบ subagent กลับเข้า agent loop เดียว” พร้อมปล่อย single-agent-loop-kit เป็น skill ของ Claude Code ที่ช่วย audit ระบบ multi-agent แล้วพับทีละตัวโดยวัดด้วย eval ก่อน-หลัง
บทความ 22 ต.ค. จากทีม Applied AI ของ Anthropic บอกว่า agent ตัวเดียวที่โหลด skill และ tool เมื่อจำเป็น มักให้คุณภาพดีกว่า ถูกกว่า และเร็วกว่าการแตก subagent ตามผังองค์กร ลูกค้ารายหนึ่งเร็วขึ้นราว 2 เท่า พร้อมปล่อย single-agent-loop-kit (Apache-2.0) เป็น skill ที่ audit ระบบเดิมแล้วพับ subagent ทีละตัว และเก็บไว้เฉพาะตัวที่ eval บอกว่ายังจำเป็น
Anthropic ยก Agent Skills (มาตรฐาน SKILL.md) ให้ Agentic AI Foundation ใต้ Linux Foundation ต่อจาก MCP — 70+ แพลตฟอร์มรองรับแล้ว ทั้ง ChatGPT, Cursor, Copilot และ VS Code
เมื่อ 22 ต.ค. 2026 Anthropic มอบมาตรฐาน Agent Skills ให้ Agentic AI Foundation (AAIF) ใต้ Linux Foundation พร้อมชื่อ โลโก้ GitHub org และโดเมน agentskills.io มาตรฐานจะมี Technical Steering Committee จากหลายบริษัทดูแล และมี maintainer จาก Anthropic, Google, OpenAI ที่ทำงานในนามบุคคล roadmap แรกที่เสนอคือ versioned release, กระบวนการ proposal และแนวทาง security สำหรับคนเขียนและติดตั้ง skill
diagram-design: Agent Skill วาดไดอะแกรม 44 แบบเป็น HTML+SVG ไฟล์เดียวตามสีแบรนด์ — ดาวทะลุ 50,000 ขึ้น GitHub Trending
diagram-design ของ Cathryn Lavery เป็น Agent Skill (MIT) ที่สอนเอเจนต์ให้วาดไดอะแกรมแนว editorial 44 ประเภท ออกมาเป็นไฟล์ HTML ที่ฝัง SVG ไฟล์เดียว ดึงสีและฟอนต์จากเว็บไซต์ของเราได้ และแปลงไฟล์ Mermaid, draw.io หรือ Excalidraw เดิมมาวาดใหม่ได้ รีโปมีดาวกว่า 50,000 ดวง ติด GitHub Trending และออกเวอร์ชัน 2.6.74 เมื่อ 10 ต.ค.