Qdrant MCP
ทางการการค้นหาเชิงความหมายโดยใช้ฐานข้อมูลเวกเตอร์ Qdrant
คุณทำอะไรได้บ้างด้วย Qdrant MCP?
ใช้ Qdrant เป็นชั้นความทรงจำเชิงความหมายสำหรับผู้ช่วย AI ของคุณ ช่วยให้จัดเก็บและดึงข้อมูลตามความหมายแทนที่จะเป็นคำสำคัญที่ตรงกัน
- จัดเก็บความทรงจำเชิงความหมาย — ให้ผู้ช่วยของคุณบันทึกข้อมูลพร้อมเมทาดาทาที่ไม่บังคับไปยัง Qdrant ผ่าน
qdrant-storeเพื่อนำกลับมาใช้ในภายหลัง - ดึงความทรงจำที่เกี่ยวข้อง — ใช้
qdrant-findเพื่อค้นหาข้อมูลที่จัดเก็บไว้ด้วยคำค้นหาภาษาธรรมชาติและรับผลลัพธ์ที่ตรงกัน - สร้างไลบรารีตัวอย่างโค้ด — จัดเก็บตัวอย่างโค้ดพร้อมคำอธิบายและดึงข้อมูลกลับมาเชิงความหมาย ตามที่แสดงในการตั้งค่า Cursor และ Claude Code
- กำหนดคอลเลกชันเฉพาะ — จัดเก็บหรือค้นหาในคอลเลกชันที่มีชื่อผ่าน
collection_nameหรือใช้ค่าเริ่มต้นที่กำหนดโดยCOLLECTION_NAME
เอกสาร
mcp-server-qdrant: เซิร์ฟเวอร์ Qdrant MCP
Model Context Protocol (MCP) เป็นโปรโตคอลเปิดที่ช่วยให้การผสานรวมระหว่างแอปพลิเคชัน LLM และแหล่งข้อมูลและเครื่องมือภายนอกเป็นไปอย่างราบรื่น ไม่ว่าคุณจะสร้าง IDE ที่ขับเคลื่อนด้วย AI ปรับปรุงอินเทอร์เฟซแชท หรือสร้างเวิร์กโฟลว์ AI ที่กำหนดเอง MCP ก็มีวิธีมาตรฐานในการเชื่อมต่อ LLM กับบริบทที่ต้องการ
พื้นที่เก็บข้อมูลนี้เป็นตัวอย่างวิธีการสร้าง MCP server สำหรับ Qdrant ซึ่งเป็นเสิร์ชเอนจินเวกเตอร์
ภาพรวม
เซิร์ฟเวอร์ Model Context Protocol อย่างเป็นทางการสำหรับการจัดเก็บและดึงข้อมูลความทรงจำในเสิร์ชเอนจินเวกเตอร์ Qdrant ทำหน้าที่เป็นชั้นความทรงจำเชิงความหมายบนฐานข้อมูล Qdrant
ส่วนประกอบ
เครื่องมือ
qdrant-store- จัดเก็บข้อมูลบางอย่างในฐานข้อมูล Qdrant
- ข้อมูลนำเข้า:
information(string): ข้อมูลที่จะจัดเก็บmetadata(JSON): ข้อมูลเมตาที่ไม่บังคับเพื่อจัดเก็บcollection_name(string): ชื่อของคอลเลกชันที่จะเก็บข้อมูล หากไม่มีชื่อคอลเลกชันเริ่มต้น ฟิลด์นี้จำเป็น หากมีชื่อคอลเลกชันเริ่มต้น ฟิลด์นี้จะไม่ถูกเปิดใช้งาน
- ผลลัพธ์: ข้อความยืนยัน
qdrant-find- ดึงข้อมูลที่เกี่ยวข้องจากฐานข้อมูล Qdrant
- ข้อมูลนำเข้า:
query(string): คำค้นหาที่ใช้สำหรับการค้นหาcollection_name(string): ชื่อของคอลเลกชันที่จะเก็บข้อมูล หากไม่มีชื่อคอลเลกชันเริ่มต้น ฟิลด์นี้จำเป็น หากมีชื่อคอลเลกชันเริ่มต้น ฟิลด์นี้จะไม่ถูกเปิดใช้งาน
- ผลลัพธ์: ข้อมูลที่จัดเก็บในฐานข้อมูล Qdrant เป็นข้อความแยก
ตัวแปรสภาพแวดล้อม
การกำหนดค่าทำได้ผ่านตัวแปรสภาพแวดล้อม อาร์กิวเมนต์บรรทัดคำสั่งเพียงอย่างเดียวคือ --transport ใช้เพื่อเลือก โปรโตคอลการขนส่ง
[!NOTE] คุณไม่สามารถระบุทั้ง
QDRANT_URLและQDRANT_LOCAL_PATHในเวลาเดียวกันได้
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
QDRANT_URL | URL ของเซิร์ฟเวอร์ Qdrant | ไม่มี |
QDRANT_API_KEY | คีย์ API สำหรับเซิร์ฟเวอร์ Qdrant | ไม่มี |
COLLECTION_NAME | ชื่อของคอลเลกชันเริ่มต้นที่จะใช้ | ไม่มี |
QDRANT_LOCAL_PATH | เส้นทางไปยังฐานข้อมูล Qdrant ในเครื่อง (ทางเลือกแทน QDRANT_URL) | ไม่มี |
EMBEDDING_PROVIDER | ผู้ให้บริการ Embedding ที่จะใช้ (ปัจจุบันรองรับเฉพาะ "fastembed") | fastembed |
EMBEDDING_MODEL | ชื่อของโมเดล embedding ที่จะใช้ | sentence-transformers/all-MiniLM-L6-v2 |
TOOL_STORE_DESCRIPTION | คำอธิบายที่กำหนดเองสำหรับเครื่องมือ store | ดูค่าเริ่มต้นใน settings.py |
TOOL_FIND_DESCRIPTION | คำอธิบายที่กำหนดเองสำหรับเครื่องมือ find | ดูค่าเริ่มต้นใน settings.py |
QDRANT_SEARCH_LIMIT | จำนวนผลลัพธ์สูงสุดที่จะส่งคืนจากการค้นหา | 10 |
QDRANT_READ_ONLY | เปิดใช้งานโหมดอ่านอย่างเดียว (ปิดการใช้งานเครื่องมือ qdrant-store) | false |
ตัวแปรสภาพแวดล้อม FastMCP
เนื่องจาก mcp-server-qdrant สร้างจาก FastMCP จึงรองรับตัวแปรสภาพแวดล้อมทั้งหมดของ FastMCP ด้วย ตัวแปรที่สำคัญที่สุดแสดงอยู่ด้านล่าง:
| ตัวแปรสภาพแวดล้อม | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
FASTMCP_LOG_LEVEL | ตั้งระดับการบันทึก (DEBUG, INFO, WARNING, ERROR, CRITICAL) | INFO |
FASTMCP_SERVER_DEBUG | เปิดใช้งานโหมดดีบัก | false |
FASTMCP_SERVER_HOST | ที่อยู่โฮสต์สำหรับผูกเซิร์ฟเวอร์ | 127.0.0.1 |
FASTMCP_SERVER_PORT | พอร์ตสำหรับรันเซิร์ฟเวอร์ | 8000 |
FASTMCP_SERVER_ON_DUPLICATE_RESOURCES | พฤติกรรมสำหรับทรัพยากรที่ซ้ำกัน (warn, error, replace, ignore) | warn |
FASTMCP_SERVER_ON_DUPLICATE_TOOLS | พฤติกรรมสำหรับเครื่องมือที่ซ้ำกัน (warn, error, replace, ignore) | warn |
FASTMCP_SERVER_ON_DUPLICATE_PROMPTS | พฤติกรรมสำหรับพรอมต์ที่ซ้ำกัน (warn, error, replace, ignore) | warn |
FASTMCP_SERVER_DEPENDENCIES | รายการ dependencies ที่จะติดตั้งในสภาพแวดล้อมเซิร์ฟเวอร์ | [] |
[!NOTE] การตั้งค่าเฉพาะเซิร์ฟเวอร์ใช้คำนำหน้า
FASTMCP_SERVER_ซึ่งอาจเปลี่ยนแปลงในเวอร์ชันอนาคต
การติดตั้ง
การใช้ uvx
เมื่อใช้ uvx ไม่จำเป็นต้องติดตั้งเพิ่มเติมเพื่อรัน mcp-server-qdrant โดยตรง
QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="my-collection" \
EMBEDDING_MODEL="sentence-transformers/all-MiniLM-L6-v2" \
uvx mcp-server-qdrant
โปรโตคอลการขนส่ง
เซิร์ฟเวอร์รองรับโปรโตคอลการขนส่งที่แตกต่างกันซึ่งสามารถระบุได้โดยใช้แฟล็ก --transport:
QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="my-collection" \
uvx mcp-server-qdrant --transport sse
โปรโตคอลการขนส่งที่รองรับ:
stdio(ค่าเริ่มต้น): การขนส่งมาตรฐานอินพุต/เอาต์พุต อาจใช้ได้เฉพาะกับไคลเอนต์ MCP ในเครื่องsse: การขนส่ง Server-Sent Events เหมาะสำหรับไคลเอนต์ระยะไกลstreamable-http: การขนส่ง HTTP แบบสตรีม เหมาะสำหรับไคลเอนต์ระยะไกล และใหม่กว่า SSE
การขนส่งเริ่มต้นคือ stdio หากไม่ระบุ
เมื่อใช้การขนส่ง SSE เซิร์ฟเวอร์จะฟังพอร์ตที่ระบุและรอการเชื่อมต่อขาเข้า พอร์ตเริ่มต้นคือ 8000 แต่สามารถเปลี่ยนได้โดยใช้ตัวแปรสภาพแวดล้อม FASTMCP_SERVER_PORT
QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="my-collection" \
FASTMCP_SERVER_PORT=1234 \
uvx mcp-server-qdrant --transport sse
การใช้ Docker
มี Dockerfile สำหรับสร้างและรัน MCP server:
# Build the container
docker build -t mcp-server-qdrant .
# Run the container
docker run -p 8000:8000 \
-e FASTMCP_SERVER_HOST="0.0.0.0" \
-e QDRANT_URL="http://your-qdrant-server:6333" \
-e QDRANT_API_KEY="your-api-key" \
-e COLLECTION_NAME="your-collection" \
mcp-server-qdrant
[!TIP] โปรดทราบว่าเราตั้งค่า
FASTMCP_SERVER_HOST="0.0.0.0"เพื่อให้เซิร์ฟเวอร์ฟังบนอินเทอร์เฟซเครือข่ายทั้งหมด ซึ่งจำเป็นเมื่อรันเซิร์ฟเวอร์ในคอนเทนเนอร์ Docker
การติดตั้งผ่าน Smithery
ในการติดตั้ง Qdrant MCP Server สำหรับ Claude Desktop โดยอัตโนมัติผ่าน Smithery:
npx @smithery/cli install mcp-server-qdrant --client claude
การกำหนดค่า Claude Desktop ด้วยตนเอง
ในการใช้เซิร์ฟเวอร์นี้กับแอป Claude Desktop ให้เพิ่มการกำหนดค่าต่อไปนี้ในส่วน "mcpServers" ของ claude_desktop_config.json:
{
"qdrant": {
"command": "uvx",
"args": ["mcp-server-qdrant"],
"env": {
"QDRANT_URL": "https://xyz-example.eu-central.aws.cloud.qdrant.io:6333",
"QDRANT_API_KEY": "your_api_key",
"COLLECTION_NAME": "your-collection-name",
"EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2"
}
}
}
สำหรับโหมด Qdrant ในเครื่อง:
{
"qdrant": {
"command": "uvx",
"args": ["mcp-server-qdrant"],
"env": {
"QDRANT_LOCAL_PATH": "/path/to/qdrant/database",
"COLLECTION_NAME": "your-collection-name",
"EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2"
}
}
}
MCP server นี้จะสร้างคอลเลกชันที่มีชื่อที่ระบุโดยอัตโนมัติหากยังไม่มี
โดยค่าเริ่มต้น เซิร์ฟเวอร์จะใช้โมเดล embedding sentence-transformers/all-MiniLM-L6-v2 เพื่อเข้ารหัสความทรงจำ ในขณะนี้รองรับเฉพาะโมเดล FastEmbed เท่านั้น
รองรับเครื่องมืออื่น ๆ
MCP server นี้สามารถใช้กับไคลเอนต์ที่เข้ากันได้กับ MCP ใด ๆ ตัวอย่างเช่น คุณสามารถใช้กับ Cursor และ VS Code ซึ่งรองรับ Model Context Protocol ในตัว
การใช้งานกับ Cursor/Windsurf
คุณสามารถกำหนดค่า MCP server นี้ให้ทำงานเป็นเครื่องมือค้นหาโค้ดสำหรับ Cursor หรือ Windsurf โดยปรับแต่งคำอธิบายเครื่องมือ:
QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="code-snippets" \
TOOL_STORE_DESCRIPTION="Store reusable code snippets for later retrieval. \
The 'information' parameter should contain a natural language description of what the code does, \
while the actual code should be included in the 'metadata' parameter as a 'code' property. \
The value of 'metadata' is a Python dictionary with strings as keys. \
Use this whenever you generate some code snippet." \
TOOL_FIND_DESCRIPTION="Search for relevant code snippets based on natural language descriptions. \
The 'query' parameter should describe what you're looking for, \
and the tool will return the most relevant code snippets. \
Use this when you need to find existing code snippets for reuse or reference." \
uvx mcp-server-qdrant --transport sse # Enable SSE transport
ใน Cursor/Windsurf คุณสามารถกำหนดค่า MCP server ในการตั้งค่าของคุณโดยชี้ไปที่เซิร์ฟเวอร์ที่กำลังรันนี้โดยใช้โปรโตคอลการขนส่ง SSE คำอธิบายวิธีเพิ่ม MCP server ไปยัง Cursor สามารถดูได้ใน https://docs.cursor.com/context/model-context-protocol#adding-an-mcp-server-to-cursor หากคุณรัน Cursor/Windsurf ในเครื่อง คุณสามารถใช้ URL ต่อไปนี้:
http://localhost:8000/sse
[!TIP] เราขอแนะนำให้ใช้การขนส่ง SSE เป็นวิธีที่ต้องการในการเชื่อมต่อ Cursor/Windsurf กับ MCP server เนื่องจากรองรับการเชื่อมต่อระยะไกล ทำให้ง่ายต่อการแชร์เซิร์ฟเวอร์กับทีมของคุณหรือใช้ในสภาพแวดล้อมคลาวด์
การกำหนดค่านี้แปลง Qdrant MCP server ให้เป็นเครื่องมือค้นหาโค้ดเฉพาะทางที่สามารถ:
- จัดเก็บตัวอย่างโค้ด เอกสาร และรายละเอียดการนำไปใช้งาน
- ดึงตัวอย่างโค้ดที่เกี่ยวข้องโดยอิงจากการค้นหาเชิงความหมาย
- ช่วยนักพัฒนาค้นหาการนำไปใช้งานหรือรูปแบบการใช้งานที่เฉพาะเจาะจง
คุณสามารถเติมข้อมูลในฐานข้อมูลได้โดยการจัดเก็บคำอธิบายภาษาธรรมชาติของตัวอย่างโค้ด (ในพารามิเตอร์ information) พร้อมกับโค้ดจริง (ในคุณสมบัติ metadata.code) จากนั้นค้นหาด้วยคำค้นหาภาษาธรรมชาติที่อธิบายสิ่งที่คุณกำลังมองหา
[!NOTE] คำอธิบายเครื่องมือที่ให้ไว้ข้างต้นเป็นตัวอย่างและอาจต้องปรับแต่งสำหรับกรณีการใช้งานเฉพาะของคุณ พิจารณาปรับคำอธิบายให้ตรงกับขั้นตอนการทำงานของทีมและประเภทตัวอย่างโค้ดที่คุณต้องการจัดเก็บและดึงข้อมูล
หากคุณติดตั้ง mcp-server-qdrant สำเร็จแล้ว แต่ยังไม่สามารถใช้งานร่วมกับ Cursor ได้ โปรดพิจารณาสร้าง กฎของ Cursor เพื่อให้เครื่องมือ MCP ถูกใช้เสมอเมื่อเอเจนต์สร้างตัวอย่างโค้ดใหม่ คุณสามารถจำกัดกฎให้ทำงานเฉพาะกับไฟล์บางประเภท เพื่อหลีกเลี่ยงการใช้ MCP server กับเอกสารหรือเนื้อหาประเภทอื่น
การใช้งานกับ Claude Code
คุณสามารถเพิ่มความสามารถของ Claude Code ได้โดยเชื่อมต่อกับ MCP server นี้ ซึ่งช่วยให้ค้นหาเชิงความหมายทั่วทั้งโค้ดเบสที่มีอยู่ของคุณ
การตั้งค่า mcp-server-qdrant
-
เพิ่ม MCP server ไปยัง Claude Code:
# Add mcp-server-qdrant configured for code search claude mcp add code-search \ -e QDRANT_URL="http://localhost:6333" \ -e COLLECTION_NAME="code-repository" \ -e EMBEDDING_MODEL="sentence-transformers/all-MiniLM-L6-v2" \ -e TOOL_STORE_DESCRIPTION="Store code snippets with descriptions. The 'information' parameter should contain a natural language description of what the code does, while the actual code should be included in the 'metadata' parameter as a 'code' property." \ -e TOOL_FIND_DESCRIPTION="Search for relevant code snippets using natural language. The 'query' parameter should describe the functionality you're looking for." \ -- uvx mcp-server-qdrant -
ตรวจสอบว่าเซิร์ฟเวอร์ถูกเพิ่มแล้ว:
claude mcp list
การใช้การค้นหาโค้ดเชิงความหมายใน Claude Code
คำอธิบายเครื่องมือที่ระบุใน TOOL_STORE_DESCRIPTION และ TOOL_FIND_DESCRIPTION ชี้แนะ Claude Code วิธีใช้ MCP server คำอธิบายที่ให้ไว้ข้างต้นเป็นตัวอย่างและอาจต้องปรับแต่งสำหรับกรณีการใช้งานเฉพาะของคุณ อย่างไรก็ตาม Claude Code ควรสามารถ:
- ใช้เครื่องมือ
qdrant-storeเพื่อจัดเก็บตัวอย่างโค้ดพร้อมคำอธิบาย - ใช้เครื่องมือ
qdrant-findเพื่อค้นหาตัวอย่างโค้ดที่เกี่ยวข้องโดยใช้ภาษาธรรมชาติ
รัน MCP server ในโหมดการพัฒนา
MCP server สามารถรันในโหมดการพัฒนาได้โดยใช้คำสั่ง mcp dev ซึ่งจะเริ่มเซิร์ฟเวอร์และเปิด MCP inspector ในเบราว์เซอร์ของคุณ
COLLECTION_NAME=mcp-dev fastmcp dev src/mcp_server_qdrant/server.py
การใช้งานกับ VS Code
สำหรับการติดตั้งด้วยคลิกเดียว ให้คลิกปุ่มติดตั้งปุ่มใดปุ่มหนึ่งด้านล่าง:
การติดตั้งด้วยตนเอง
เพิ่มบล็อก JSON ต่อไปนี้ลงในไฟล์ผู้ใช้ Settings (JSON) ของคุณใน VS Code โดยกด Ctrl + Shift + P และพิมพ์ Preferences: Open User Settings (JSON)
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "uvx",
"args": ["mcp-server-qdrant"],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}
}
หรือหากคุณต้องการใช้ Docker ให้เพิ่มการกำหนดค่านี้แทน:
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "docker",
"args": [
"run",
"-p", "8000:8000",
"-i",
"--rm",
"-e", "QDRANT_URL",
"-e", "QDRANT_API_KEY",
"-e", "COLLECTION_NAME",
"mcp-server-qdrant"
],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}
}
อีกทางเลือกหนึ่ง คุณสามารถสร้างไฟล์ .vscode/mcp.json ในเวิร์กสเปซของคุณด้วยเนื้อหาต่อไปนี้:
{
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "uvx",
"args": ["mcp-server-qdrant"],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}
สำหรับการกำหนดค่างานด้วย Docker ให้ใช้สิ่งนี้ใน .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "docker",
"args": [
"run",
"-p", "8000:8000",
"-i",
"--rm",
"-e", "QDRANT_URL",
"-e", "QDRANT_API_KEY",
"-e", "COLLECTION_NAME",
"mcp-server-qdrant"
],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}
การมีส่วนร่วม
หากคุณมีข้อเสนอแนะว่า mcp-server-qdrant ควรปรับปรุงอย่างไร หรือต้องการรายงานบั๊ก โปรดเปิด issue! เรายินดีรับการมีส่วนร่วมทุกประเภท
การทดสอบ mcp-server-qdrant ในเครื่อง
MCP inspector เป็นเครื่องมือสำหรับนักพัฒนาในการทดสอบและดีบัก MCP servers โดยรันทั้ง client UI (พอร์ตเริ่มต้น 5173) และ MCP proxy server (พอร์ตเริ่มต้น 3000) เปิด client UI ในเบราว์เซอร์เพื่อใช้ inspector
QDRANT_URL=":memory:" COLLECTION_NAME="test" \
fastmcp dev src/mcp_server_qdrant/server.py
เมื่อเริ่มต้นแล้ว ให้เปิดเบราว์เซอร์ไปที่ http://localhost:5173 เพื่อเข้าถึงอินเทอร์เฟซ inspector
สัญญาอนุญาต
เซิร์ฟเวอร์ MCP นี้ได้รับอนุญาตภายใต้ Apache License 2.0 ซึ่งหมายความว่าคุณมีอิสระที่จะใช้งาน แก้ไข และเผยแพร่ซอฟต์แวร์ โดยอยู่ภายใต้ข้อกำหนดและเงื่อนไขของ Apache License 2.0 หากต้องการรายละเอียดเพิ่มเติม โปรดดูไฟล์ LICENSE ในที่เก็บโปรเจกต์