Integration App MCP Server
ทางการโต้ตอบกับแอปพลิเคชัน SaaS อื่นๆ ในนามของลูกค้าของคุณ
เอกสาร
Membrane MCP Server
Membrane MCP Server เป็นเซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ให้การดำเนินการสำหรับการผสานรวมที่เชื่อมต่อบน Membrane ในรูปแบบเครื่องมือ
นี่คือ ตัวอย่าง AI Agent อย่างเป็นทางการของเราที่แสดงวิธีใช้เซิร์ฟเวอร์ MCP นี้ในแอปพลิเคชันของคุณ
📋 ข้อกำหนดเบื้องต้น
- Node.js (v18 หรือสูงกว่า)
- บัญชี Membrane
⚙️ การติดตั้ง
git clone https://github.com/membranehq/mcp-server.git
cd mcp-server
npm install
npm run build
🛠️ การพัฒนาภายในเครื่อง
เพื่อรันเซิร์ฟเวอร์สำหรับการพัฒนาภายในเครื่อง ให้เริ่มด้วย:
npm run dev
เซิร์ฟเวอร์จะทำงานที่ http://localhost:3000 ⚡️
🧪 การรันการทดสอบ
# Run the server in test mode
npm run start:test
# then run tests
npm test
🚀 การปรับใช้
ปรับใช้อินสแตนซ์ของคุณเองของเซิร์ฟเวอร์ MCP นี้กับบริการโฮสติ้งคลาวด์ใดๆ ที่คุณเลือก
🐳 Docker
โปรเจกต์นี้มี Dockerfile สำหรับการปรับใช้แบบคอนเทนเนอร์ที่ง่ายดาย
docker build -t membrane-mcp-server .
docker run -p 3000:3000 membrane-mcp-server
🔗 การเชื่อมต่อกับเซิร์ฟเวอร์ MCP
เซิร์ฟเวอร์ MCP นี้รองรับการขนส่งสองแบบ:
| การขนส่ง | ปลายทาง | สถานะ |
|---|---|---|
| SSE (Server‑Sent Events) | /sse | 🔴 เลิกใช้แล้ว — เลิกใช้ตั้งแต่วันที่ 5 พฤศจิกายน 2024 ในข้อกำหนด MCP |
| HTTP (Streamable HTTP) | /mcp | 🟢 แนะนำ — แทนที่ SSE และรองรับการสตรีมแบบสองทิศทาง |
🔐 การตรวจสอบสิทธิ์
ระบุ โทเค็นการเข้าถึง Membrane ผ่าน query หรือส่วนหัว Authorization:
?token=ACCESS_TOKEN
Authorization: Bearer ACCESS_TOKEN
SSE (เลิกใช้แล้ว)
await client.connect(
new SSEClientTransport(
new URL(
`https://<HOSTED_MCP_SERVER_URL>/sse`
)
{
requestInit: {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
},
}
)
);
Streamable HTTP (แนะนำ)
await client.connect(
new StreamableHTTPClientTransport(
new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp`)
{
requestInit: {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
},
}
)
);
⚡ โหมดคงที่ vs โหมดไดนามิก
ตามค่าเริ่มต้น เซิร์ฟเวอร์ MCP จะทำงานใน โหมดคงที่ ซึ่งหมายความว่าจะส่งคืน เครื่องมือที่มีอยู่ทั้งหมด (การดำเนินการ) สำหรับการผสานรวมที่เชื่อมต่อทั้งหมด
ด้วย โหมดไดนามิก (?mode=dynamic) เซิร์ฟเวอร์จะส่งคืนเพียง หนึ่งเครื่องมือ: enable-tools คุณสามารถใช้เครื่องมือนี้เพื่อเลือกเปิดใช้งานเครื่องมือที่คุณต้องการจริงๆ สำหรับเซสชันนั้น
ในโหมดไดนามิก การนำไปใช้งานของคุณควรพิจารณาว่าเครื่องมือใดเกี่ยวข้องมากที่สุดกับคำถามของผู้ใช้ เมื่อคุณระบุได้แล้ว ให้แจ้ง LLM ให้เรียกเครื่องมือ enable-tools พร้อมรายการที่เหมาะสม
ต้องการดูว่าสิ่งนี้ทำงานอย่างไรในทางปฏิบัติ? ลองดู ตัวอย่าง AI Agent ของเรา
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
const client = new Client({
name: 'example-membrane-mcp-client',
version: '1.0.0',
});
const transport = new StreamableHTTPClientTransport(
new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp?mode=dynamic`),
{
requestInit: {
headers: {
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
},
}
);
await client.connect(transport);
await client.callTool({
name: 'enable-tools',
arguments: {
tools: ['gmail-send-email', 'gmail-read-email'],
},
});
🔧 การรับเครื่องมือสำหรับการผสานรวมเฉพาะ
ในโหมดคงที่ เซิร์ฟเวอร์ MCP จะดึงเครื่องมือจากการเชื่อมต่อที่ใช้งานอยู่ทั้งหมดที่เกี่ยวข้องกับโทเค็นที่ให้ไว้
คุณสามารถเลือกดึงเฉพาะเครื่องมือสำหรับการผสานรวมเฉพาะโดยส่งพารามิเตอร์ query apps: /mcp?apps=google-calendar,google-docs
💬 การจัดการเซสชันแชท (ทดลอง)
เซิร์ฟเวอร์ MCP (เฉพาะการขนส่งแบบ streamable-http) รองรับเซสชันแชทแบบถาวร รวมส่วนหัว x-chat-id ในคำขอของคุณเพื่อติดตามเซสชันสำหรับแชทนั้นๆ โดยอัตโนมัติ นี่เป็นคุณสมบัติทดลองที่เราให้เพิ่มเติมจากเซสชัน MCP มาตรฐาน
การเริ่มเซสชันแชทใหม่:
POST /mcp
Authorization: Bearer YOUR_ACCESS_TOKEN
x-chat-id: my-awesome-chat-123
การเรียกดูเซสชันแชทของคุณ:
GET /mcp/sessions
Authorization: Bearer YOUR_ACCESS_TOKEN
การตอบสนอง:
{
"my-awesome-chat-123": "session-uuid-1",
"another-chat-456": "session-uuid-2"
}
คุณสมบัตินี้ช่วยให้คุณใช้เซสชันเดียวกันสำหรับการสนทนา ลองดู ตัวอย่าง AI Agent ของเราเพื่อดูว่าสิ่งนี้ทำงานอย่างไรในทางปฏิบัติ
การกำหนดค่าไคลเอนต์ MCP อื่นๆ
📝 Cursor
เพื่อใช้เซิร์ฟเวอร์นี้กับ Cursor ให้อัปเดตไฟล์ ~/.cursor/mcp.json:
{
"mcpServers": {
"membrane": {
"url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
}
}
}
รีสตาร์ท Cursor เพื่อให้การเปลี่ยนแปลงมีผล
🤖 Claude Desktop
เพื่อใช้เซิร์ฟเวอร์นี้กับ Claude ให้อัปเดตไฟล์การกำหนดค่า (Settings > Developer > Edit Config):
{
"mcpServers": {
"membrane": {
"url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
}
}
}
🔧 การแก้ไขปัญหา
- ตรวจสอบให้แน่ใจว่าโทเค็นการเข้าถึงของคุณถูกต้องและคุณสร้างตาม คำแนะนำเหล่านี้
- ตรวจสอบบันทึกของเซิร์ฟเวอร์ MCP เพื่อหาข้อผิดพลาดหรือปัญหาระหว่างการเริ่มต้นหรือความพยายามเชื่อมต่อ
- ใช้ MCP Inspector สำหรับการทดสอบและการดีบัก