# ใช้เซิร์ฟเวอร์ MCP การตั้งค่า และประวัติร่วมกัน

> ccam ใช้เซิร์ฟเวอร์ MCP, settings.json, CLAUDE.md, เอเจนต์, สกิล และประวัติร่วมกันระหว่างบัญชีอย่างไร โดยแยกการเข้าสู่ระบบ

Source: https://ccam.dev/th/docs/sharing/ · Updated 2026-10-19

แต่ละบัญชีเก็บการเข้าสู่ระบบของตัวเองไว้ ส่วนอย่างอื่นทั้งหมดใช้ร่วมกันได้ทีละรายการ: ccam ลิงก์ไฟล์หรือโฟลเดอร์ของบัญชีไปยังโฟลเดอร์ของกลุ่มที่ใช้ร่วมกัน ดังนั้นการเปลี่ยนแปลงที่ทำในบัญชีหนึ่งจะปรากฏในทุกบัญชีของกลุ่มนั้น

## สิ่งที่ใช้ร่วมกันได้

| รายการ | ตัวเลือก | สิ่งที่ใช้ร่วมกัน |
| --- | --- | --- |
| เซิร์ฟเวอร์ MCP | `--mcp` | `mcp.json` ของกลุ่ม ซึ่งส่งให้ Claude Code ตอนเริ่มทำงาน |
| การตั้งค่า | `--settings` | `settings.json`: สิทธิ์ hook โมเดล แถบสถานะ |
| หน่วยความจำระดับ global | `--memory` | `CLAUDE.md` |
| ส่วนขยาย | `--extensions` | `agents/`, `commands/`, `skills/`, `plugins/`, `output-styles/`, `rules/` |
| ประวัติการสนทนา | `--history` | `projects/` และ `history.jsonl` |

บัญชีใหม่จะใช้ทุกอย่างร่วมกัน ยกเว้นประวัติการสนทนา

ไฟล์การเข้าสู่ระบบ `.credentials.json` และ `.claude.json` จะไม่มีวันถูกใช้ร่วมกัน ccam ลิงก์เฉพาะพาธที่อยู่ในรายการที่กำหนดไว้ตายตัว และสองไฟล์นี้ไม่อยู่ในรายการนั้น

## กลุ่ม

`on` หมายถึงกลุ่ม `default` คุณยังตั้งชื่อกลุ่มเองได้ เพื่อให้มีเพียงบางบัญชีที่ใช้รายการหนึ่งร่วมกัน:

```sh
ccam share work --history team
ccam share side --history team
```

ตอนนี้ `work` และ `side` ใช้การสนทนาร่วมกันระหว่างสองบัญชีนี้ แต่ไม่ได้ใช้ร่วมกับบัญชีอื่นของคุณ

## การเปิดใช้งานการใช้ร่วมกัน

เมื่อบัญชีเริ่มใช้รายการหนึ่งร่วมกัน ccam จะ:

1. พิมพ์แผนของทุกไฟล์ที่จะย้าย คัดลอก หรือลิงก์ และถามคุณก่อนเริ่ม
2. ย้ายไฟล์ของบัญชีเข้าไปในโฟลเดอร์ของกลุ่มหากกลุ่มยังว่างอยู่ หรือเพิ่มไฟล์ที่กลุ่มยังไม่มี
3. เมื่อไฟล์เดียวกันมีเนื้อหาต่างกัน จะถามว่าจะเก็บเวอร์ชันของกลุ่ม ใช้เวอร์ชันของคุณ หรือรวม JSON เข้าด้วยกัน
4. เก็บต้นฉบับของคุณไว้ใน `.ccam-backup/<time>/` ภายในโฟลเดอร์ของบัญชี
5. แทนที่ต้นฉบับด้วยลิงก์ไปยังกลุ่ม

ไฟล์การสนทนาตั้งชื่อตาม session ID ดังนั้นประวัติจากหลายบัญชีจึงรวมกันได้โดยไม่ขัดแย้งกัน

ccam จะไม่เปลี่ยนการใช้ร่วมกันในขณะที่ Claude Code กำลังทำงานด้วยบัญชีนั้น เพราะเซสชันยังคงเขียนลงไฟล์ที่กำลังถูกย้าย ให้ออกจากเซสชันก่อน

## การปิดใช้งานการใช้ร่วมกัน

```sh
ccam share work --history off
```

ลิงก์จะถูกลบออก และบัญชีจะได้รับสำเนาของเนื้อหาปัจจุบันของกลุ่มเป็นของตัวเอง เพิ่ม `--fresh` หากต้องการเริ่มต้นแบบว่างเปล่าแทน กลุ่มยังคงเก็บเนื้อหาไว้สำหรับบัญชีอื่น

## คัดลอกการตั้งค่าที่มีอยู่

หากคุณเคยใช้ Claude Code ก่อนใช้ ccam การตั้งค่าของคุณจะอยู่ใน `~/.claude` คำสั่ง `ccam migrate` จะคัดลอกการตั้งค่าเหล่านั้นไปยังกลุ่ม เพื่อให้ทุกบัญชีที่ใช้รายการเหล่านั้นร่วมกันได้รับด้วย:

```sh
ccam migrate
```

บนเทอร์มินัล ccam จะแสดงรายการตรวจสอบ (checklist) ของรายการต่าง ๆ ก่อน ทุกอย่างถูกเลือกไว้ยกเว้นประวัติการสนทนา กด Space เพื่อเปลี่ยนรายการ และกด Enter เพื่อดูแผน รายการที่โฟลเดอร์ไม่มีข้อมูลจะมีเครื่องหมาย `not found`

สิ่งที่คัดลอก:

- `settings.json` และ `CLAUDE.md` ระดับ global
- ส่วนขยาย `agents/`, `commands/`, `skills/`, `plugins/`, `output-styles/` และ `rules/`
- เซิร์ฟเวอร์ MCP ของผู้ใช้ ซึ่งก็คือรายการ `mcpServers` ใน `~/.claude.json` โดยคัดลอกไปไว้ใน `mcp.json` ของกลุ่ม
- การลงชื่อเข้าใช้ที่บันทึกไว้ (OAuth) ของเซิร์ฟเวอร์ MCP ที่คัดลอก ไปยังไฟล์เข้าสู่ระบบของแต่ละบัญชีเอง
- ประวัติการสนทนา (`projects/` และ `history.jsonl`) แต่เฉพาะเมื่อคุณเพิ่ม `--history`

โฟลเดอร์ต้นทางจะถูกอ่านอย่างเดียว: ไม่มีสิ่งใดในโฟลเดอร์ถูกย้าย ลิงก์ หรือเปลี่ยนแปลง และ `claude` แบบปกติยังทำงานได้เหมือนเดิม ไฟล์เข้าสู่ระบบ `.credentials.json` และ `.claude.json` จะไม่ถูกคัดลอกไปยังกลุ่มเลย

เซิร์ฟเวอร์ MCP ที่ลงชื่อเข้าใช้ด้วย OAuth จะเก็บโทเค็นไว้ในการเข้าสู่ระบบ ไม่ได้อยู่ในรายการเซิร์ฟเวอร์ เพื่อให้คุณไม่ต้องลงชื่อเข้าใช้เซิร์ฟเวอร์เหล่านั้นอีก ccam จะคัดลอกการลงชื่อเข้าใช้เหล่านั้นไปยังไฟล์เข้าสู่ระบบของทุกบัญชีที่ได้รับเซิร์ฟเวอร์ผ่านกลุ่ม เว้นแต่บัญชีนั้นมีของตัวเองอยู่แล้ว ccam จะข้ามบัญชีที่กำลังทำงานอยู่ ยังไม่ได้เข้าสู่ระบบ ลงทะเบียนไว้ในตำแหน่งเดิมด้วย `ccam import` หรือเก็บการเข้าสู่ระบบไว้ในพวงกุญแจ (Keychain) ของ macOS และจะแจ้งชื่อบัญชีเหล่านั้น ให้ลงชื่อเข้าใช้เซิร์ฟเวอร์ในบัญชีนั้นด้วย `/mcp` บัญชีที่เริ่มใช้เซิร์ฟเวอร์ MCP ร่วมกันภายหลังจะได้รับการลงชื่อเข้าใช้เมื่อคุณรัน `ccam migrate` อีกครั้ง

ccam จะพิมพ์แผนและถามก่อนคัดลอกสิ่งใด:

```console
$ ccam migrate
Copy from /home/me/.claude into group default (/home/me/.local/share/ccam/groups/default):
  mcp         ~/.claude.json  new: context7, fs
  settings    settings.json   new: 80 B
  memory      CLAUDE.md       new: 31 B
  extensions  agents/         add 1 file the group lacks (17 B)
              commands/       add 1 file the group lacks (15 B)
              skills/         add 1 file the group lacks (32 B)
              not found, skipped: plugins/, output-styles/, rules/
  Conversation history (projects/, history.jsonl) is not included; add --history to copy it.
Copy these into group default? [y/N] y
✓ Copied into group default: 2 MCP servers, settings.json, CLAUDE.md, agents/, commands/, skills/
Accounts that share these through group default:
  mcp         personal
  settings    personal
  memory      personal
  extensions  personal
```

ในตอนท้าย ccam จะแสดงรายชื่อบัญชีที่ใช้แต่ละรายการร่วมกันผ่านกลุ่มนั้น หากมีบัญชีที่ยังไม่ได้ใช้ร่วมกัน ccam จะพิมพ์คำสั่ง `ccam share` สำหรับเปิดการใช้ร่วมกันให้บัญชีเหล่านั้น

เมื่อกลุ่มมีสำเนาของไฟล์ที่เนื้อหาต่างกันอยู่แล้ว ccam จะถามคุณเหมือนตอนเปิดใช้งานการใช้ร่วมกัน: จะเก็บสำเนาของกลุ่มไว้ หรือใช้ของคุณ นอกจากนี้ `settings.json` และไฟล์ JSON อื่น ๆ ยังรวมเข้าด้วยกันได้ และ `history.jsonl` รวมกันทีละบรรทัดได้ สำเนาเดิมของกลุ่มจะถูกเก็บไว้ใน `.ccam-backup/<time>/` ภายในโฟลเดอร์ของกลุ่ม

| ตัวเลือก | ผล |
| --- | --- |
| `--settings`, `--memory`, `--extensions`, `--mcp`, `--history` | คัดลอกเฉพาะรายการที่คุณระบุ โดยไม่แสดงรายการตรวจสอบ หากไม่ระบุและไม่ได้อยู่บนเทอร์มินัล จะคัดลอกทุกอย่างยกเว้นประวัติการสนทนา |
| `-g`, `--group <group>` | คัดลอกไปยังกลุ่มนี้แทน `default` |
| `-y`, `--yes` | คัดลอกโดยไม่ถาม เมื่อไฟล์ไม่ตรงกันจะเก็บสำเนาของกลุ่มไว้ |

ใส่ `--dry-run` ไว้หน้าคำสั่ง เช่น `ccam --dry-run migrate` เพื่อดูแผนโดยไม่คัดลอกสิ่งใด หากต้องการคัดลอกจากโฟลเดอร์อื่น ให้ระบุโฟลเดอร์นั้น: `ccam migrate ~/.claude-work --group work`

## เซิร์ฟเวอร์ MCP

Claude Code เก็บเซิร์ฟเวอร์ MCP ไว้ใน `.claude.json` ร่วมกับการเข้าสู่ระบบ จึงใช้ไฟล์นั้นร่วมกันไม่ได้ ccam เก็บเซิร์ฟเวอร์ที่ใช้ร่วมกันไว้ใน `mcp.json` ของกลุ่ม และเริ่ม Claude Code ด้วย `--mcp-config=<group>/mcp.json` ตัวเลือก `--mcp-config` ของคุณเองยังมีผลซ้อนทับอยู่ด้านบน

```sh
ccam mcp add fs -- npx -y @modelcontextprotocol/server-filesystem ~/code
ccam mcp list
```

เซิร์ฟเวอร์ที่คุณเพิ่มภายในเซสชันด้วย `claude mcp add` จะถูกบันทึกไว้สำหรับบัญชีนั้นเท่านั้น ครั้งถัดไปที่คุณเริ่มบัญชีนั้น ccam จะบอกชื่อเซิร์ฟเวอร์และคำสั่งที่ใช้ย้ายเซิร์ฟเวอร์ไปยังกลุ่ม:

```sh
ccam mcp import work gh
```

หากกลุ่มมีเซิร์ฟเวอร์อื่นที่ใช้ชื่อนั้นอยู่แล้ว ccam จะข้ามเซิร์ฟเวอร์นั้นและแจ้งให้คุณทราบ `--force` จะแทนที่เซิร์ฟเวอร์ของกลุ่มและเก็บ `mcp.json` เดิมไว้ในโฟลเดอร์ `.ccam-backup/` ของกลุ่ม

เซิร์ฟเวอร์ MCP ที่ลงชื่อเข้าใช้ด้วย OAuth จะเก็บโทเค็นไว้กับการเข้าสู่ระบบของบัญชี ดังนั้นให้อนุญาตเซิร์ฟเวอร์เหล่านั้นหนึ่งครั้งในแต่ละบัญชี หรือคัดลอกการลงชื่อเข้าใช้จาก `~/.claude` ด้วย `ccam migrate`

หากคุณต้องการให้เซิร์ฟเวอร์ปรากฏใน `claude mcp list` และ `/mcp` เป็นเซิร์ฟเวอร์ผู้ใช้ทั่วไป ให้ตั้งค่า `mcp_strategy = "sync"` ใน `~/.config/ccam/config.toml` จากนั้น ccam จะเขียนเซิร์ฟเวอร์ลงใน `.claude.json` ของแต่ละบัญชีก่อนเริ่มทำงาน โดยใช้การล็อกไฟล์ของ Claude Code เองและสร้างข้อมูลสำรองไว้

## สองบัญชีในโฟลเดอร์เดียวกัน

บัญชีที่ใช้ประวัติการสนทนาร่วมกันจะเขียนลงไฟล์เดียวกัน หากคุณเริ่ม Claude Code ตัวที่สองในโฟลเดอร์ที่มีอีกบัญชีหนึ่งในกลุ่มเดียวกันทำงานอยู่แล้ว ccam จะเตือนคุณและถามว่าจะดำเนินการต่อหรือไม่

## เมื่อมีบางอย่างเสียหาย

```sh
ccam doctor
ccam doctor --fix
```

หากพาธที่ใช้ร่วมกันกลายเป็นไฟล์ธรรมดา เช่น หลังจากที่คุณกู้คืนข้อมูลสำรองด้วยตัวเอง ccam จะหยุดก่อนเริ่ม Claude Code และแนะนำให้ใช้ `ccam doctor --fix` ซึ่งจะรวมไฟล์นั้นเข้ากับกลุ่มและเก็บข้อมูลสำรองไว้
