ตัวแทนข้อมูลเป็นเซิร์ฟเวอร์ Model Context Protocol (พรีวิว)

Model Context Protocol (MCP) เป็นมาตรฐานที่เกิดขึ้นใหม่ในภูมิทัศน์ AI ที่ช่วยให้ระบบ AI สามารถเชื่อมต่อกับเครื่องมือและข้อมูลภายนอกตัวเองได้ กําหนดวิธีที่โมเดล AI สามารถค้นพบสิ่งที่พร้อมใช้งานและโต้ตอบกับโมเดลนั้นในลักษณะที่สอดคล้องกัน แทนที่จะสร้างการผสานรวมแบบครั้งเดียว MCP เสนอวิธีมาตรฐานในการเสียบสิ่งต่าง ๆ ที่ใช้งานได้กับแอปและบริการต่างๆ แนวทางนี้ช่วยให้ระบบ AI ก้าวไปไกลกว่าความรู้ในตัวได้ง่ายขึ้นมากในขณะที่รักษาสิ่งต่าง ๆ ให้สอดคล้องกัน นอกจากนี้ยังช่วยให้ทีมเคลื่อนที่ได้เร็วขึ้น เนื่องจากพวกเขาไม่จําเป็นต้องคิดค้นการเชื่อมต่อเดิมใหม่ทุกครั้ง

MCP มีสองส่วนหลัก: ไคลเอนต์และเซิร์ฟเวอร์

ไคลเอ็นต์ MCP คือแอปหรือประสบการณ์ที่ผู้ใช้โต้ตอบด้วย เป็นที่ที่คุณถามคําถามหรือกระตุ้นการกระทํา ไคลเอ็นต์ติดต่อเซิร์ฟเวอร์ MCP เพื่อค้นหาเครื่องมือและใช้งาน ตัวอย่างเช่น Visual Studio Code สามารถทําหน้าที่เป็นไคลเอ็นต์ MCP เมื่อเชื่อมต่อกับเครื่องมือภายนอกเพื่อดึงข้อมูล หรือช่วยคุณเขียนและเรียกใช้โค้ด

เซิร์ฟเวอร์ MCP แสดงเครื่องมือ ข้อมูล หรือบริการเพื่อให้ไคลเอ็นต์สามารถใช้งานได้ มันบอกลูกค้าว่ามีอะไรบ้างและใช้งานอย่างไร ตัวอย่างเช่น ตัวแทนข้อมูล Fabric สามารถทําหน้าที่เป็นเซิร์ฟเวอร์ MCP ได้โดยการเปิดเผยข้อมูลองค์กรและคิวรีที่ระบบ AI สามารถใช้ได้

ไคลเอ็นต์และเซิร์ฟเวอร์ร่วมกันทําให้ง่ายต่อการเชื่อมต่อระบบ AI กับข้อมูลและการดําเนินการจริงโดยไม่ต้องสร้างการผสานรวมแบบกําหนดเองทุกครั้ง

สําคัญ

คุณลักษณะนี้อยู่ในแสดงตัวอย่าง

สําคัญ

เมื่อคุณใช้ตัวแทนข้อมูล Fabric เป็นเซิร์ฟเวอร์ MCP การตอบกลับที่ส่งคืนโดยตัวแทนข้อมูลอาจถูกส่งออกไปนอกขอบเขตการปฏิบัติตามข้อกําหนดหรือภูมิภาคทางภูมิศาสตร์ของ Fabric และประมวลผลหรือจัดเก็บตามข้อกําหนดและนโยบายการจัดการข้อมูลของไคลเอ็นต์ MCP ที่คุณใช้

ข้อกําหนดเบื้องต้น

วิธีการทำงาน

ตัวแทนข้อมูล Fabric ที่เผยแพร่จะแสดงเครื่องมือ MCP เดียว เครื่องมือนั้นแสดงถึงตัวแทนข้อมูลเอง ดังนั้นไคลเอ็นต์ MCP จึงส่งคําถามไปยังเครื่องมือและรับคําตอบกลับมาซึ่งมีพื้นฐานมาจากข้อมูลที่ตัวแทนข้อมูลสามารถเข้าถึงได้ใน Fabric OneLake

เนื่องจากไคลเอ็นต์ตัดสินใจว่าจะเรียกใช้เครื่องมือเมื่อใด คําอธิบายตัวแทนข้อมูลจึงมีความสําคัญ เมื่อคุณเผยแพร่ตัวแทนข้อมูล คําอธิบายของตัวแทนข้อมูลจะกลายเป็นคําอธิบายเครื่องมือที่เซิร์ฟเวอร์ MCP โฆษณา ลูกค้าและผู้ประสานงานจะอ่านคําอธิบายนั้นเพื่อตัดสินใจว่าจะโทรหาตัวแทนข้อมูลเมื่อใดและอย่างไร ดังนั้นให้เขียนคําอธิบายที่ชัดเจนและเฉพาะเจาะจงซึ่งอธิบายสิ่งที่ตัวแทนรู้และประเภทของคําถามที่สามารถตอบได้

คุณสามารถใช้เซิร์ฟเวอร์ MCP ของตัวแทนข้อมูลจากไคลเอ็นต์ MCP ใดก็ได้ ไม่ใช่แค่เครื่องมือหรือเครื่องมือแก้ไขเพียงเครื่องมือเดียว ตราบใดที่ลูกค้าของคุณพูด MCP ผ่าน HTTP ที่สตรีมได้ และสามารถแนบโทเค็นผู้ถือ Fabric ที่ถูกต้องกับคําขอได้ ก็สามารถเชื่อมต่อได้ ส่วนที่ตามมาแสดงไคลเอ็นต์สองตัว: สคริปต์ Python และ Visual Studio Code ปลายทางเดียวกันและโทเค็นเดียวกันใช้ได้กับไคลเอ็นต์ MCP อื่นๆ ที่คุณสร้างหรือนํามาใช้

อะไรก็ตามที่พูดคุยกับเซิร์ฟเวอร์ MCP จะต้องพูด MCP ดังนั้นตามคําจํากัดความจะทําหน้าที่เป็นไคลเอนต์ MCP คําว่า "ไคลเอ็นต์ MCP" ไม่ได้หมายถึงผลิตภัณฑ์หรือ SDK ที่เฉพาะเจาะจง หมายถึงรหัสใด ๆ ที่เป็นไปตามโปรโตคอล ตําแหน่งข้อมูลไม่ใช่ REST API ธรรมดาที่คุณสามารถส่งคําขอโดยอําเภอใจได้ การเชื่อมต่อเป็นไปตามโฟลว์ข้อความ MCP: initialize การจับ tools/list มือ การโทรเพื่อค้นหาเครื่องมือ และการ tools/call ร้องขอให้ถามคําถาม SDK เช่น MCP Python SDK จะจัดการโฟลว์นั้นให้คุณ แต่คุณยังสามารถนําไปใช้ด้วยตนเองผ่าน HTTP ธรรมดาได้ตราบใดที่คําขอของคุณเป็นไปตามโปรโตคอล ไคลเอ็นต์ HTTP ทั่วไปที่ข้ามรูปแบบการจับมือและข้อความจะไม่ทํางาน

Note

เซิร์ฟเวอร์ MCP ของตัวแทนข้อมูลไม่รองรับการลงทะเบียนไคลเอ็นต์แบบไดนามิก ไคลเอ็นต์ของคุณไม่สามารถลงทะเบียนตัวเองและรับข้อมูลประจําตัวโดยอัตโนมัติผ่านโปรโตคอล แต่คุณจะได้รับโทเค็น Fabric ผ่านขั้นตอนการรับรองความถูกต้องของคุณเอง และแนบโทเค็นนั้นกับแต่ละคําขอ ดังที่แสดงในตัวอย่างในบทความนี้

ดูรายละเอียดเซิร์ฟเวอร์ MCP

หลังจากที่คุณเผยแพร่ตัวแทนข้อมูลแล้ว ให้เปิดการตั้งค่าและไปที่แท็บโปรโตคอลบริบทแบบจําลอง แท็บนี้แสดง:

  • ชื่อเซิร์ฟเวอร์ MCP ของตัวแทนข้อมูล
  • URL ของเซิร์ฟเวอร์ MCP (คัดลอกค่านี้ คุณใช้ค่านี้ในทุกไคลเอ็นต์)
  • ชื่อเครื่องมือ MCP ของตัวแทนข้อมูล
  • คําอธิบายเครื่องมือเซิร์ฟเวอร์ MCP

คุณยังสามารถดาวน์โหลดไฟล์ mcp.json จากแท็บนี้เพื่อกําหนดค่าไคลเอ็นต์ที่อ่านรูปแบบนั้น เช่น Visual Studio Code

สกรีนช็อตแสดงแท็บการตั้งค่าเซิร์ฟเวอร์ MCP ของตัวแทนข้อมูล

คุณยังสามารถสร้าง URL ด้วยตัวเองได้จาก ID พื้นที่ทํางานและ ID ตัวแทนข้อมูลของคุณ:

https://api.fabric.microsoft.com/v1/mcp/workspaces/{WorkspaceId}/dataagents/{DataAgentId}/agent
ตัวกำหนดตำแหน่ง คำอธิบาย
{WorkspaceId} รหัสของพื้นที่ทํางาน Fabric ที่มีตัวแทนข้อมูล
{DataAgentId} รหัสของตัวแทนข้อมูลที่เผยแพร่

URL ที่สร้างขึ้นด้วยตนเองจะทํางานหลังจากที่คุณเผยแพร่ตัวแทนข้อมูลแล้วเท่านั้น หากตัวแทนไม่ได้เผยแพร่ ปลายทางจะส่งคืนข้อผิดพลาดแม้ว่า URL จะถูกต้องก็ตาม

การรับรองความถูกต้อง

ทุกคําขอไปยังปลายทาง MCP ต้องได้รับการรับรองความถูกต้องกับ Fabric ไคลเอ็นต์ของคุณแนบโทเค็นผู้ถือในส่วน Authorization หัว และโทเค็นต้องมีสิทธิ์เข้าถึงพื้นที่ทํางานเป้าหมายและตัวแทนข้อมูล โทเค็นสามารถแสดงข้อมูลประจําตัวของผู้ใช้หรือบริการหลักก็ได้

วิธีรับโทเค็นขึ้นอยู่กับลูกค้าของคุณ Visual Studio Code พร้อมท์ให้คุณลงชื่อเข้าใช้แบบโต้ตอบ ในสคริปต์ Python คุณจะได้รับโทเค็นผ่านไลบรารี เช่น azure-identity และเพิ่มลงในส่วนหัวของคําขอด้วยตัวคุณเอง ไม่ว่าไคลเอ็นต์จะเป็นอย่างไร ให้ขอโทเค็นสําหรับ https://api.fabric.microsoft.com/.default ขอบเขต

เชื่อมต่อจาก Python

ตัวอย่างนี้เชื่อมต่อกับตําแหน่งข้อมูล MCP ของตัวแทนข้อมูลจากสคริปต์ Python แบบสแตนด์อโลน ค้นพบเครื่องมือ ส่งคําถาม และพิมพ์คําตอบ ใช้ MCP Python SDK และazure-identityไลบรารี

ข้อกําหนดเบื้องต้นสําหรับไคลเอ็นต์ Python

  • Python 3.10 หรือใหม่กว่า
  • แพคเกจและmcpazure-identity
  • วิธีลงชื่อเข้าใช้ Fabric ตัวอย่างนี้ใช้ Azure CLI ติดตั้ง Azure CLI จากนั้นเรียกใช้az loginและลงชื่อเข้าใช้ด้วยบัญชีที่มีสิทธิ์เข้าถึงพื้นที่ทํางานและตัวแทนข้อมูล

ติดตั้งแพ็คเกจ:

pip install mcp azure-identity

สร้างไคลเอ็นต์ทีละขั้นตอน

ส่วนต่อไปนี้จะสร้างสคริปต์ทีละชิ้น แต่ละบล็อกจะยังคงเป็นไฟล์เดียวกัน คุณจึงสามารถวางตามลําดับลงในไฟล์เดียว .py และเรียกใช้ได้

นําเข้าไลบรารีและตั้งค่าของคุณ แทนที่ ID พื้นที่ทํางาน ID ตัวแทนข้อมูล และคําถามด้วยค่าของคุณเอง mcp_urlต่อไปนี้เป็นรูปแบบปลายทางที่อธิบายไว้ก่อนหน้านี้

import asyncio

from azure.identity import AzureCliCredential
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

workspace_id = "<your-workspace-id>"
data_agent_id = "<your-data-agent-id>"
question = "<your question>"

mcp_url = (
    f"https://api.fabric.microsoft.com/v1/mcp/workspaces/{workspace_id}"
    f"/dataagents/{data_agent_id}/agent"
)

รับโทเค็นและสร้างส่วนหัวการตรวจสอบสิทธิ์ AzureCliCredential ใช้การลงชื่อเข้าใช้ซ้ําจาก az login. ตัวช่วยร้องขอโทเค็นสําหรับขอบเขต Fabric และส่งคืนเป็นAuthorizationส่วนหัวที่ทุกคําขอมีอยู่

credential = AzureCliCredential()


def get_auth_headers():
    token = credential.get_token("https://api.fabric.microsoft.com/.default")
    return {"Authorization": f"Bearer {token.token}"}

เปิดการเชื่อมต่อ ค้นพบเครื่องมือ และถามคําถาม ฟังก์ชันนี้จะเปิดการเชื่อมต่อ HTTP ที่สตรีมได้ด้วยส่วนหัวของการตรวจสอบสิทธิ์ เรียกใช้การจับมือ MCP ด้วย initializeแสดงรายการเครื่องมือ และอ่านเครื่องมือเดียวที่ตัวแทนข้อมูลเปิดเผย ค้นหาชื่อของอาร์กิวเมนต์คําถามจากสคีมาอินพุตของเครื่องมือ ดังนั้นคุณจึงไม่ต้องฮาร์ดโค้ด จากนั้นเรียกใช้เครื่องมือและรวบรวมข้อความจากการตอบกลับ

async def query_data_agent(question):
    headers = get_auth_headers()

    async with streamablehttp_client(mcp_url, headers=headers) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # The data agent exposes a single tool. Discover it, then call it.
            tools = await session.list_tools()
            tool = tools.tools[0]
            question_arg = next(iter(tool.inputSchema["properties"]))

            result = await session.call_tool(tool.name, {question_arg: question})

            answers = [block.text for block in result.content if block.type == "text"]
            return "\n".join(answers)

เรียกใช้และพิมพ์คําตอบ query_data_agent เป็นโครูทีน ดังนั้นจึง asyncio.run ขับเคลื่อนให้เสร็จสมบูรณ์และส่งคืนผลลัพธ์

answer = asyncio.run(query_data_agent(question))
print(answer)

เนื่องจากสคริปต์อ่านเครื่องมือแรกที่เซิร์ฟเวอร์โฆษณาและค้นหาอาร์กิวเมนต์คําถามจากสคีมาอินพุตของเครื่องมือ สคริปต์จึงยังคงทํางานต่อไปแม้ว่าชื่อเครื่องมือหรือชื่ออาร์กิวเมนต์จะเปลี่ยนไปก็ตาม คุณไม่จําเป็นต้องฮาร์ดโค้ดค่าใดค่าหนึ่ง

Tip

AzureCliCredentialอ่านการลงชื่อเข้าใช้ที่คุณสร้างขึ้นด้วยaz login เมื่อต้องการเรียกใช้แบบอัตโนมัติ, เช่นในบริการหรืองาน, ใช้ข้อมูลประจําตัวของบริการหลักแทน, ตัวอย่างเช่น ClientSecretCredential หรือ DefaultAzureCredential. ส่วนที่เหลือของโค้ดยังคงเหมือนเดิม

เชื่อมต่อจาก Visual Studio Code

Visual Studio Code สามารถทําหน้าที่เป็นไคลเอ็นต์ MCP ได้ ขั้นตอนต่อไปนี้จะเพิ่มเซิร์ฟเวอร์ MCP ของตัวแทนข้อมูลและถามคําถามจากเครื่องมือแก้ไข ขั้นตอนเหล่านี้เป็นตัวอย่างหนึ่ง ปลายทางและโทเค็นเป็นแบบเดียวกับที่ไคลเอนต์ MCP รายอื่นใช้

เพิ่มเซิร์ฟเวอร์ MCP

  1. เปิด Visual Studio Code และเลือกโฟลเดอร์ที่จะทํางาน

  2. สร้างโฟลเดอร์ .vscode ในโฟลเดอร์ที่เลือก

  3. ภายใน .vscode ให้สร้างไฟล์ชื่อ mcp.json.

  4. Visual Studio Code แสดงปุ่ม เพิ่มเซิร์ฟเวอร์ สีน้ําเงิน ที่ด้านล่างขวาของหน้าต่าง

    สกรีนช็อตที่แสดงไฟล์ json ของเซิร์ฟเวอร์ MCP

  5. เลือก เพิ่มเซิร์ฟเวอร์ แล้วเลือก HTTP เมื่อได้รับแจ้งให้ใส่ URL ให้วาง URL ของเซิร์ฟเวอร์ MCP ที่คัดลอกไว้ก่อนหน้านี้

    สกรีนช็อตแสดงการเลือก HTTP

    ภาพหน้าจอแสดงตําแหน่งที่จะป้อน URL สําหรับเซิร์ฟเวอร์ MCP

  6. กด Enter และระบุชื่อสําหรับเซิร์ฟเวอร์ Visual Studio Code ใช้ชื่อนี้เพื่อแสดงเซิร์ฟเวอร์

  7. Visual Studio Code พยายามรับรองความถูกต้อง เลือก อนุญาต และลงชื่อเข้าใช้ด้วยข้อมูลประจําตัวของคุณ

เซิร์ฟเวอร์ถูกสร้างขึ้น

สกรีนช็อตที่แสดงไฟล์ MCP ของตัวแทนข้อมูล

เปิดใช้งานโหมดตัวแทน

หลังจากที่คุณเพิ่มเซิร์ฟเวอร์ ให้เปิดใช้งานโหมดตัวแทนเพื่อให้ Visual Studio Code สามารถกําหนดเส้นทางคําถามของคุณไปยังตัวแทนข้อมูล:

  1. เปิด ชุดคําสั่ง (Ctrl+Shift+P หรือ cmd+Shift+P)

  2. ค้นหา เปิดใช้งานโหมดตัวแทน และเลือก

  3. ยืนยันข้อความแจ้งเพื่อเปิดใช้งานโหมด

    สกรีนช็อตที่แสดงตัวแทนข้อมูลใน Visual Studio Code ในโหมดตัวแทน

เมื่อโหมดตัวแทนทํางานอยู่ ให้เลือกผู้ประสานงานเพื่อจัดการกับคําถามของคุณ ผู้ประสานจัดการจะจัดการโฟลว์ระหว่างคําถามของคุณในเครื่องมือแก้ไขและเซิร์ฟเวอร์ MCP ของตัวแทนข้อมูล ผู้ประสานงานที่มีอยู่ในการแสดงตัวอย่าง ได้แก่ GPT-5, GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Pro และอื่นๆ

ถามคําถาม

เมื่อเปิดโหมดตัวแทนและเลือกผู้ประสานงาน ให้ถามคําถามโดยตรงจากตัวแก้ไข ผู้ประสานงานกําหนดเส้นทางคําถามแต่ละข้อไปยังเซิร์ฟเวอร์ MCP ของตัวแทนข้อมูล และตัวแทนจะส่งคืนคําตอบที่มีพื้นฐานมาจากข้อมูลที่สามารถเข้าถึงได้ใน OneLake คุณอยู่ในตัวแก้ไขในขณะที่คุณนําความรู้ขององค์กรมาสู่เวิร์กโฟลว์ AI ของคุณ