SingleStore MCP Server
ทางการโต้ตอบกับแพลตฟอร์มฐานข้อมูล SingleStore
เอกสาร
SingleStore MCP Server
Model Context Protocol (MCP) เป็นโปรโตคอลมาตรฐานที่ออกแบบมาเพื่อจัดการบริบทระหว่างโมเดลภาษาขนาดใหญ่ (LLMs) และระบบภายนอก ที่เก็บนี้มีตัวติดตั้งและ MCP Server สำหรับ Singlestore เพื่อให้การผสานรวมเป็นไปอย่างราบรื่น
ด้วย MCP คุณสามารถใช้ Claude Desktop, Claude Code, Cursor หรือไคลเอนต์ MCP ที่เข้ากันได้ใดๆ เพื่อโต้ตอบกับ SingleStore โดยใช้ภาษาธรรมชาติ ทำให้การดำเนินการที่ซับซ้อนเป็นเรื่องง่ายดาย
💡 เคล็ดลับมือโปร: ไม่แน่ใจว่า MCP server ทำอะไรได้บ้าง? เพียงเรียกใช้พรอมต์ /help ในแชทของคุณ!
ข้อกำหนด
- Python >= v3.10.0
- uvx ติดตั้งบนสภาพแวดล้อม Python ของคุณ
- VS Code, Cursor, Windsurf, Claude Desktop, Claude Code, Goose หรือไคลเอนต์ MCP อื่นๆ
เริ่มต้นใช้งาน
เริ่มต้นใช้งาน
ขั้นแรก ติดตั้ง SingleStore MCP server กับไคลเอนต์ของคุณ
การกำหนดค่ามาตรฐาน ใช้ได้กับเครื่องมือส่วนใหญ่:
{
"mcpServers": {
"singlestore-mcp-server": {
"command": "uvx",
"args": [
"singlestore-mcp-server",
"start"
]
}
}
}
ไม่ต้องใช้คีย์ API, โทเค็น หรือตัวแปรสภาพแวดล้อม! เซิร์ฟเวอร์จะจัดการการรับรองความถูกต้องโดยอัตโนมัติผ่านเบราว์เซอร์ OAuth เมื่อเริ่มต้น
Claude Desktop
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=claude-desktop
การตั้งค่าด้วยตนเอง: ทำตาม คู่มือ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน
Claude Code
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=claude-code
สิ่งนี้จะรันคำสั่ง Claude CLI ให้คุณโดยอัตโนมัติ
การตั้งค่าด้วยตนเอง:
claude mcp add singlestore-mcp-server uvx singlestore-mcp-server start
Cursor
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=cursor
การตั้งค่าด้วยตนเอง:
ไปที่ Cursor Settings -> MCP -> Add new MCP Server ตั้งชื่อตามต้องการ ใช้ประเภท command ด้วยคำสั่ง uvx singlestore-mcp-server start คุณยังสามารถตรวจสอบการกำหนดค่าหรือเพิ่มอาร์กิวเมนต์บรรทัดคำสั่งได้โดยคลิก Edit
VS Code
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=vscode
การตั้งค่าด้วยตนเอง: ทำตาม คู่มือ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน คุณยังสามารถติดตั้งโดยใช้ VS Code CLI:
code --add-mcp '{"name":"singlestore-mcp-server","command":"uvx","args":["singlestore-mcp-server","start"]}'
หลังการติดตั้ง SingleStore MCP server จะพร้อมใช้งานกับ GitHub Copilot agent ของคุณใน VS Code
Windsurf
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=windsurf
การตั้งค่าด้วยตนเอง: ทำตาม เอกสาร MCP ของ Windsurf ใช้การกำหนดค่ามาตรฐานด้านบน
Gemini CLI
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=gemini
การตั้งค่าด้วยตนเอง: ทำตาม คู่มือ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน
LM Studio
การตั้งค่าอัตโนมัติ:
uvx singlestore-mcp-server init --client=lm-studio
การตั้งค่าด้วยตนเอง:
ไปที่ Program ในแถบด้านข้างขวา -> Install -> Edit mcp.json ใช้การกำหนดค่ามาตรฐานด้านบน
Goose
การตั้งค่าด้วยตนเองเท่านั้น:
ไปที่ Advanced settings -> Extensions -> Add custom extension ตั้งชื่อตามต้องการ ใช้ประเภท STDIO และตั้งค่า command เป็น uvx singlestore-mcp-server start คลิก "Add Extension"
Qodo Gen
การตั้งค่าด้วยตนเองเท่านั้น: เปิดแผงแชท Qodo Gen ใน VSCode หรือ IntelliJ → Connect more tools → + Add new MCP → วางการกำหนดค่ามาตรฐานด้านบน
คลิก Save
การใช้ Docker
หมายเหตุ: ต้องใช้คีย์ API เมื่อใช้ Docker เนื่องจากโฟลว์ OAuth ไม่รองรับเซิร์ฟเวอร์ที่รันในคอนเทนเนอร์ Docker
{
"mcpServers": {
"singlestore-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--init", "--pull=always",
"-e", "MCP_API_KEY=your_api_key_here",
"singlestore/mcp-server-singlestore"
]
}
}
}
คุณสามารถสร้างอิมเมจ Docker ด้วยตัวเอง:
docker build -t singlestore/mcp-server-singlestore .
เพื่อความปลอดภัยที่ดีขึ้น เราแนะนำให้ใช้ Docker Desktop เพื่อกำหนดค่า SingleStore MCP server—ดู บล็อกโพสต์นี้ สำหรับรายละเอียดเกี่ยวกับ MCP Catalog ใหม่ของ Docker
ส่วนประกอบ
เครื่องมือ
เซิร์ฟเวอร์มีเครื่องมือดังต่อไปนี้:
-
get_user_info: ดึงรายละเอียดเกี่ยวกับผู้ใช้ปัจจุบัน
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนข้อมูลและรายละเอียดผู้ใช้
-
organization_info: ดึงรายละเอียดเกี่ยวกับองค์กรปัจจุบันของผู้ใช้
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนรายละเอียดขององค์กร
-
choose_organization: เลือกจากองค์กรที่มีอยู่ (ใช้ได้เฉพาะเมื่อไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อมคีย์ API)
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนรายการองค์กรที่มีให้เลือก
-
set_organization: ตั้งค่าองค์กรที่ใช้งานอยู่ (ใช้ได้เฉพาะเมื่อไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อมคีย์ API)
- อาร์กิวเมนต์:
organization_id(สตริง) - ตั้งค่าองค์กรที่ระบุเป็นองค์กรที่ใช้งานอยู่
- อาร์กิวเมนต์:
-
workspace_groups_info: ดึงรายละเอียดเกี่ยวกับกลุ่มพื้นที่ทำงานที่ผู้ใช้เข้าถึงได้
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนรายละเอียดของกลุ่มพื้นที่ทำงาน
-
workspaces_info: ดึงรายละเอียดเกี่ยวกับพื้นที่ทำงานในกลุ่มพื้นที่ทำงานที่ระบุ
- อาร์กิวเมนต์:
workspace_group_id(สตริง) - ส่งคืนรายละเอียดของพื้นที่ทำงาน
- อาร์กิวเมนต์:
-
resume_workspace: ดำเนินการต่อพื้นที่ทำงานที่ถูกระงับ
- อาร์กิวเมนต์:
workspace_id(สตริง) - ดำเนินการต่อพื้นที่ทำงานที่ระบุ
- อาร์กิวเมนต์:
-
list_starter_workspaces: แสดงรายการพื้นที่ทำงานเริ่มต้นทั้งหมดที่ผู้ใช้เข้าถึงได้
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนรายละเอียดของพื้นที่ทำงานเริ่มต้นที่มีอยู่
-
create_starter_workspace: สร้างพื้นที่ทำงานเริ่มต้นใหม่
- อาร์กิวเมนต์: พารามิเตอร์การกำหนดค่าพื้นที่ทำงาน
- ส่งคืนรายละเอียดของพื้นที่ทำงานเริ่มต้นที่สร้างขึ้น
-
terminate_starter_workspace: ยกเลิกพื้นที่ทำงานเริ่มต้นที่มีอยู่
- อาร์กิวเมนต์:
workspace_id(สตริง) - ยกเลิกพื้นที่ทำงานเริ่มต้นที่ระบุ
- อาร์กิวเมนต์:
-
list_regions: ดึงรายการภูมิภาคทั้งหมดที่รองรับพื้นที่ทำงาน
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนรายการภูมิภาคที่มีอยู่
-
list_sharedtier_regions: ดึงรายการภูมิภาคระดับแชร์
- ไม่ต้องมีอาร์กิวเมนต์
- ส่งคืนรายการภูมิภาคระดับแชร์
-
run_sql: ดำเนินการ SQL บนพื้นที่ทำงานที่เชื่อมต่อ
- อาร์กิวเมนต์:
workspace_id,database,sql_queryและพารามิเตอร์การเชื่อมต่อ - ส่งคืนผลลัพธ์ของคิวรี SQL ในรูปแบบที่มีโครงสร้าง
- อาร์กิวเมนต์:
-
create_notebook_file: สร้างไฟล์โน้ตบุ๊กใหม่ใน SingleStore Spaces
- อาร์กิวเมนต์:
notebook_name,content(ไม่บังคับ) - ส่งคืนรายละเอียดของโน้ตบุ๊กที่สร้างขึ้น
- อาร์กิวเมนต์:
-
upload_notebook_file: อัปโหลดไฟล์โน้ตบุ๊กไปยัง SingleStore Spaces
- อาร์กิวเมนต์:
file_path,notebook_name - ส่งคืนรายละเอียดของโน้ตบุ๊กที่อัปโหลด
- อาร์กิวเมนต์:
-
create_job_from_notebook: สร้างงานตามกำหนดการจากโน้ตบุ๊ก
- อาร์กิวเมนต์: การกำหนดค่างานรวมถึง
notebook_path,schedule_modeฯลฯ - ส่งคืนรายละเอียดของงานที่สร้างขึ้น
- อาร์กิวเมนต์: การกำหนดค่างานรวมถึง
-
get_job: ดึงรายละเอียดของงานที่มีอยู่
- อาร์กิวเมนต์:
job_id(สตริง) - ส่งคืนรายละเอียดของงานที่ระบุ
- อาร์กิวเมนต์:
-
delete_job: ลบงานที่มีอยู่
- อาร์กิวเมนต์:
job_id(สตริง) - ลบงานที่ระบุ
- อาร์กิวเมนต์:
-
stage_list_files: แสดงรายการไฟล์และโฟลเดอร์ในระบบไฟล์ของการปรับใช้ Stage
- อาร์กิวเมนต์:
deployment_id(สตริง),path(สตริง, ไม่บังคับ) - ส่งคืนเนื้อหาโฟลเดอร์รวมถึงไฟล์และโฟลเดอร์ย่อย
- อาร์กิวเมนต์:
-
stage_get_file: รับไฟล์จาก Stage ตามพาธ
- อาร์กิวเมนต์:
deployment_id(สตริง),path(สตริง),return_type(สตริง: 'metadata', 'url' หรือ 'content') - ส่งคืนเมทาดาทาของไฟล์, URL ดาวน์โหลด หรือเนื้อหาข้อความ
- อาร์กิวเมนต์:
-
stage_create_folder: สร้างโฟลเดอร์ใน Stage
- อาร์กิวเมนต์:
deployment_id(สตริง),path(สตริง) - ส่งคืนสถานะการสร้าง
- อาร์กิวเมนต์:
-
stage_upload_file: อัปโหลดไฟล์ไปยัง Stage ด้วยเนื้อหาข้อความ
- อาร์กิวเมนต์:
deployment_id(สตริง),path(สตริง),content(สตริง),local_path(สตริง) - ส่งคืนสถานะการอัปโหลด
- อาร์กิวเมนต์:
-
stage_move: ย้ายหรือเปลี่ยนชื่อไฟล์หรือโฟลเดอร์ใน Stage
- อาร์กิวเมนต์:
deployment_id(สตริง),source_path(สตริง),destination_path(สตริง) - ส่งคืนสถานะการย้าย
- อาร์กิวเมนต์:
-
stage_delete: ลบไฟล์หรือโฟลเดอร์จาก Stage
- อาร์กิวเมนต์:
deployment_id(สตริง),path(สตริง) - ส่งคืนสถานะการลบ
- อาร์กิวเมนต์:
หมายเหตุ: เครื่องมือจัดการองค์กร (choose_organization และ set_organization) ใช้ได้เฉพาะเมื่อไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อมคีย์ API ซึ่งอนุญาตให้เลือกองค์กรแบบโต้ตอบระหว่างการรับรองความถูกต้อง OAuth
การพัฒนา
ข้อกำหนดเบื้องต้น
- Python >= 3.11
- uv สำหรับการจัดการแพ็คเกจ
การตั้งค่า
- โคลนที่เก็บ:
git clone https://github.com/singlestore-labs/mcp-server-singlestore.git
cd mcp-server-singlestore
- ติดตั้งแพ็คเกจ:
uv sync --dev
- ตั้งค่า pre-commit hooks (ไม่บังคับแต่แนะนำ):
uv run pre-commit install
เวิร์กโฟลว์การพัฒนา
# Quick quality checks (fast feedback)
./scripts/check.sh
# Run tests independently
./scripts/test.sh
# Comprehensive validation (before PRs)
./scripts/check-all.sh
# Create and publish releases
./scripts/release.sh
การรันเทสต์
# Run test suite with coverage
./scripts/test.sh
# Or use pytest directly
uv run pytest
uv run pytest --cov=src --cov-report=html
คุณภาพโค้ด
เราใช้ Ruff สำหรับทั้งการลินต์และการจัดรูปแบบ:
# Format code
uv run ruff format src/ tests/
# Lint code
uv run ruff check src/ tests/
# Lint and fix issues automatically
uv run ruff check --fix src/ tests/
กระบวนการปล่อยเวอร์ชัน
การปล่อยเวอร์ชันจัดการผ่านแท็ก git และการเผยแพร่ PyPI อัตโนมัติ:
- สร้างรุ่น:
./scripts/release.sh(เครื่องมือแบบโต้ตอบ) - การเผยแพร่อัตโนมัติ: ถูกกระตุ้นโดยการพุชแท็กเวอร์ชัน
- ไม่มีการอัปโหลด PyPI ด้วยตนเอง - ไปป์ไลน์อัตโนมัติเต็มรูปแบบ
ดู scripts/dev-workflow.md สำหรับเอกสารเวิร์กโฟลว์โดยละเอียด