Neon

ทางการ

โต้ตอบกับแพลตฟอร์ม Postgres แบบไร้เซิร์ฟเวอร์ของ Neon

คุณทำอะไรได้บ้างด้วย Neon MCP?

  • สร้างโปรเจกต์และสาขา — ขอให้ผู้ช่วยสร้างฐานข้อมูล Postgres ใหม่หรือสาขาชื่อ feature-x แล้วรอให้ระบบประมวลผลพร้อมใช้งาน
  • เรียกใช้ SQL และธุรกรรม — เรียกใช้คิวรีเดียวหรือชุดคำสั่งในธุรกรรมเดียวกับฐานข้อมูล Neon ที่เลือก
  • ตรวจสอบสคีมาและตาราง — แสดงรายการตารางในฐานข้อมูล อธิบายคอลัมน์และข้อจำกัดของตาราง หรือเปรียบเทียบสคีมาระหว่างสาขา
  • ทดสอบการย้ายข้อมูลอย่างปลอดภัย — เตรียมการเปลี่ยนแปลงสคีมาบนสาขาชั่วคราว จากนั้นดำเนินการให้เสร็จเพื่อใช้การย้ายข้อมูลกับสาขาหลัก
  • ปรับแต่งคิวรีที่ทำงานช้า — ค้นหาคิวรีที่ทำงานช้า ดูแผนการทำงาน และทดสอบการปรับปรุงที่แนะนำ เช่น การเพิ่มดัชนีบนสาขาชั่วคราว
  • สรุปโปรเจกต์ — แสดงรายการโปรเจกต์และองค์กรของ Neon หรือค้นหาทั่วทั้งโปรเจกต์และสาขาเพื่อค้นหา ID และลิงก์ไปยังคอนโซล

เซิร์ฟเวอร์ MCP แบบโฮสต์

npx add-mcp 'https://mcp.neon.tech/mcp'

ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ

เอกสาร

Neon Logo fallback

Neon MCP Server

Install MCP Server in Cursor Add to Kiro

Neon MCP Server เป็นเครื่องมือโอเพนซอร์สที่ช่วยให้คุณโต้ตอบกับฐานข้อมูล Lakebase Postgres บน Neon ได้ด้วย ภาษาธรรมชาติ

License: MIT

Model Context Protocol (MCP) เป็น โปรโตคอลมาตรฐาน ที่ออกแบบมาเพื่อจัดการบริบทระหว่างโมเดลภาษาขนาดใหญ่ (LLM) กับระบบภายนอก รีโพซิทอรีนี้มี Remote MCP Server สำหรับ Neon

MCP server ของ Neon ทำหน้าที่เป็นสะพานเชื่อมระหว่างคำขอภาษาธรรมชาติกับ Neon API โดยสร้างขึ้นบน MCP และแปลงคำขอของคุณเป็นการเรียก API ที่จำเป็น ช่วยให้คุณจัดการงานต่าง ๆ ได้อย่างราบรื่น เช่น การสร้างโปรเจกต์และสาขา การเรียกใช้คิวรี และการย้ายฐานข้อมูล

ฟีเจอร์สำคัญบางส่วนของ MCP server ของ Neon ได้แก่:

  • โต้ตอบด้วยภาษาธรรมชาติ: จัดการฐานข้อมูล Neon ด้วยคำสั่งสนทนาที่เข้าใจง่าย
  • จัดการฐานข้อมูลได้ง่ายขึ้น: ดำเนินการที่ซับซ้อนได้โดยไม่ต้องเขียน SQL หรือใช้ Neon API โดยตรง
  • เข้าถึงได้สำหรับผู้ที่ไม่ใช่นักพัฒนา: ช่วยให้ผู้ใช้ที่มีพื้นฐานทางเทคนิคหลากหลายสามารถโต้ตอบกับฐานข้อมูล Neon ได้
  • รองรับการย้ายฐานข้อมูล: ใช้ประโยชน์จากความสามารถในการแยกสาขาของ Neon เพื่อเปลี่ยนแปลงสคีมาฐานข้อมูลด้วยคำสั่งภาษาธรรมชาติ

ตัวอย่างเช่น ใน Claude Code หรือ MCP Client ใด ๆ คุณสามารถใช้ภาษาธรรมชาติเพื่อทำสิ่งต่าง ๆ กับ Neon ได้ เช่น:

  • Let's create a new Postgres database, and call it "my-database". Let's then create a table called users with the following columns: id, name, email, and password.
  • I want to run a migration on my project called "my-project" that alters the users table to add a new column called "created_at".
  • Can you give me a summary of all of my Neon projects and what data is in each one?

[!WARNING]
ข้อควรพิจารณาด้านความปลอดภัยของ Neon MCP Server
Neon MCP Server มอบความสามารถในการจัดการฐานข้อมูลที่ทรงพลังผ่านคำขอภาษาธรรมชาติ ตรวจสอบและอนุมัติการดำเนินการที่ LLM ร้องขอทุกครั้งก่อนดำเนินการ ตรวจสอบให้แน่ใจว่าเฉพาะผู้ใช้และแอปพลิเคชันที่ได้รับอนุญาตเท่านั้นที่เข้าถึง Neon MCP Server ได้

Neon MCP Server มีไว้สำหรับการพัฒนาในเครื่องและการผสานรวมกับ IDE เท่านั้น เราไม่แนะนำให้ใช้ Neon MCP Server ในสภาพแวดล้อมการใช้งานจริง เนื่องจากสามารถดำเนินการที่มีผลกระทบสูง ซึ่งอาจทำให้เกิดการเปลี่ยนแปลงโดยไม่ตั้งใจหรือไม่ได้รับอนุญาต

ดูข้อมูลเพิ่มเติมได้ที่ คำแนะนำด้านความปลอดภัยของ MCP →

การตั้งค่า Neon MCP Server

มีหลายวิธีในการตั้งค่า Neon MCP Server:

  1. ตั้งค่าอย่างรวดเร็วด้วย API Key (Cursor, VS Code และ Claude Code): เรียกใช้ neon@latest init เพื่อกำหนดค่า MCP Server ของ Neon, ทักษะของเอเจนต์ และส่วนขยาย VS Code โดยอัตโนมัติด้วยคำสั่งเดียว
  2. Remote MCP Server (การยืนยันตัวตนด้วย OAuth): เชื่อมต่อกับ MCP server ที่ Neon จัดการโดยใช้ OAuth เพื่อยืนยันตัวตน วิธีนี้สะดวกกว่าเพราะไม่ต้องจัดการ API key นอกจากนี้ คุณจะได้รับฟีเจอร์และการปรับปรุงล่าสุดโดยอัตโนมัติทันทีที่เผยแพร่
  3. Remote MCP Server (การยืนยันตัวตนด้วย API Key): เชื่อมต่อกับ MCP server ที่ Neon จัดการโดยใช้ API key เพื่อยืนยันตัวตน วิธีนี้มีประโยชน์หากคุณต้องการเชื่อมต่อเอเจนต์ระยะไกลกับ Neon ในกรณีที่ไม่มี OAuth นอกจากนี้ คุณจะได้รับฟีเจอร์และการปรับปรุงล่าสุดโดยอัตโนมัติทันทีที่เผยแพร่

ข้อกำหนดเบื้องต้น

  • แอปพลิเคชัน MCP Client
  • บัญชี Neon
  • Node.js (>= v18.0.0): ดาวน์โหลดจาก nodejs.org
  • หากเปิดใช้ IP Allow ให้เพิ่ม 34.192.103.46 และ 23.22.233.166 ลงในรายการอนุญาต (mcp.neon.tech IP แบบคงที่)

สำหรับการพัฒนา คุณจะต้องใช้ Node.js 22+ (มี pnpm ให้ผ่าน Corepack — เรียกใช้ corepack enable เพื่อเปิดใช้งาน)

ตัวเลือกที่ 1 ตั้งค่าอย่างรวดเร็วด้วย API Key

ไม่ต้องการสร้าง API key ด้วยตนเองใช่ไหม

เรียกใช้ neon@latest init เพื่อกำหนดค่า MCP Server ของ Neon โดยอัตโนมัติด้วยคำสั่งเดียว:

npx neon@latest init

ใช้ได้กับ Cursor, VS Code (GitHub Copilot) และ Claude Code ระบบจะยืนยันตัวตนผ่าน OAuth สร้าง Neon API key ให้คุณ และกำหนดค่าเอดิเตอร์โดยอัตโนมัติ

ตัวเลือกที่ 2 Remote Hosted MCP Server (การยืนยันตัวตนด้วย OAuth)

เชื่อมต่อกับ MCP server ที่ Neon จัดการโดยใช้ OAuth เพื่อยืนยันตัวตน วิธีนี้ตั้งค่าได้ง่ายที่สุด ไม่ต้องติดตั้ง server นี้ในเครื่อง และไม่จำเป็นต้องกำหนดค่า Neon API key ในไคลเอ็นต์

เรียกใช้คำสั่งต่อไปนี้เพื่อเพิ่ม Neon MCP Server ให้กับเอเจนต์และเอดิเตอร์ทั้งหมดที่ตรวจพบในเวิร์กสเปซของคุณ:

npx add-mcp "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"

URL นี้เผยแพร่หมวดหมู่โปรเจกต์ สาขา compute endpoint การเรียกใช้คิวรี และสคีมา ดูตัวอย่างได้ด้วย /api/list-tools?category=projects&category=branches&category=endpoints&category=querying&category=schema URL ที่ไม่มีตัวกรองจะเผยแพร่ทุกหมวดหมู่:

npx add-mcp https://mcp.neon.tech/mcp

เพิ่มแฟล็ก -g เพื่อเพิ่ม Neon MCP Server ลงในรายการ MCP server ส่วนกลางแทนการกำหนดขอบเขตเฉพาะโปรเจกต์

อีกทางเลือกหนึ่งคือเพิ่มรายการ "Neon" ต่อไปนี้ลงในไฟล์กำหนดค่า MCP server ของไคลเอ็นต์ (เช่น mcp.json, mcp_config.json):

{
  "mcpServers": {
    "Neon": {
      "type": "http",
      "url": "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"
    }
  }
}

Kiro: เพิ่มรายการต่อไปนี้ลงในไฟล์กำหนดค่า MCP ของ Kiro (~/.kiro/settings/mcp.json สำหรับส่วนกลาง หรือ .kiro/settings/mcp.json สำหรับขอบเขตเฉพาะโปรเจกต์):

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"
    }
  }
}

หรือใช้ปุ่มติดตั้งในคลิกเดียวที่ด้านบนของ README ดูข้อมูลเพิ่มเติมได้ที่ เอกสารประกอบ Kiro MCP

  • รีสตาร์ตหรือรีเฟรช MCP client ของคุณ
  • หน้าต่าง OAuth จะเปิดขึ้นในเบราว์เซอร์ ทำตามข้อความแจ้งเพื่ออนุญาตให้ MCP client เข้าถึงบัญชี Neon ของคุณ

เมื่อใช้การยืนยันตัวตนด้วย OAuth โดยค่าเริ่มต้น MCP server จะทำงานกับโปรเจกต์ภายใต้บัญชี Neon ส่วนตัวของคุณ หากต้องการเข้าถึงหรือจัดการโปรเจกต์ที่เป็นขององค์กร คุณต้องระบุ org_id หรือ project_id อย่างชัดเจนในพรอมป์ต์ที่ส่งให้ MCP client

ตัวเลือกที่ 3 Remote Hosted MCP Server (การยืนยันตัวตนด้วย API Key)

Remote MCP Server ยังรองรับการยืนยันตัวตนโดยใช้ API key ในส่วนหัว Authorization หากไคลเอ็นต์ของคุณรองรับ

สร้าง Neon API key ใน Neon Console จากนั้นเรียกใช้คำสั่งต่อไปนี้เพื่อเพิ่ม Neon MCP Server ให้กับเอเจนต์และเอดิเตอร์ทั้งหมดที่ตรวจพบในเวิร์กสเปซของคุณ:

npx add-mcp "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema" --header "Authorization: Bearer <$NEON_API_KEY>"

อีกทางเลือกหนึ่งคือเพิ่มรายการ "Neon" ต่อไปนี้ลงในไฟล์กำหนดค่า MCP server ของไคลเอ็นต์ (เช่น mcp.json, mcp_config.json):

{
  "mcpServers": {
    "Neon": {
      "type": "http",
      "url": "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema",
      "headers": {
        "Authorization": "Bearer <$NEON_API_KEY>"
      }
    }
  }
}

ระบุ API key ขององค์กรเพื่อจำกัดการเข้าถึงเฉพาะโปรเจกต์ภายในองค์กรนั้น

ขอบเขตและโหมดอ่านอย่างเดียว

Neon MCP ประกาศ OAuth scope read และ write MCP client ของคุณสามารถร้องขอ scope เหล่านี้ได้ หรือคุณจะเลือกใน UI สิทธิ์ของ OAuth ก็ได้ * จะถือว่าเป็นการเขียน หากไคลเอ็นต์ยังคงส่งค่านี้มา

โหมดอ่านอย่างเดียว จำกัดเครื่องมือที่พร้อมใช้งาน โดยปิดการดำเนินการเขียน เช่น การสร้างโปรเจกต์ สาขา หรือการเรียกใช้การย้ายฐานข้อมูล เครื่องมืออ่านอย่างเดียวประกอบด้วยการแสดงรายการโปรเจกต์ การอธิบายสคีมา การเรียกใช้คิวรีข้อมูล และการดูเมตริกประสิทธิภาพ

คุณตั้งค่าโหมดอ่านอย่างเดียวได้สองวิธี:

  1. URL MCP เริ่มต้น (แก้ไขการยินยอมได้): เชื่อมต่อด้วย https://mcp.neon.tech/mcp แล้วยกเลิกการเลือก Allow writes ในหน้าการอนุญาต คุณยังเลือกโปรเจกต์ บทบาท Postgres สำหรับ SQL และหมวดหมู่เครื่องมือบางส่วนได้ในหน้านั้น
  2. URL MCP ที่กำหนดพารามิเตอร์ (การยินยอมแบบตายตัว): ใส่ readonly, projectId, category และ/หรือ roleName ใน URL ของ MCP server หน้าการอนุญาตจะยืนยันสิทธิ์ที่ให้ไว้และไม่มีตัวเลือกให้แก้ไข หากต้องการเปลี่ยนสิทธิ์ ให้เปลี่ยน URL แล้วอนุญาตอีกครั้ง
{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true"
    }
  }
}

ลักษณะการทำงานของพารามิเตอร์คิวรี:

  • โฟลว์ API key: readonly=true เป็นวิธีเปิดใช้โหมดอ่านอย่างเดียว (โฟลว์นี้ไม่มีการแลกเปลี่ยน OAuth scope) การเปลี่ยน URL จะมีผลกับคำขอถัดไป
  • โฟลว์ OAuth: projectId, category, readonly และ roleName ใน URL ของ MCP เป็นสิทธิ์แบบตายตัวที่ยืนยันเมื่ออนุญาต readonly=true ไม่สามารถขยายให้มีสิทธิ์เขียนในหน้านั้นได้ หลังออกโทเค็นแล้ว การเปลี่ยน URL จะไม่ขยายสิทธิ์ของโทเค็นนั้น ต้องอนุญาตอีกครั้ง

สำหรับการลงทะเบียน OAuth ค่า x-read-only เป็นค่าเริ่มต้นของ Allow-writes ในหน้าการยินยอมที่แก้ไขได้ ค่านี้ไม่ได้ล็อกการยืนยัน และไม่ได้ลดสิทธิ์ของ URL ที่กำหนดพารามิเตอร์ซึ่งมี readonly=false คำขอที่ใช้ API key ยังคงปฏิบัติตาม x-read-only ในแต่ละคำขอ ซึ่งมีลำดับความสำคัญต่ำกว่าพารามิเตอร์คิวรี readonly

หมายเหตุ: โหมดอ่านอย่างเดียวจำกัด เครื่องมือ ที่พร้อมใช้งาน run_sql ยังคงพร้อมใช้งานและเรียกใช้แต่ละคิวรีภายในทรานแซกชัน READ ONLY ส่วน run_sql_transaction จะไม่พร้อมใช้งาน ให้เรียกใช้แต่ละคำสั่งด้วย run_sql การเรียกเหล่านั้นจะทำงานแยกกันและไม่ใช้ทรานแซกชันร่วมกัน หากต้องการใช้ความหมายของทรานแซกชัน ให้ใช้การเชื่อมต่อที่อนุญาตให้เขียนได้

พารามิเตอร์คิวรี URL สำหรับควบคุมการเข้าถึง

กำหนดบริบทสิทธิ์ (หมวดหมู่ scope การจำกัดขอบเขตโปรเจกต์ โหมดอ่านอย่างเดียว และบทบาท Postgres ที่กำหนดตายตัว) ผ่านพารามิเตอร์คิวรี URL บน URL ของ MCP server คำขอที่ใช้ API key จะใช้พารามิเตอร์เหล่านี้กับทุกคำขอ ส่วนโทเค็น OAuth จะจัดเก็บสิทธิ์ที่ยืนยันหรือแก้ไขไว้ในขั้นตอนการอนุญาต

Paramคำอธิบายตัวอย่าง
readonlyเปิดใช้โหมดอ่านอย่างเดียว (true/false)?readonly=true
categoryจำกัดเฉพาะหมวดหมู่เครื่องมือที่ระบุ (ซ้ำได้หรือคั่นด้วย CSV)?category=querying&category=schema
projectIdจำกัดการดำเนินการทั้งหมดให้อยู่ในโปรเจกต์เดียว?projectId=proj-123
roleNameเรียกใช้ SQL ทั้งหมดในฐานะบทบาท Postgres นี้แทนเจ้าของ?roleName=app_reader

ตัวอย่างโหมดอ่านอย่างเดียวและจำกัดขอบเขตโปรเจกต์:

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true&projectId=my-project-id"
    }
  }
}

ตัวอย่างการกรองตามหมวดหมู่ (เฉพาะเครื่องมือคิวรีและสคีมา):

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?category=querying&category=schema"
    }
  }
}

ตัวอย่างบทบาท Postgres ที่กำหนดตายตัว (อ่านอย่างเดียว โปรเจกต์เดียว และเรียกใช้ SQL ในฐานะ app_reader):

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true&projectId=my-project-id&roleName=app_reader"
    }
  }
}

roleName กำหนดบทบาทล็อกอิน Postgres สำหรับการเชื่อมต่อทั้งหมด SQL ทุกคำสั่งที่ server เรียกใช้ให้คุณ (run_sql, run_sql_transaction, explain_sql_statement, get_database_tables, describe_table_schema, describe_branch, list_slow_queries, inspect_database รวมถึง SQL ภายในการย้ายฐานข้อมูลและการปรับแต่งคิวรี) จะล็อกอินด้วยบทบาทนั้น ดังนั้นสิทธิ์ของ Postgres จึงเป็นตัวกำหนดว่าเอเจนต์จะอ่านหรือเปลี่ยนแปลงอะไรได้ หากไม่ได้กำหนดค่านี้ SQL จะทำงานในฐานะเจ้าของฐานข้อมูล โหมดอ่านอย่างเดียวยังคงครอบคิวรีไว้ในทรานแซกชัน READ ONLY ส่วนบทบาทที่กำหนดตายตัวจะเพิ่มข้อจำกัดที่ Postgres บังคับใช้กับการล็อกอินโดยตรง ดังนั้น SQL ที่หลุดออกจากทรานแซกชันก็ยังมีสิทธิ์ได้เพียงเท่าที่บทบาทนั้นอนุญาต

  • เซิร์ฟเวอร์จะค้นหาข้อมูลรับรองของบทบาทภายในระบบและจะไม่ส่งคืนข้อมูลเหล่านั้น get_connection_string ไม่พร้อมใช้งานบนการเชื่อมต่อที่ปักหมุดไว้
  • อาร์กิวเมนต์ของเครื่องมือ role_name ที่แตกต่างจากบทบาทที่ปักหมุดไว้จะถูกปฏิเสธ หากไม่ระบุ ระบบจะใช้บทบาทที่ปักหมุดไว้ ไม่ใช่เจ้าของ
  • หากไม่มีบทบาทนั้น หรือไม่สามารถเข้าสู่ระบบได้ (เช่น ALTER ROLE … NOLOGIN) การเรียกจะล้มเหลวก่อนที่จะรัน SQL ใดๆ และจะไม่ลองใหม่โดยใช้บทบาทอื่น
  • ค่าต้องเป็นชื่อบทบาท Postgres ที่ตรงกันทุกประการ: ตัวอักษร ตัวเลข _ หรือ $ โดยต้องขึ้นต้นด้วยตัวอักษรหรือ _ และมีความยาวไม่เกิน 63 อักขระ ค่าอื่นใด (ค่าว่าง ซ้ำ มีเครื่องหมายอัญประกาศ หรือมีขีดกลาง) จะถูกปฏิเสธด้วย 400 ไม่ใช่ถูกละเว้น
  • บทบาทต้องเข้าสู่ระบบได้ (LOGIN) และต้องมีอยู่ในทุก branch ที่คุณเรียกใช้ บทบาทที่สร้างด้วย SQL (CREATE ROLE app_reader LOGIN PASSWORD '…') ใช้งานได้ เช่นเดียวกับบทบาทที่สร้างใน Neon Console หรือ API การกำหนดสิทธิ์ให้บทบาทเท่าที่จำเป็นและไม่มากไปกว่านั้นคือสิ่งที่ทำให้การปักหมุดมีประโยชน์ สำหรับเอเจนต์แบบอ่านอย่างเดียว ให้สิทธิ์ SELECT บนตารางที่ควรเข้าถึง และอย่าเพิ่มสิทธิ์นี้ให้กับ neon_superuser create_postgres_role ที่มี access: "read_only" จะสร้างบทบาทดังกล่าวจากการเชื่อมต่อที่ไม่มี roleName บทบาทที่สร้างโดยไม่มี access จะเข้าร่วม neon_superuser
  • OAuth: การระบุ roleName ใน URL ของ MCP จะกำหนด grant แบบตายตัว หน้าการอนุญาตจะแสดงบทบาท และโทเค็นที่ออกให้จะคงบทบาทนั้นไว้เมื่อรีเฟรช การเปลี่ยน URL ในภายหลังจะไม่เปลี่ยนโทเค็น ให้ทำการอนุญาตอีกครั้ง หากใช้ URL เริ่มต้น (ซึ่งแก้ไขได้ในหน้าความยินยอม) ให้กรอกบทบาทในช่อง Postgres role ซึ่งเป็นช่องไม่บังคับแทน เว้นว่างไว้เพื่อคงเจ้าของฐานข้อมูลไว้ โทเค็นที่ออกก่อนมีตัวเลือกนี้จะไม่มีบทบาทที่ปักหมุดไว้และจะทำงานเหมือนเดิม
  • API key: ระบบจะอ่านบทบาทจาก URL ในทุกคำขอ ผู้ที่แก้ไข URL การเชื่อมต่อได้และมี API key สามารถเปลี่ยนหรือลบบทบาทได้ ดังนั้นให้เก็บ URL ไว้ในการกำหนดค่าที่เอเจนต์ควบคุมไม่ได้
  • การปักหมุดมีผลกับการเชื่อมต่อ SQL เท่านั้น เครื่องมือ Management API ยังคงทำงานด้วยสิทธิ์การเข้าถึงของ API key หรือโทเค็น OAuth เอง ตัวอย่างเช่น compare_database_schema คำนวณโดย Neon API และไม่ได้ถูกจำกัดด้วยสิทธิ์ของบทบาท ใช้ roleName ร่วมกับ readonly=true และ category เพื่อจำกัดเครื่องมือเหล่านั้นด้วย

คุณสามารถดูตัวอย่างเครื่องมือที่มองเห็นได้สำหรับการกำหนดค่าใดๆ โดยใช้ endpoint /api/list-tools (ไม่ต้องยืนยันตัวตน):

curl "https://mcp.neon.tech/api/list-tools?readonly=true&category=querying"
เครื่องมือที่ใช้ได้ในโหมดอ่านอย่างเดียว

เครื่องมือของโฮสต์: list_organizations, describe_branch, run_sql, get_database_tables, describe_table_schema, list_slow_queries, explain_sql_statement, inspect_database, get_neon_auth_config, search, fetch, search_docs, get_doc, send_feedback.

เครื่องมือ Management API ที่สร้างขึ้นโดยอัตโนมัติซึ่งเป็น GET และไม่ส่งคืนข้อมูลลับ รวมถึง query_logs (POST แบบอ่านอย่างเดียว) ดูชุดเครื่องมือที่แน่นอนได้ด้วย /api/list-tools?readonly=true.

เครื่องมือที่ต้องใช้สิทธิ์เขียน:

  • การเขียน Management API ที่สร้างขึ้นโดยอัตโนมัติ (create_project, create_branch, delete_project, …)
  • get_connection_string (สตริงการเชื่อมต่อมีรหัสผ่านของบทบาทที่มีสิทธิ์สูง จึงไม่แสดงในโหมดอ่านอย่างเดียว ให้คัดลอกจาก Neon Console แทน)
  • run_sql_transaction (คำสั่งจะทำงานในเซสชันเดียว ดังนั้นคำสั่ง COMMIT หรือ SET TRANSACTION READ WRITE จะทำให้ธุรกรรมแบบอ่านอย่างเดียวสิ้นสุดลง)
  • prepare_database_migration, complete_database_migration
  • prepare_query_tuning, complete_query_tuning

ความเข้ากันได้ของการขนส่ง

https://mcp.neon.tech/mcp ใช้ Streamable HTTP แบบไร้สถานะ รองรับโปรโตคอล MCP 2026-07-28 และโหมดสำรองแบบไร้สถานะสำหรับไคลเอ็นต์ยุค 2025 endpoint HTTP+SSE ที่เลิกใช้แล้ว /sse และ /message จะส่งคืน 410 Gone

เชื่อมต่อไคลเอ็นต์ Streamable HTTP กับ https://mcp.neon.tech/mcp สำหรับไคลเอ็นต์ ที่รองรับเฉพาะเซิร์ฟเวอร์ stdio ภายในเครื่อง ให้เพิ่มรายการนี้ในการกำหนดค่าไคลเอ็นต์เพื่อให้ mcp-remote ทำหน้าที่เชื่อมต่อไปยัง Streamable HTTP:

{
  "mcpServers": {
    "Neon": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.neon.tech/mcp"]
    }
  }
}

คำขอที่มีส่วนหัว Origin ซึ่งมีรูปแบบไม่ถูกต้องจะได้รับ 403 Forbidden ระบบยอมรับ origin ที่ซีเรียลไลซ์แล้วทุกรูปแบบ รวมถึงหน้าเว็บ ส่วนขยายเบราว์เซอร์ เว็บวิวบนเดสก์ท็อป และ null ดังนั้นไคลเอ็นต์บนเบราว์เซอร์จึงเชื่อมต่อได้ คำขอที่ไม่มี Origin จะไม่ได้รับผลกระทบ

สถาปัตยกรรมเซิร์ฟเวอร์ระยะไกล

เซิร์ฟเวอร์ระยะไกลทำงานเป็นแอปพลิเคชัน Next.js App Router บน Vercel ที่ mcp.neon.tech

[!NOTE] เส้นทางราก / จะเปลี่ยนเส้นทางไปยัง เอกสาร Neon MCP Server ไม่มีหน้า Landing Page

ส่วนหลักของการติดตั้งใช้งาน:

  • app/api/[transport]/route.ts: endpoint Streamable HTTP แบบไร้สถานะ (/mcp)
  • app/api/authorize/, app/callback/, app/api/token/, app/api/revoke/: endpoint สำหรับโฟลว์ OAuth
  • app/.well-known/: endpoint ข้อมูลเมตาสำหรับการค้นหา OAuth
  • mcp/: เซิร์ฟเวอร์ MCP, เครื่องมือ, ตัวจัดการ, การวิเคราะห์ และการผสานรวม Sentry
  • lib/: ตัวช่วยที่เข้ากันได้กับ Next.js (OAuth, การกำหนดค่า, การจัดการข้อผิดพลาด)
  • mcp/utils/read-only.ts: โหมดอ่านอย่างเดียวและการจัดการ scope

คู่มือ

ฟีเจอร์

เครื่องมือที่รองรับ

Neon MCP Server มีการดำเนินการต่อไปนี้ ซึ่งเปิดให้ไคลเอ็นต์ MCP ใช้ในรูปแบบ “เครื่องมือ” คุณสามารถใช้เครื่องมือเหล่านี้เพื่อโต้ตอบกับโปรเจ็กต์และฐานข้อมูล Neon ด้วยคำสั่งภาษาธรรมชาติ

ข้อมูลเมตา Scope ของเครื่องมือ

คำจำกัดความของเครื่องมือแต่ละรายการมีหมวดหมู่ scope ซึ่งใช้กรองเครื่องมือตาม grant และแสดงหน้าความยินยอม หมวดหมู่ปัจจุบันมีดังนี้:

  • projects
  • branches
  • endpoints
  • snapshots
  • schema
  • querying
  • neon_auth
  • data_api
  • observability
  • docs
  • functions
  • storage
  • realtime
  • null (เครื่องมือที่ไม่มีหมวดหมู่ scope: search, fetch, send_feedback)

หมายเหตุ:

  • เครื่องมือ Management API มาจาก @neon/tools ตัวเลือกเป็นเส้นทาง SDK (projects.list) ส่วนชื่อ MCP ที่เผยแพร่จะขึ้นต้นด้วยคำกริยา (list_projects, delete_project, query_logs) ชื่อเดิมจะยังคงใช้ในกรณีที่มีอยู่แล้ว (describe_project, create_branch, reset_from_parent, compare_database_schema, provision_neon_auth, provision_neon_data_api, list_branch_computes)
  • ?category=branches รวมเครื่องมือ branch, role และ database (list_postgres_roles, create_postgres_database, …) โทเค็นที่ออกให้แล้วสำหรับ branches จะได้รับสิทธิ์เขียนเหล่านั้น การแสดงรายการ compute คือ ?category=endpoints การกู้คืน snapshot คือ ?category=snapshots
  • ไม่มีการเผยแพร่การเขียนข้อมูลสมาชิกโปรเจ็กต์และสิทธิ์ list_project_members และ list_project_permissions เป็นการอ่าน
  • เครื่องมือ schema (?category=schema) ได้แก่เครื่องมือของโฮสต์ get_database_tables และ describe_table_schema รวมถึง compare_database_schema ที่สร้างขึ้นโดยอัตโนมัติ
  • การบังคับใช้โหมดอ่านอย่างเดียวยังคงอาศัย readOnlySafe และตรรกะอ่านอย่างเดียวฝั่งเซิร์ฟเวอร์ scope เป็นข้อมูลเมตาของหมวดหมู่ ไม่ใช่สวิตช์อ่าน/เขียนแบบแยกเดี่ยว
  • ในโหมดจำกัดขอบเขตตามโปรเจ็กต์ (?projectId=...) เครื่องมือที่ไม่มีเส้นทางโปรเจ็กต์ (list_projects, count_projects, create_project, get_project_consumption, get_branch_consumption, list_organizations, list_regions, search, fetch, …) จะถูกซ่อน delete_project ก็ถูกซ่อนเช่นกัน

การจัดการโปรเจ็กต์:

  • list_projects: แสดงรายการโปรเจ็กต์ Neon limit จำกัดจำนวนรายการที่ส่งกลับ
  • count_projects: ส่งคืนจำนวนโปรเจ็กต์ที่ใช้งานอยู่ในองค์กร org_id เป็นตัวเลือกเสริมและแก้ไขค่าในลักษณะเดียวกับ list_projects
  • describe_project: ดึงข้อมูลโปรเจ็กต์ Neon ตาม ID ({ "project_id": "…" })
  • get_project_consumption, get_branch_consumption: เมตริกการใช้งานของแต่ละโปรเจ็กต์หรือ branch โดยจัดกลุ่มตามรอบการเรียกเก็บเงิน รับค่า org_id, metrics, from, to และ granularity และต้องใช้แพ็กเกจ Launch, Scale, Agent, Business หรือ Enterprise นอกจากนี้ get_branch_consumption ยังต้องใช้ project_ids ปฏิเสธเมตริก extra_branches_month และ snapshot_storage_bytes_month และไม่พร้อมใช้งานในแพ็กเกจ Business endpoint สำหรับแพ็กเกจเดิม /consumption_history/projects ไม่ได้เผยแพร่
  • create_project: สร้างโปรเจ็กต์ Neon และรอจนกว่า compute เริ่มต้นจะพร้อมใช้งาน ไม่ส่งคืนสตริงการเชื่อมต่อ อาร์กิวเมนต์คือ { "name": "…", "org_id": "…", "region_id": "…" } เมื่อสำเร็จแล้ว ให้เรียก get_connection_string
  • delete_project: ลบโปรเจ็กต์ Neon ที่มีอยู่ อาร์กิวเมนต์คือ { "project_id": "…" }
  • list_organizations: แสดงรายการองค์กรทั้งหมดที่ผู้ใช้ปัจจุบันเข้าถึงได้ เลือกกรองตามชื่อหรือ ID ขององค์กรได้โดยใช้พารามิเตอร์ search

การจัดการ Branch:

  • list_branches: แสดงรายการ branch ในโปรเจ็กต์ ใช้เพื่อแปลงชื่อ branch เป็น ID br-…
  • list_credentials, create_credential, revoke_credential, rotate_credential: ข้อมูลรับรองที่กำหนดขอบเขตตาม branch สำหรับ Object Storage และ AI Gateway reveal ไม่ใช่เครื่องมือ การหมุนเวียนข้อมูลรับรองจะแทนที่ข้อมูลลับเดิมโดยตรงและไม่สามารถทำซ้ำได้อย่างปลอดภัย
  • create_branch: สร้าง branch พร้อม compute แบบอ่านเขียน และรอจนกว่าจะพร้อมใช้งาน ไม่ส่งคืนสตริงการเชื่อมต่อ อาร์กิวเมนต์คือ { "project_id": "…", "name": "feature-x" } ระบุ no_compute: true เพื่อข้าม endpoint เมื่อสำเร็จแล้ว ให้เรียก get_connection_string
  • reset_from_parent: รีเซ็ต branch ให้กลับไปยัง HEAD ปัจจุบันของ parent ({ "project_id": "…", "branch_id": "br-…" }) โดยจะทิ้งการเขียนทั้งหมดนับตั้งแต่ branch แยกออกมา ต้องระบุ preserve_under_name เมื่อ branch มี branch ลูก โดย branch ลูกเหล่านั้นจะย้ายไปยัง branch ใหม่ ใช้ได้เฉพาะ HEAD ของ parent ส่วนการกู้คืน ณ จุดเวลาใดเวลาหนึ่งคือ restore_snapshot
  • delete_branch: ลบ branch ({ "project_id": "…", "branch_id": "br-…" })
  • describe_branch: ดึงโครงสร้างต้นไม้ของฐานข้อมูล schema ตาราง วิว และฟังก์ชันใน branch
  • เครื่องมือ branch ที่สร้างขึ้นโดยอัตโนมัติรับ branch_id เป็น ID ของ branch (br-...) ไม่ใช่ชื่อ
  • restore_snapshot: กู้คืน snapshot ระบุ target_branch_id เพื่อกู้คืนไปยัง branch ที่มีอยู่แล้ว หากไม่ระบุ ระบบจะสร้าง branch ใหม่

Endpoint ของ Compute (?category=endpoints):

  • list_postgres_endpoints, list_branch_computes, get_postgres_endpoint, create_postgres_endpoint, update_postgres_endpoint, delete_postgres_endpoint, start_postgres_endpoint, suspend_postgres_endpoint, restart_postgres_endpoint

Snapshot (?category=snapshots):

  • list_snapshots, get_snapshot_schedule, set_snapshot_schedule, create_snapshot, update_snapshot, delete_snapshot, restore_snapshot

Schema (?category=schema):

  • get_database_tables, describe_table_schema
  • compare_database_schema: เปรียบเทียบ schema ของ SQL ในฐานข้อมูลหนึ่งกับอีก branch ต้องระบุ database_name หากไม่ระบุ base_branch_id ระบบจะเปรียบเทียบกับ parent ส่วน lsn, timestamp, base_lsn, base_timestamp เป็นตัวเลือกเสริมและใช้ได้เฉพาะการกู้คืน ณ จุดเวลาใดเวลาหนึ่ง

การเรียกใช้คิวรี SQL:

  • get_connection_string: ส่งคืนสตริงการเชื่อมต่อฐานข้อมูลของคุณ
  • run_sql: เรียกใช้คิวรี SQL รายการเดียวกับฐานข้อมูล Neon ที่ระบุ รองรับทั้งการอ่านและการเขียน role_name เป็นตัวเลือกเสริมสำหรับเข้าสู่ระบบในฐานะบทบาท Postgres นั้นแทนเจ้าของฐานข้อมูล และ compute_id ใช้เลือก compute โดยข้อมูลรับรองจะอยู่บนเซิร์ฟเวอร์ สำหรับการเชื่อมต่อที่มี ?roleName= ต้องไม่ระบุ role_name หรือระบุให้ตรงกัน
  • run_sql_transaction: เรียกใช้คิวรี SQL หลายรายการภายในธุรกรรมเดียวกับฐานข้อมูล Neon รับค่า role_name และ compute_id ซึ่งเป็นตัวเลือกเสริมเช่นเดียวกับ run_sql
  • get_database_tables: แสดงรายการตารางทั้งหมดในฐานข้อมูล Neon ที่ระบุ
  • describe_table_schema: ดึงคำจำกัดความ schema ของตารางที่ระบุ พร้อมรายละเอียดคอลัมน์ ชนิดข้อมูล และข้อจำกัด

การย้ายฐานข้อมูล (การเปลี่ยนแปลง Schema):

  • prepare_database_migration: เริ่มกระบวนการย้ายฐานข้อมูล โดยจะสร้างสาขาชั่วคราวเพื่อใช้และทดสอบการย้ายข้อมูลอย่างปลอดภัยก่อนที่จะส่งผลต่อสาขาหลัก
  • complete_database_migration: ดำเนินการย้ายฐานข้อมูลที่เตรียมไว้ให้เสร็จสิ้นและนำไปใช้กับสาขาหลัก การดำเนินการนี้จะผสานการเปลี่ยนแปลงจากสาขาการย้ายข้อมูลชั่วคราวและล้างทรัพยากรชั่วคราว

การสืบค้นและเพิ่มประสิทธิภาพ SQL:

  • inspect_database: เรียกใช้การวินิจฉัย Postgres แบบอ่านอย่างเดียวที่กำหนดไว้ล่วงหน้า 15 รายการกับสาขา ได้แก่ ขนาด relation และ index, การใช้งาน index และ sequential scan, คิวรีและล็อกที่กำลังทำงาน, คิวรีที่ใช้ทรัพยากรมากที่สุดและพบบ่อยที่สุด, อัตรา cache hit และขนาด working set, ค่าประมาณ autovacuum และ bloat รวมถึงสถานะการจำลองแบบ เป็นการตรวจสอบชุดเดียวกับคำสั่ง CLI neon inspect db ไม่ต้องระบุ database_name หากต้องการตรวจสอบฐานข้อมูลทั้งหมดในสาขา หรือระบุชื่อเพื่อเลือกตรวจสอบฐานข้อมูลเดียว ในการตรวจสอบ 4 รายการต้องใช้ส่วนขยาย pg_stat_statements หรือ neon
  • list_slow_queries: ระบุคอขวดด้านประสิทธิภาพโดยค้นหาคิวรีที่ทำงานช้าที่สุดในฐานข้อมูล ต้องใช้ส่วนขยาย pg_stat_statements
  • explain_sql_statement: แสดงแผนการทำงานโดยละเอียดของคิวรี SQL เพื่อช่วยระบุคอขวดด้านประสิทธิภาพ
  • prepare_query_tuning: วิเคราะห์ประสิทธิภาพของคิวรีและแนะนำการปรับปรุง เช่น การสร้าง index โดยสร้างสาขาชั่วคราวเพื่อทดสอบการปรับปรุงเหล่านี้อย่างปลอดภัย
  • complete_query_tuning: ดำเนินการปรับแต่งคิวรีให้เสร็จสิ้น โดยเลือกนำการปรับปรุงไปใช้กับสาขาหลักหรือยกเลิก พร้อมล้างสาขาปรับแต่งชั่วคราว

Neon Auth (?category=neon_auth):

  • provision_neon_auth, get_auth, disable_auth, update_auth_config
  • get_neon_auth_config: เครื่องมือ host; ปกปิด secrets อ่าน trusted origins, การเข้าถึง localhost, อีเมลและรหัสผ่าน, ผู้ให้บริการ OAuth, ผู้ให้บริการอีเมล, ปลั๊กอินองค์กร, magic link และหมายเลขโทรศัพท์ รวมถึง webhook
  • update_auth_allow_localhost, update_auth_email_and_password, update_auth_email_provider, send_auth_test_email, update_auth_plugins_organization, update_auth_plugins_magic_link, update_auth_plugins_phone_number, update_auth_webhooks: เปลี่ยนการตั้งค่าเหล่านั้น update_auth_webhooks จะแทนที่การกำหนดค่า webhook ทั้งหมด
  • list_auth_oauth_providers, add_auth_oauth_provider, update_auth_oauth_provider, delete_auth_oauth_provider
  • get_auth_oauth_server, update_auth_oauth_server: กำหนดค่า Neon Auth ให้เป็นเซิร์ฟเวอร์การให้สิทธิ์ OAuth 2.1 (รวมถึงสำหรับเซิร์ฟเวอร์ MCP) แยกจากผู้ให้บริการเข้าสู่ระบบผ่านโซเชียลด้านบน
  • list_auth_oauth_clients, get_auth_oauth_client, create_auth_oauth_client, update_auth_oauth_client, delete_auth_oauth_client, rotate_auth_oauth_client_secret: จัดการไคลเอ็นต์ OAuth ของเซิร์ฟเวอร์ดังกล่าว create_auth_oauth_client และ rotate_auth_oauth_client_secret จะส่งคืน client_secret เพียงครั้งเดียว
  • list_auth_trusted_domains, add_auth_trusted_domain, delete_auth_trusted_domain
  • create_auth_user, delete_auth_user, update_auth_user_role

Neon Data API (?category=data_api):

  • provision_neon_data_api, get_data_api, update_data_api, delete_data_api: จัดการ Data API สำหรับฐานข้อมูลของสาขา

การค้นหาและการสำรวจ:

  • search: ค้นหาองค์กร โปรเจกต์ และสาขาที่ตรงกับคิวรี ส่งคืน ID, ชื่อเรื่อง และลิงก์โดยตรงไปยัง Neon Console
  • fetch: ดึงข้อมูลโดยละเอียดเกี่ยวกับองค์กร โปรเจกต์ หรือสาขาที่ระบุ โดยใช้ ID (โดยทั่วไปได้จากเครื่องมือค้นหา)

ข้อเสนอแนะ (พร้อมใช้งานเสมอ รวมถึง endpoint ?category=docs ที่ไม่ต้องเข้าสู่ระบบ):

  • send_feedback: ส่งข้อเสนอแนะโดยไม่ระบุตัวตนไปยังทีม Neon โดยส่งเฉพาะข้อความข้อเสนอแนะ ไม่มีรายละเอียดบัญชี โปรเจกต์ หรือการเชื่อมต่อ จำกัดข้อความไว้ที่ 10,000 อักขระ

การสังเกตการณ์ (?category=observability): เครื่องมือเหล่านี้ต้องใช้ Neon Platform Beta และขณะนี้ใช้ได้เฉพาะกับโปรเจกต์ในภูมิภาค aws-us-east-2 เท่านั้น สาขาที่ไม่มีสิทธิ์เข้าถึง logs จะส่งคืน HTTP 404 พร้อมเหตุผล telemetry_not_enabled

  • query_logs: คิวรี logs ของ OpenTelemetry สำหรับสาขา ใช้ POST ใน Management API แต่เซิร์ฟเวอร์นี้ถือว่าเป็นการดำเนินการแบบอ่านอย่างเดียว
  • list_log_fields: แสดงรายการฟิลด์ log ที่สามารถแจกแจงค่าได้ในสาขา
  • list_log_field_values: แสดงรายการค่าที่ไม่ซ้ำกันของฟิลด์ log ภายในสาขาและช่วงเวลา

เอกสารและแหล่งข้อมูล (?category=docs):

  • search_docs: ค้นหาใน neon.com (เอกสาร, ข้อมูลอ้างอิง API, บทแนะนำ PostgreSQL, คู่มือ, คำถามที่พบบ่อย, บันทึกการเปลี่ยนแปลง และบล็อก) ด้วยการค้นหาแบบเดียวกับช่องค้นหาของ neon.com รับ query, categories ที่ไม่บังคับ (docs, api, postgresql, guides, faqs, blog, changelog) และ limit ที่ไม่บังคับ (1-40, ค่าเริ่มต้น 10) ส่งคืนหน้าที่จัดอันดับพร้อม title, url, slug, category, breadcrumb, heading และ excerpt; ส่ง slug ไปยัง get_doc เพื่ออ่านหน้า
  • get_doc: ดึงหน้า neon.com หนึ่งหน้าในรูปแบบ markdown รับ slug จากผลการค้นหา search_docs (เช่น docs/guides/prisma หรือ postgresql/tutorial/inner-join)

Functions (?category=functions):

  • list_functions, get_function, update_function, delete_function, deploy_function
  • list_functions_custom_domains, register_functions_custom_domain, delete_functions_custom_domain
  • list_triggers, get_trigger, create_trigger, update_trigger, delete_trigger: ทริกเกอร์ฟังก์ชันตามกำหนดเวลา (type: "schedule", cron แบบห้าฟิลด์ตามเวลา UTC)

Storage (?category=storage):

  • list_storage_buckets, create_storage_bucket, delete_storage_bucket
  • list_storage_objects, delete_storage_object, delete_storage_objects_by_prefix
  • presign_storage_object, get_storage

Realtime (?category=realtime):

  • get_realtime, enable_realtime, disable_realtime: สถานะ Realtime ของสาขา เปิดใช้งาน (ระบุ allowed_origins ได้) และปิดใช้งาน การเปิดและปิดใช้งานจะรอจนกว่าการเปลี่ยนแปลงจะมีผล
  • get_realtime_secret: shared secret ที่ backend ของแอปพลิเคชันใช้สร้างโทเค็น Realtime ไม่มีให้ใช้ในโหมดอ่านอย่างเดียว
  • rotate_realtime_secret: แทนที่ shared secret และรอจนกว่าการเปลี่ยนแปลงจะมีผล ไม่ใช่การดำเนินการแบบ idempotent เรียก get_realtime_secret หลังจากนั้นเพื่อรับค่าใหม่

การย้ายฐานข้อมูล

การย้ายฐานข้อมูลเป็นวิธีจัดการการเปลี่ยนแปลง schema ของฐานข้อมูลเมื่อเวลาผ่านไป เมื่อใช้ Neon MCP server LLM จะสามารถย้ายฐานข้อมูลได้อย่างปลอดภัยด้วยคำสั่ง "Start" (prepare_database_migration) และ "Commit" (complete_database_migration) ที่แยกจากกัน

คำสั่ง "Start" รับการย้ายฐานข้อมูลและเรียกใช้ในสาขาชั่วคราวใหม่ เมื่อส่งผลลัพธ์กลับ คำสั่งนี้จะแนะนำ LLM ให้ทดสอบการย้ายฐานข้อมูลในสาขานี้ จากนั้น LLM จึงเรียกใช้คำสั่ง "Commit" เพื่อนำการย้ายฐานข้อมูลไปใช้กับสาขาต้นทาง

การพัฒนา

โปรเจกต์นี้ใช้ pnpm เป็น package manager โดยกำหนดเวอร์ชันผ่าน Corepack

โครงสร้างโปรเจกต์

โค้ด MCP server อยู่ที่รากของ repository เป็นแอปพลิเคชัน Next.js ที่ deploy ไปยัง Vercel ที่ mcp.neon.tech

corepack enable
pnpm install

ดูวิธีเพิ่มเครื่องมือได้ที่ CONTRIBUTING.md อาร์กิวเมนต์ของเครื่องมือเป็น snake_case

การพัฒนาในเครื่อง

# Start the Next.js dev server (for the remote MCP server)
pnpm dev

Linting และการตรวจสอบชนิดข้อมูล

pnpm lint
pnpm typecheck

ตัวแปรสภาพแวดล้อม

จำเป็นสำหรับ runtime ของเซิร์ฟเวอร์ระยะไกล:

VariableDescription
SERVER_HOSTURL ของเซิร์ฟเวอร์ (ค่าเริ่มต้นคือ VERCEL_URL)
UPSTREAM_OAUTH_HOSTURL ของผู้ให้บริการ Neon OAuth
CLIENT_IDID ของไคลเอ็นต์ OAuth
CLIENT_SECRETsecret ของไคลเอ็นต์ OAuth
KV_URLURL ของ Upstash Redis (ล็อกชั่วคราว)
OAUTH_DATABASE_URLURL ของ Postgres สำหรับจัดเก็บโทเค็น

ไม่บังคับ:

VariableDescription
LOG_LEVELระดับ log ของ Winston: error, warn, info (ค่าเริ่มต้น), debug, verbose, silly
NEON_MCP_DISABLE_ANALYTICSตั้งค่าเป็น 1 เพื่อปิดใช้งานการวิเคราะห์ผลิตภัณฑ์

พีระมิดการทดสอบ

เรียกใช้การทดสอบทั้งหมดจากรากของ repository

# Unit tests
pnpm test:unit

# Integration tests
pnpm test:integration

# MCP protocol end-to-end tests (real MCP client/server tool calls)
pnpm test:e2e:mcp

# Website end-to-end tests (Playwright; provisions/validates ephemeral DB first)
pnpm test:e2e:web

# Full end-to-end suite
pnpm test:e2e

# Full test pyramid (unit + integration + e2e; used in CI)
pnpm test

กลยุทธ์การทดสอบ:

  • เลือกใช้การทดสอบ E2E สำหรับ transport/protocol และพฤติกรรมที่ผู้ใช้มองเห็น
  • ใช้การทดสอบ integration สำหรับสัญญาของเครื่องมือและพฤติกรรมของเวิร์กโฟลว์ที่ให้ผลแน่นอน
  • ใช้การทดสอบ unit สำหรับตรรกะที่ไม่มีผลข้างเคียงและกรณีขอบ
  • หลีกเลี่ยงการพึ่งพาความพร้อมใช้งานของบริการภายนอกในการทดสอบที่ใช้ตัดสินการผสานโค้ด ให้จำลอง dependency ภายนอกในระดับ integration/unit

การนำไปใช้งาน

Vercel จะ deploy เซิร์ฟเวอร์ระยะไกลโดยอัตโนมัติตามการกำหนดค่าสาขาของ repository มีสภาพแวดล้อม Preview สำหรับ pull request

Telemetry

Neon MCP server เก็บข้อมูลวิเคราะห์ผลิตภัณฑ์และรายงานข้อผิดพลาด เพื่อช่วยให้เราเข้าใจการใช้งานและปรับปรุงความน่าเชื่อถือ:

  • การวิเคราะห์ผลิตภัณฑ์ (Segment): เมื่อคุณเชื่อมต่อด้วยบัญชีที่ผ่านการยืนยันตัวตน เซิร์ฟเวอร์จะส่งเหตุการณ์ identify พร้อม ID บัญชี Neon ชื่อ และที่อยู่อีเมลของคุณ นอกจากนี้ยังติดตามการเริ่มเซสชัน (server_init), การเรียกใช้เครื่องมือแต่ละครั้ง (tool_call) และข้อผิดพลาดที่ไม่คาดคิดของเซิร์ฟเวอร์ (server_error) เหตุการณ์การเรียกใช้เครื่องมือจะมีชื่อเครื่องมือ วิธีการยืนยันตัวตน และไคลเอ็นต์ แต่ไม่มีอาร์กิวเมนต์ของเครื่องมือหรือผลลัพธ์ของคิวรี การเรียกใช้เครื่องมือสำหรับเอกสารเท่านั้นโดยไม่มีบัญชีจะถูกติดตามโดยไม่ระบุตัวตน เหตุการณ์จะส่งไปยัง track.neon.tech ซึ่งเป็น endpoint การวิเคราะห์ของ Neon เอง
  • การรายงานข้อผิดพลาด (Sentry): รายงานข้อผิดพลาดที่ไม่คาดคิดของเซิร์ฟเวอร์พร้อม stack trace และบริบทของคำขอ

การเก็บข้อมูลนี้อยู่ภายใต้ นโยบายความเป็นส่วนตัวของ Neon หากต้องการปิดใช้งานการวิเคราะห์เมื่อเรียกใช้เซิร์ฟเวอร์ด้วยตนเอง ให้ตั้งค่า NEON_MCP_DISABLE_ANALYTICS=1 การตั้งค่านี้จะไม่ปิดใช้งาน Sentry