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 MCP Server
Neon MCP Server เป็นเครื่องมือโอเพนซอร์สที่ช่วยให้คุณโต้ตอบกับฐานข้อมูล Lakebase Postgres บน Neon ได้ด้วย ภาษาธรรมชาติ
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:
- ตั้งค่าอย่างรวดเร็วด้วย API Key (Cursor, VS Code และ Claude Code): เรียกใช้
neon@latest initเพื่อกำหนดค่า MCP Server ของ Neon, ทักษะของเอเจนต์ และส่วนขยาย VS Code โดยอัตโนมัติด้วยคำสั่งเดียว - Remote MCP Server (การยืนยันตัวตนด้วย OAuth): เชื่อมต่อกับ MCP server ที่ Neon จัดการโดยใช้ OAuth เพื่อยืนยันตัวตน วิธีนี้สะดวกกว่าเพราะไม่ต้องจัดการ API key นอกจากนี้ คุณจะได้รับฟีเจอร์และการปรับปรุงล่าสุดโดยอัตโนมัติทันทีที่เผยแพร่
- 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.techIP แบบคงที่)
สำหรับการพัฒนา คุณจะต้องใช้ 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 ก็ได้ * จะถือว่าเป็นการเขียน หากไคลเอ็นต์ยังคงส่งค่านี้มา
โหมดอ่านอย่างเดียว จำกัดเครื่องมือที่พร้อมใช้งาน โดยปิดการดำเนินการเขียน เช่น การสร้างโปรเจกต์ สาขา หรือการเรียกใช้การย้ายฐานข้อมูล เครื่องมืออ่านอย่างเดียวประกอบด้วยการแสดงรายการโปรเจกต์ การอธิบายสคีมา การเรียกใช้คิวรีข้อมูล และการดูเมตริกประสิทธิภาพ
คุณตั้งค่าโหมดอ่านอย่างเดียวได้สองวิธี:
- URL MCP เริ่มต้น (แก้ไขการยินยอมได้): เชื่อมต่อด้วย
https://mcp.neon.tech/mcpแล้วยกเลิกการเลือก Allow writes ในหน้าการอนุญาต คุณยังเลือกโปรเจกต์ บทบาท Postgres สำหรับ SQL และหมวดหมู่เครื่องมือบางส่วนได้ในหน้านั้น - 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_superusercreate_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_migrationprepare_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 สำหรับโฟลว์ OAuthapp/.well-known/: endpoint ข้อมูลเมตาสำหรับการค้นหา OAuthmcp/: เซิร์ฟเวอร์ MCP, เครื่องมือ, ตัวจัดการ, การวิเคราะห์ และการผสานรวม Sentrylib/: ตัวช่วยที่เข้ากันได้กับ Next.js (OAuth, การกำหนดค่า, การจัดการข้อผิดพลาด)mcp/utils/read-only.ts: โหมดอ่านอย่างเดียวและการจัดการ scope
คู่มือ
- คู่มือ Neon MCP Server
- เชื่อมต่อไคลเอ็นต์ MCP กับ Neon
- Cursor กับ Neon MCP Server
- Claude Code กับ Neon MCP Server
- Claude Desktop กับ Neon MCP Server
- Cline กับ Neon MCP Server
- Windsurf กับ Neon MCP Server
- Zed กับ Neon MCP Server
ฟีเจอร์
เครื่องมือที่รองรับ
Neon MCP Server มีการดำเนินการต่อไปนี้ ซึ่งเปิดให้ไคลเอ็นต์ MCP ใช้ในรูปแบบ “เครื่องมือ” คุณสามารถใช้เครื่องมือเหล่านี้เพื่อโต้ตอบกับโปรเจ็กต์และฐานข้อมูล Neon ด้วยคำสั่งภาษาธรรมชาติ
ข้อมูลเมตา Scope ของเครื่องมือ
คำจำกัดความของเครื่องมือแต่ละรายการมีหมวดหมู่ scope ซึ่งใช้กรองเครื่องมือตาม grant และแสดงหน้าความยินยอม หมวดหมู่ปัจจุบันมีดังนี้:
projectsbranchesendpointssnapshotsschemaqueryingneon_authdata_apiobservabilitydocsfunctionsstoragerealtimenull(เครื่องมือที่ไม่มีหมวดหมู่ 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: แสดงรายการโปรเจ็กต์ Neonlimitจำกัดจำนวนรายการที่ส่งกลับcount_projects: ส่งคืนจำนวนโปรเจ็กต์ที่ใช้งานอยู่ในองค์กรorg_idเป็นตัวเลือกเสริมและแก้ไขค่าในลักษณะเดียวกับlist_projectsdescribe_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_stringdelete_project: ลบโปรเจ็กต์ Neon ที่มีอยู่ อาร์กิวเมนต์คือ{ "project_id": "…" }list_organizations: แสดงรายการองค์กรทั้งหมดที่ผู้ใช้ปัจจุบันเข้าถึงได้ เลือกกรองตามชื่อหรือ ID ขององค์กรได้โดยใช้พารามิเตอร์ search
การจัดการ Branch:
list_branches: แสดงรายการ branch ในโปรเจ็กต์ ใช้เพื่อแปลงชื่อ branch เป็น IDbr-…list_credentials,create_credential,revoke_credential,rotate_credential: ข้อมูลรับรองที่กำหนดขอบเขตตาม branch สำหรับ Object Storage และ AI Gatewayrevealไม่ใช่เครื่องมือ การหมุนเวียนข้อมูลรับรองจะแทนที่ข้อมูลลับเดิมโดยตรงและไม่สามารถทำซ้ำได้อย่างปลอดภัยcreate_branch: สร้าง branch พร้อม compute แบบอ่านเขียน และรอจนกว่าจะพร้อมใช้งาน ไม่ส่งคืนสตริงการเชื่อมต่อ อาร์กิวเมนต์คือ{ "project_id": "…", "name": "feature-x" }ระบุno_compute: trueเพื่อข้าม endpoint เมื่อสำเร็จแล้ว ให้เรียกget_connection_stringreset_from_parent: รีเซ็ต branch ให้กลับไปยัง HEAD ปัจจุบันของ parent ({ "project_id": "…", "branch_id": "br-…" }) โดยจะทิ้งการเขียนทั้งหมดนับตั้งแต่ branch แยกออกมา ต้องระบุpreserve_under_nameเมื่อ branch มี branch ลูก โดย branch ลูกเหล่านั้นจะย้ายไปยัง branch ใหม่ ใช้ได้เฉพาะ HEAD ของ parent ส่วนการกู้คืน ณ จุดเวลาใดเวลาหนึ่งคือrestore_snapshotdelete_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_schemacompare_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_sqlget_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 รวมถึงสถานะการจำลองแบบ เป็นการตรวจสอบชุดเดียวกับคำสั่ง CLIneon inspect dbไม่ต้องระบุdatabase_nameหากต้องการตรวจสอบฐานข้อมูลทั้งหมดในสาขา หรือระบุชื่อเพื่อเลือกตรวจสอบฐานข้อมูลเดียว ในการตรวจสอบ 4 รายการต้องใช้ส่วนขยายpg_stat_statementsหรือneonlist_slow_queries: ระบุคอขวดด้านประสิทธิภาพโดยค้นหาคิวรีที่ทำงานช้าที่สุดในฐานข้อมูล ต้องใช้ส่วนขยาย pg_stat_statementsexplain_sql_statement: แสดงแผนการทำงานโดยละเอียดของคิวรี SQL เพื่อช่วยระบุคอขวดด้านประสิทธิภาพprepare_query_tuning: วิเคราะห์ประสิทธิภาพของคิวรีและแนะนำการปรับปรุง เช่น การสร้าง index โดยสร้างสาขาชั่วคราวเพื่อทดสอบการปรับปรุงเหล่านี้อย่างปลอดภัยcomplete_query_tuning: ดำเนินการปรับแต่งคิวรีให้เสร็จสิ้น โดยเลือกนำการปรับปรุงไปใช้กับสาขาหลักหรือยกเลิก พร้อมล้างสาขาปรับแต่งชั่วคราว
Neon Auth (?category=neon_auth):
provision_neon_auth,get_auth,disable_auth,update_auth_configget_neon_auth_config: เครื่องมือ host; ปกปิด secrets อ่าน trusted origins, การเข้าถึง localhost, อีเมลและรหัสผ่าน, ผู้ให้บริการ OAuth, ผู้ให้บริการอีเมล, ปลั๊กอินองค์กร, magic link และหมายเลขโทรศัพท์ รวมถึง webhookupdate_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_providerget_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_domaincreate_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 Consolefetch: ดึงข้อมูลโดยละเอียดเกี่ยวกับองค์กร โปรเจกต์ หรือสาขาที่ระบุ โดยใช้ 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_functionlist_functions_custom_domains,register_functions_custom_domain,delete_functions_custom_domainlist_triggers,get_trigger,create_trigger,update_trigger,delete_trigger: ทริกเกอร์ฟังก์ชันตามกำหนดเวลา (type: "schedule", cron แบบห้าฟิลด์ตามเวลา UTC)
Storage (?category=storage):
list_storage_buckets,create_storage_bucket,delete_storage_bucketlist_storage_objects,delete_storage_object,delete_storage_objects_by_prefixpresign_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 ของเซิร์ฟเวอร์ระยะไกล:
| Variable | Description |
|---|---|
SERVER_HOST | URL ของเซิร์ฟเวอร์ (ค่าเริ่มต้นคือ VERCEL_URL) |
UPSTREAM_OAUTH_HOST | URL ของผู้ให้บริการ Neon OAuth |
CLIENT_ID | ID ของไคลเอ็นต์ OAuth |
CLIENT_SECRET | secret ของไคลเอ็นต์ OAuth |
KV_URL | URL ของ Upstash Redis (ล็อกชั่วคราว) |
OAUTH_DATABASE_URL | URL ของ Postgres สำหรับจัดเก็บโทเค็น |
ไม่บังคับ:
| Variable | Description |
|---|---|
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