เซิร์ฟเวอร์ MCP ของ AI Drive
ค้นหาและอ่านเอกสารใน Drive ของ Keural จากไคลเอนต์ MCP ภายนอก เช่น Claude Desktop
Keural เปิด Drive เป็นเซิร์ฟเวอร์ MCP เมื่อไคลเอนต์ MCP ภายนอกเชื่อมต่อ ผู้ใช้ที่ถือคีย์จะค้นหาและอ่านเอกสารใน Drive ทีละหน้าได้ตามสิทธิ์ที่มองเห็น ปลั๊กอิน เชื่อมระบบภายนอกเข้ากับ Keural ส่วนเซิร์ฟเวอร์นี้เชื่อมเอกสารของ Keural เข้ากับ AI ภายนอก
การยืนยันตัวตนใช้คีย์ API ขององค์กร ทีมปฏิบัติการของ Keural เป็นผู้ออกคีย์ จึงให้ขอจากผู้รับผิดชอบการนำไปใช้ คีย์ทำงานด้วยสิทธิ์ของผู้ใช้หนึ่งคนที่ได้รับคีย์และต้องมีสิทธิ์ drive:read เมื่อเพิกถอนคีย์ การเชื่อมต่อเดิมจะถูกบล็อกภายใน 1 นาที
ข้อมูลการเชื่อมต่อ
| รายการ | ค่า |
|---|---|
| การส่งข้อมูล | MCP Streamable HTTP |
| ที่อยู่ | https://<agent server domain for each environment>/core/v1/mcp-drive |
| การยืนยันตัวตน | Authorization: Bearer <organization API key> (ทุกคำขอ) |
วิธีส่งคำขอ
| เมธอด | ใช้ทำอะไร |
|---|---|
POST | คำขอ JSON-RPC หนึ่งรายการ การตอบกลับเป็น application/json หนึ่งรายการเสมอ การแจ้งเตือน (notifications/*) จะได้ 202 โดยไม่มีเนื้อหา |
GET | สตรีมเหตุการณ์จากเซิร์ฟเวอร์ ต้องมี Accept: text/event-stream และ Mcp-Session-Id ส่ง keepalive ทุก 15 วินาที และรับต่อด้วย Last-Event-ID |
DELETE | ปิดเซสชัน ต้องมี Mcp-Session-Id และได้ 204 |
- เมื่อ
initializeสำเร็จ จะได้รับ ID เซสชันผ่านเฮดเดอร์ตอบกลับMcp-Session-Idเซสชันเป็นตัวเลือกไม่บังคับ จึงส่งเพียงPOSTโดยไม่มีเซสชันก็ได้ เซสชันจะคงอยู่ 1 ชั่วโมงหลังคำขอล่าสุด และผูกกับคีย์ที่สร้างเซสชันนั้น - หากส่งเฮดเดอร์
MCP-Protocol-Versionค่าต้องเป็น2025-06-18จะส่งหรือไม่ก็ได้ - ข้อมูลเซิร์ฟเวอร์คือ
keural-ai-driveและฟีเจอร์ที่ให้คือtoolsเท่านั้น
ข้อผิดพลาด HTTP
ข้อผิดพลาดในระดับ HTTP ไม่ได้อยู่ในรูปแบบ JSON-RPC จึงให้ตรวจสอบจากรหัสสถานะ
| สถานะ | สาเหตุ |
|---|---|
401 | ไม่มีคีย์หรือคีย์ไม่ถูกต้อง คีย์ถูกเพิกถอนหรือหมดอายุ |
403 | คีย์ไม่มีสิทธิ์ drive:read |
400 | MCP-Protocol-Version ที่ไม่รองรับ แยก JSON ไม่สำเร็จ (-32700) GET หรือ DELETE ไม่มี ID เซสชัน |
404 | ID เซสชันไม่รู้จักหรือหมดอายุ |
405 | GET ไม่มี Accept: text/event-stream |
ข้อผิดพลาดในระดับ JSON-RPC จะมาพร้อม 200 ในรูปของ error เมธอดหรือเครื่องมือที่ไม่รู้จักได้ -32601 และรูปแบบคำขอไม่ถูกต้องได้ -32600
เครื่องมือ
| เครื่องมือ | อินพุต | คำอธิบาย |
|---|---|---|
list_files | ไม่มี | รายการเอกสารที่มองเห็นได้ (ชื่อ, id, วันที่อัปโหลด, วันที่แก้ไข, และผู้อัปโหลดหากไม่ใช่ตนเอง) เอกสารใน Drive และไฟล์ที่แนบกับแชตจะแสดงรวมกัน แยกด้วย origin สูงสุด 500 รายการ หากเกินจะมี truncated: true |
search_drive | query | ค้นหาเนื้อหาเอกสารด้วยความหมาย และคืนข้อความที่เกี่ยวข้องพร้อมข้อมูลการอ้างอิง |
read_document_page | file_id, page | อ่านเนื้อหาเต็มของหน้าที่ระบุในเอกสาร file_id เอามาจากผลลัพธ์ของเครื่องมือสองตัวข้างต้น และ page นับจาก 1 |
ผลลัพธ์ของเครื่องมือจะอยู่ในรูปสตริง JSON ที่ content[0].text
| เครื่องมือ | JSON ภายใน text |
|---|---|
list_files | {"files":[{"name","id","created_date","modified_date","owner_name","origin"}], "truncated": false} วันที่อยู่ในรูป yyyy-MM-dd HH:mm |
search_drive | {"sources":[{"id","name","url","contents":[…]}]} |
read_document_page | {"file_id","page","rows":[…]} |
หากการทำงานของเครื่องมือล้มเหลว จะส่ง isError: true พร้อม {"error": "…"} (ไม่ใช่ข้อผิดพลาด JSON-RPC) เอกสารที่ไม่มีสิทธิ์เข้าถึงหรือไม่มีอยู่ จะตอบด้วย file not found or not accessible ทั้งหมด
ตัวอย่างการตั้งค่าไคลเอนต์
ลงทะเบียนที่อยู่และเฮดเดอร์ในไคลเอนต์ที่รองรับเซิร์ฟเวอร์ MCP ระยะไกล รูปแบบการตั้งค่าแตกต่างกันในแต่ละไคลเอนต์ จึงให้ทำตามวิธีเพิ่มเซิร์ฟเวอร์ MCP ระยะไกลของไคลเอนต์นั้น
{
"mcpServers": {
"keural-drive": {
"type": "http",
"url": "https://<domain เซิร์ฟเวอร์เอเจนต์ตามสภาพแวดล้อม>/core/v1/mcp-drive",
"headers": { "Authorization": "Bearer <คีย์ API ขององค์กร>" }
}
}
}เวอร์ชันโปรโตคอล MCP ที่รองรับคือ 2025-06-18