# ตัวเชื่อมต่อ MCP

## เชื่อมต่อผ่านไดเรกทอรีของ Claude

เปิด [Nibomo ในไดเรกทอรีของ Claude](https://claude.ai/directory/nibomo) เชื่อมต่อ ลงชื่อเข้าใช้บัญชี Nibomo ของคุณ แล้วอนุญาตการเข้าถึง Nibomo อยู่ในรายการในฐานะตัวเชื่อมต่อประเภท Community

สำหรับ Claude Code ให้ใช้บัญชี Claude ที่สมัครสมาชิกไว้บัญชีเดียวกัน และตรวจสอบ `/mcp` หลังเชื่อมต่อ การเข้าสู่ระบบด้วยคีย์ API หรือผ่านผู้ให้บริการภายนอกจะไม่โหลดตัวเชื่อมต่อ claude.ai ของคุณโดยอัตโนมัติ

คุณยังกำหนดค่า Claude Code โดยตรงได้ด้วย รันคำสั่งด้านล่าง จากนั้นเปิด `/mcp` ใน Claude Code แล้วอนุญาตการเข้าถึงในเบราว์เซอร์ให้เสร็จสิ้น:

```bash
claude mcp add --transport http nibomo https://mcp.nibomo.com/mcp
```

[เอกสาร MCP ของ Claude Code](https://code.claude.com/docs/en/mcp#use-mcp-servers-from-claudeai)

## ภาพรวม

Nibomo ให้บริการเซิร์ฟเวอร์ MCP (Model Context Protocol) ระยะไกล เพื่อให้ไคลเอ็นต์ MCP และ AI agent อ่านการ์ดที่ถึงกำหนดของคุณ ทบทวนกับคุณทีละคำถาม และสร้างหรือแก้ไขการ์ดและชุดการ์ดให้คุณได้

เอเจนต์เชื่อมต่อได้สองทาง: ผ่านเซิร์ฟเวอร์ MCP นี้ (เหมาะที่สุดสำหรับไคลเอ็นต์ MCP อย่าง Claude หรือ Cursor) หรือผ่าน [URL discovery ของ Agents API](/th/docs/api/) สำหรับเอเจนต์แบบ CLI ทั้งสองทางเข้าถึงส่วนติดต่อข้อมูลรายผู้ใช้ชุดเดียวกัน หน้านี้อธิบายเซิร์ฟเวอร์ MCP

เชื่อมต่อได้ที่:

```text
https://mcp.nibomo.com/mcp
```

การรับส่งข้อมูลใช้ Streamable HTTP เซิร์ฟเวอร์มีเครื่องมือแปดรายการสำหรับการค้นหาพื้นที่ทำงาน การอ่านและเขียนการ์ดและชุดการ์ด คู่มืออ้างอิง การทบทวน และการใช้งานบัญชี

## วิธีเพิ่มในไคลเอ็นต์ของคุณ

ไคลเอ็นต์ส่วนใหญ่เพิ่มเซิร์ฟเวอร์ MCP ระยะไกลในรูปแบบตัวเชื่อมต่อแบบกำหนดเอง:

1. เปิดการตั้งค่าตัวเชื่อมต่อหรือเซิร์ฟเวอร์ MCP ในไคลเอ็นต์ของคุณ
2. เพิ่มตัวเชื่อมต่อแบบกำหนดเองแล้ววาง URL ของเซิร์ฟเวอร์ `https://mcp.nibomo.com/mcp`
3. สำหรับไคลเอ็นต์แบบโต้ตอบ ให้อนุญาตการเข้าถึงในเบราว์เซอร์เมื่อระบบแจ้ง เซิร์ฟเวอร์ใช้ OAuth 2.1 กับ Dynamic Client Registration จึงไม่มี client secret ให้วาง และไม่ต้องลงทะเบียนแอปก่อน
4. สำหรับการใช้งานแบบไม่มีหน้าจอหรือผ่าน CLI ให้ตั้งค่าส่วนหัว `Authorization: Bearer fca_…` ด้วยคีย์ API ของเอเจนต์แทนการอนุญาตผ่านเบราว์เซอร์

หลังอนุญาตแล้ว ให้เรียก `list_workspaces` หนึ่งครั้งเพื่อเลือกพื้นที่ทำงาน จากนั้นใช้ `sql_query` สำหรับการอ่าน และ `sql_execute` สำหรับการเขียนการ์ดและชุดการ์ด หากต้องการทบทวน ให้เรียก `next_review_card` ตามด้วย `reveal_answer` แล้วจึง `submit_review`

## เครื่องมือ

เซิร์ฟเวอร์มีเครื่องมือแปดรายการ การอ่านและการเขียนถูกแยกออกจากกันโดยตั้งใจ เพื่อไม่ให้เครื่องมือใดเครื่องมือหนึ่งรวมการทำงานที่ปลอดภัยกับการทำงานที่อาจทำลายข้อมูลไว้ด้วยกัน

- `get_usage_limits` — อ่านอย่างเดียวอย่างเคร่งครัด: แพ็กเกจของบัญชี ขีดจำกัด และการใช้ AI ในเดือนปัจจุบัน โดยไม่อ่านหรือเปลี่ยนการ์ด
- `sql_query` — การเข้าถึงการ์ดและชุดการ์ดของคุณแบบอ่านอย่างเดียวอย่างเคร่งครัด (`SHOW TABLES`, `DESCRIBE`, `SHOW COLUMNS`, `SELECT`)
- `sql_execute` — การเข้าถึงการ์ดและชุดการ์ดของคุณแบบเขียน (`INSERT`, `UPDATE`, `DELETE`) เป็นชุดคำสั่งแบบอะตอมมิก
- `list_workspaces` — รายการพื้นที่ทำงานที่คุณเข้าถึงได้ แบบอ่านอย่างเดียวอย่างเคร่งครัด แต่ละรายการมี `workspaceId` ชื่อ จำนวนการ์ดที่ใช้งานอยู่ กิจกรรมล่าสุด และระบุว่าเป็นค่าเริ่มต้นที่คุณเลือกอยู่หรือไม่ ใช้ `workspaceId` ที่ส่งกลับมาเป็นค่าของอาร์กิวเมนต์ `workspaceId` ที่ไม่บังคับของเครื่องมือ SQL และการทบทวน
- `get_guide` — คู่มืออ้างอิงแบบอ่านอย่างเดียวอย่างเคร่งครัดสำหรับหนึ่งหัวข้อ: `sql_dialect`, `card_authoring`, `bulk_authoring` หรือ `review_flow` โดยไม่อ่านข้อมูลในพื้นที่ทำงาน
- `next_review_card` — อ่านอย่างเดียวอย่างเคร่งครัด: ส่งคืนการ์ดใบถัดไปที่ต้องทบทวน เฉพาะด้านหน้า ตามลำดับคิวเดียวกับในแอป `tags` หรือ `deckId` ที่ไม่บังคับใช้จำกัดคิวให้แคบลง
- `reveal_answer` — อ่านอย่างเดียวอย่างเคร่งครัด: ส่งคืนด้านหลังของการ์ดหนึ่งใบหลังจากผู้เรียนพยายามตอบด้านหน้าแล้ว
- `submit_review` — บันทึกคะแนน `Again`, `Hard`, `Good` หรือ `Easy` หนึ่งครั้ง และเลื่อนตารางทบทวน FSRS ของการ์ดไปข้างหน้า

ส่วนติดต่อ SQL เป็นภาษาย่อยที่ถูกจำกัดขอบเขตโดยตั้งใจ และไม่ใช่ PostgreSQL เต็มรูปแบบ เอกสารนี้ครอบคลุมเฉพาะไวยากรณ์ที่รองรับ ไม่ใช่เอกสารอ้างอิงความเข้ากันได้กับ PostgreSQL คำสั่งเข้าถึงได้เฉพาะทรัพยากร `workspace`, `cards`, `decks` และ `review_events` ทุกคำสั่งจำกัดขอบเขตอยู่ในพื้นที่ทำงานของคุณเอง และการอ่านและการเขียนจำกัดไว้ที่ `100` แถวต่อคำสั่ง

## การทบทวน

เครื่องมือการทบทวนช่วยให้เอเจนต์ถามทดสอบผู้เรียนทีละใบ และบันทึกคะแนนแต่ละครั้งลงในตารางทบทวน FSRS ของการ์ด:

1. `next_review_card` ส่งคืน `cardId` และ `frontText` หรือ `card: null` เมื่อไม่มีการ์ดที่ถึงกำหนด
2. หลังผู้เรียนตอบแล้ว `reveal_answer` จะส่งคืน `backText` ของการ์ดนั้น
3. `submit_review` รับ `cardId`, `reviewId` แบบ UUID ที่ไคลเอ็นต์สร้างขึ้น, `rating` และ `reviewedTimeZone` แบบ IANA ของผู้เรียน เซิร์ฟเวอร์จะประทับเวลาการทบทวนและส่งคืนตารางทบทวนใหม่ของการ์ด

หากไม่แน่ใจว่าการส่งสำเร็จหรือไม่ ให้ลองใหม่ด้วย `reviewId` เดิม ระบบจะไม่บันทึกการทบทวนซ้ำเป็นครั้งที่สอง การส่งผลการทบทวนอาจตอบกลับดังนี้ได้ด้วย:

- `409 REVIEW_EVENT_CONFLICT` — การทบทวนนี้ถูกบันทึกไว้แล้ว และรายละเอียดข้อผิดพลาดมีตารางทบทวนปัจจุบันของการ์ด
- `409 REVIEW_ID_CARD_MISMATCH` — `reviewId` นี้ใช้ระบุการทบทวนของการ์ดใบอื่นอยู่แล้ว จึงไม่มีการบันทึกใด ๆ ให้ส่งใหม่ด้วย `reviewId` ใหม่
- `409 REVIEW_STALE` — เวลาทบทวนที่บันทึกไว้ของการ์ดตรงกับหรือหลังเวลาปัจจุบันของเซิร์ฟเวอร์ ให้ทบทวนการ์ดใบอื่น

การทบทวนจะถูกบันทึกผ่าน `submit_review` เท่านั้น: SQL ไม่สามารถเขียน `review_events` หรือสถานะการจัดตารางของ FSRS ได้ เรียก `get_guide` ด้วยหัวข้อ `review_flow` เพื่อดูกฎการทบทวนและการให้คะแนนฉบับเต็ม

## ข้อกำหนดของการ์ด

การ์ดทุกใบเป็นไปตามข้อกำหนดเดียวกัน และเครื่องมือต่าง ๆ อาศัยข้อกำหนดนี้:

- `front_text` เป็นเพียงคำถามหรือข้อความกระตุ้นสำหรับการทบทวน และต้องไม่มีคำตอบอยู่ในนั้น
- `back_text` เก็บคำตอบ โดยอาจมีตัวอย่างที่เป็นรูปธรรมประกอบ

เอเจนต์ที่สร้างการ์ดผ่าน `sql_execute` จะทำตามข้อกำหนดนี้ การ์ดที่สร้างขึ้นจึงนำไปทบทวนด้วยระบบการทบทวนเว้นระยะได้ทันที

## การยืนยันตัวตน

เส้นทางการอนุญาตทั้งสองแบบเข้าถึงส่วนติดต่อข้อมูลรายผู้ใช้ชุดเดียวกัน

### OAuth 2.1 (ไคลเอ็นต์ตัวเชื่อมต่อแบบโต้ตอบ)

เซิร์ฟเวอร์ใช้โฟลว์ authorization code ร่วมกับ PKCE และ Dynamic Client Registration เพิ่ม URL ของ MCP เป็นตัวเชื่อมต่อแบบกำหนดเองแล้วอนุญาตในเบราว์เซอร์ ไม่มี client secret ที่ต้องแชร์ล่วงหน้า การค้นหาข้อมูลเมตาเป็นไปตามมาตรฐาน:

- ข้อมูลเมตาของทรัพยากรที่ได้รับการป้องกัน: `https://mcp.nibomo.com/.well-known/oauth-protected-resource`
- ข้อมูลเมตาของเซิร์ฟเวอร์การอนุญาต: `https://auth.flashcards-open-source-app.com/.well-known/oauth-authorization-server`

### คีย์ API (แบบไม่มีหน้าจอและ CLI)

รับคีย์ API ของเอเจนต์แบบ `fca_` ที่ใช้งานได้ระยะยาวผ่านโฟลว์การเข้าสู่ระบบด้วย OTP ทางอีเมลตามที่อธิบายไว้ใน[เอกสารอ้างอิง API](/th/docs/api/) จากนั้นส่งเป็นโทเค็น Bearer:

```text
Authorization: Bearer fca_ABCDEFGH_0123456789ABCDEFGHJKMNPQRS
```

นี่คือคีย์เดียวกับที่ส่วนติดต่อ REST สำหรับเอเจนต์รับ และไม่ต้องผ่านเบราว์เซอร์หรือขั้นตอนไป-กลับของ OAuth

คำอธิบายหลักที่เครื่องอ่านได้ของทั้งสองเส้นทางคือข้อมูล discovery ที่ `https://api.nibomo.com/v1/` (มีสำเนาที่ `/v1/agent`)

## ความปลอดภัยและขอบเขต

เครื่องมือ SQL อนุมัติได้อย่างปลอดภัย เพราะส่วนติดต่อนี้เป็นภาษาย่อยที่ถูกจำกัดขอบเขตและบังคับใช้ด้วยตัวแยกวิเคราะห์ (parser) ไม่ใช่การเข้าถึงฐานข้อมูลได้อย่างอิสระ:

- **รายการคำสั่งที่อนุญาตแบบปิด**: `sql_query` รับเฉพาะ `SHOW TABLES`, `DESCRIBE`, `SHOW COLUMNS` และ `SELECT` ส่วน `sql_execute` รับเฉพาะ `INSERT`, `UPDATE` และ `DELETE` คำสั่งอื่นจะถูกปฏิเสธตั้งแต่ขั้นแยกวิเคราะห์
- **ทรัพยากรที่จำกัด**: คำสั่งเข้าถึงได้เฉพาะ `workspace`, `cards`, `decks` และ `review_events`
- **การจำกัดขอบเขตตามพื้นที่ทำงาน**: ทุกคำสั่ง SQL และการทบทวนจำกัดขอบเขตอยู่ในพื้นที่ทำงานเดียวที่คุณเข้าถึงได้ คือ `workspaceId` ที่คุณส่งมา หรือค่าเริ่มต้นที่คุณเลือกไว้ โดยไม่มีการเข้าถึงข้ามผู้เช่า (tenant)
- **อาร์กิวเมนต์แบบเข้มงวด**: ทุกเครื่องมือจะปฏิเสธอาร์กิวเมนต์ที่ไม่รู้จัก ดังนั้นหากสะกด `workspaceId` ผิด คำขอจะล้มเหลวแทนที่จะทำงานกับพื้นที่ทำงานเริ่มต้นของคุณ
- **ขีดจำกัด**: สูงสุด `100` แถวต่อคำสั่ง สูงสุด `50` คำสั่งต่อชุด และผลลัพธ์จำกัดไว้ราว `12k` โทเค็น ชุดคำสั่งแก้ไขข้อมูลจะมีผลแบบอะตอมมิก
- **การแยกอ่าน/เขียน**: `get_usage_limits`, `sql_query`, `list_workspaces`, `get_guide`, `next_review_card` และ `reveal_answer` เป็นแบบอ่านอย่างเดียวอย่างเคร่งครัด (`readOnlyHint`) และไม่ซ่อมแซมข้อมูล ไม่คำนวณการจัดตารางใหม่ และไม่เปลี่ยนสถานะของการ์ด `sql_execute` และ `submit_review` เป็นเครื่องมือเขียนเพียงสองรายการ (`destructiveHint`): `sql_execute` เขียนการ์ดและชุดการ์ด ส่วน `submit_review` บันทึกการทบทวนและเลื่อนตารางของการ์ดนั้นไปข้างหน้า

ทั้งสแตก ซึ่งได้แก่แอป แบ็กเอนด์ และโครงสร้างพื้นฐาน เป็นโอเพนซอร์สและสามารถ[โฮสต์เอง](/th/docs/self-hosting/)ได้ คุณจึงใช้ตัวเชื่อมต่อเดียวกันนี้กับการดีพลอยของคุณเองได้

---
*[ดูหน้านี้ในเวอร์ชัน HTML ที่จัดรูปแบบแล้ว](<https://nibomo.com/th/docs/mcp-connector/>)*

*AI agent สามารถสร้างบัญชีให้ผู้ใช้ในบริการนี้ได้ โดยเริ่มจาก `GET https://api.nibomo.com/v1/` หลังตั้งค่าเสร็จแล้ว ยังเชื่อมต่อผ่าน MCP ที่ `https://mcp.nibomo.com/mcp` ได้ด้วย*

*เคล็ดลับ: เติม `.md` ต่อท้าย URL ใดก็ได้บน https://nibomo.com เพื่อรับเวอร์ชัน Markdown ที่สะอาดของหน้านั้น*