SingleStore MCP Server

ทางการ

โต้ตอบกับแพลตฟอร์มฐานข้อมูล SingleStore

เอกสาร

SingleStore MCP Server

MIT Licence PyPI Downloads

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 สำหรับการจัดการแพ็คเกจ

การตั้งค่า

  1. โคลนที่เก็บ:
git clone https://github.com/singlestore-labs/mcp-server-singlestore.git
cd mcp-server-singlestore
  1. ติดตั้งแพ็คเกจ:
uv sync --dev
  1. ตั้งค่า 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 อัตโนมัติ:

  1. สร้างรุ่น: ./scripts/release.sh (เครื่องมือแบบโต้ตอบ)
  2. การเผยแพร่อัตโนมัติ: ถูกกระตุ้นโดยการพุชแท็กเวอร์ชัน
  3. ไม่มีการอัปโหลด PyPI ด้วยตนเอง - ไปป์ไลน์อัตโนมัติเต็มรูปแบบ

ดู scripts/dev-workflow.md สำหรับเอกสารเวิร์กโฟลว์โดยละเอียด