Neon
ทางการโต้ตอบกับแพลตฟอร์ม Postgres แบบไร้เซิร์ฟเวอร์ของ Neon
คุณทำอะไรได้บ้างด้วย Neon MCP?
- สร้างและจัดการโปรเจกต์ — ขอสร้างฐานข้อมูล Postgres ใหม่ ดูรายการโปรเจกต์ที่มีอยู่ หรือลบโปรเจกต์ผ่าน
create_projectหรือlist_projects - รันคิวรีและธุรกรรม SQL — ดำเนินการคิวรี SQL แบบคำสั่งเดียวหรือหลายคำสั่งกับฐานข้อมูล รวมถึงการเขียนข้อมูล โดยใช้
run_sqlหรือrun_sql_transaction - ตรวจสอบและปรับปรุงประสิทธิภาพ — ระบุคิวรีที่ช้า รับแผนการดำเนินการ หรือรันการวินิจฉัย เช่น อัตราการเข้าถึงแคช ผ่าน
list_slow_queries,explain_sql_statementหรือinspect_database - ย้ายสคีมาอย่างปลอดภัย — เริ่มการย้ายบนสาขาชั่วคราว ทดสอบ จากนั้นคอมมิตไปยังสาขาหลักด้วย
prepare_database_migrationและcomplete_database_migration - สำรวจโครงสร้างฐานข้อมูล — ดูรายการตาราง อธิบายสคีมาของคอลัมน์ หรือเปรียบเทียบสคีมาระหว่างสาขา โดยใช้
get_database_tables,describe_table_schemaหรือcompare_database_schema
เซิร์ฟเวอร์ 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) เป็นโปรโตคอลมาตรฐานที่ออกแบบมาเพื่อจัดการบริบทระหว่างโมเดลภาษาขนาดใหญ่ (LLMs) และระบบภายนอก ที่เก็บนี้ให้บริการ MCP Server ระยะไกลสำหรับ Neon
MCP server ของ Neon ทำหน้าที่เป็นสะพานเชื่อมระหว่างคำขอภาษาธรรมชาติและ Neon API สร้างขึ้นบน MCP โดยแปลคำขอของคุณเป็นการเรียก API ที่จำเป็น ช่วยให้คุณจัดการงานต่างๆ เช่น การสร้างโปรเจกต์และ分支 การรันคิวรี และการทำ database migrations ได้อย่างราบรื่น
คุณสมบัติหลักบางประการของ Neon MCP server ได้แก่:
- การโต้ตอบด้วยภาษาธรรมชาติ: จัดการฐานข้อมูล Neon โดยใช้คำสั่งสนทนาที่เข้าใจง่าย
- การจัดการฐานข้อมูลที่ง่ายขึ้น: ดำเนินการที่ซับซ้อนโดยไม่ต้องเขียน SQL หรือใช้ Neon API โดยตรง
- เข้าถึงได้สำหรับผู้ที่ไม่ใช่นักพัฒนา: เสริมศักยภาพให้ผู้ใช้ที่มีพื้นฐานทางเทคนิคหลากหลายสามารถโต้ตอบกับฐานข้อมูล Neon ได้
- รองรับการย้ายฐานข้อมูล: ใช้ความสามารถด้าน branching ของ Neon สำหรับการเปลี่ยนแปลง schema ของฐานข้อมูลที่เริ่มต้นผ่านภาษาธรรมชาติ
ตัวอย่างเช่น ใน 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, agent skills และส่วนขยาย VS Code โดยอัตโนมัติด้วยคำสั่งเดียว - Remote MCP Server (การรับรองความถูกต้องแบบ OAuth): เชื่อมต่อกับ MCP server ที่จัดการโดย Neon โดยใช้ OAuth สำหรับการรับรองความถูกต้อง วิธีนี้สะดวกกว่าเนื่องจากไม่ต้องจัดการ API keys นอกจากนี้ คุณจะได้รับคุณสมบัติและการปรับปรุงล่าสุดโดยอัตโนมัติทันทีที่เผยแพร่
- Remote MCP Server (การรับรองความถูกต้องแบบ API Key): เชื่อมต่อกับ MCP server ที่จัดการโดย Neon โดยใช้ API key สำหรับการรับรองความถูกต้อง วิธีนี้มีประโยชน์หากคุณต้องการเชื่อมต่อ agent ระยะไกลกับ Neon ในกรณีที่ไม่มี OAuth นอกจากนี้ คุณจะได้รับคุณสมบัติและการปรับปรุงล่าสุดโดยอัตโนมัติทันทีที่เผยแพร่
ข้อกำหนดเบื้องต้น
- แอปพลิเคชัน MCP Client
- บัญชี Neon
- Node.js (>= v18.0.0): ดาวน์โหลดจาก nodejs.org
- หากเปิดใช้ IP Allow ให้เพิ่ม
34.192.103.46และ23.22.233.166ในรายการที่อนุญาตของคุณ (mcp.neon.techstatic IPs)
สำหรับการพัฒนา คุณต้องมี 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 ให้คุณ และกำหนดค่า editor ของคุณโดยอัตโนมัติ
ตัวเลือกที่ 2. Remote Hosted MCP Server (การรับรองความถูกต้องแบบ OAuth)
เชื่อมต่อกับ MCP server ที่จัดการโดย Neon โดยใช้ OAuth สำหรับการรับรองความถูกต้อง นี่เป็นการตั้งค่าที่ง่ายที่สุด ไม่ต้องติดตั้งเซิร์ฟเวอร์นี้ในเครื่อง และไม่จำเป็นต้องกำหนดค่า Neon API key ใน client
รันคำสั่งต่อไปนี้เพื่อเพิ่ม Neon MCP Server สำหรับ agent และ editor ที่ตรวจพบทั้งหมดใน workspace ของคุณ:
npx add-mcp "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"
URL นั้นเผยแพร่โปรเจกต์, branches, compute endpoints, การคิวรี และ schema ดูตัวอย่างด้วย /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 ของ client ของคุณ (เช่น 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: เพิ่มสิ่งต่อไปนี้ในไฟล์กำหนดค่า Kiro MCP ของคุณ (~/.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 หาก client ของคุณรองรับ
สร้าง Neon API key ใน Neon Console จากนั้นรันคำสั่งต่อไปนี้เพื่อเพิ่ม Neon MCP Server สำหรับ agent และ editor ที่ตรวจพบทั้งหมดใน workspace ของคุณ:
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 ของ client ของคุณ (เช่น 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 ขององค์กรเพื่อจำกัดการเข้าถึงเฉพาะโปรเจกต์ภายใต้องค์กรนั้นเท่านั้น
Scopes และโหมดอ่านอย่างเดียว
Neon MCP โฆษณา OAuth scopes read และ write MCP client ของคุณสามารถขอสิ่งเหล่านี้ หรือคุณสามารถเลือกในการตั้งค่าการอนุญาต OAuth UI ได้ * ถือเป็นการเขียนหาก client ยังส่งมันอยู่
โหมดอ่านอย่างเดียว จำกัดเครื่องมือที่พร้อมใช้งาน โดยปิดการดำเนินการเขียน เช่น การสร้างโปรเจกต์, branches หรือการรัน migrations เครื่องมืออ่านอย่างเดียวรวมถึงการแสดงรายการโปรเจกต์ การอธิบาย schema การคิวรีข้อมูล และการดูเมตริกประสิทธิภาพ
คุณสามารถตั้งค่าโหมดอ่านอย่างเดียวได้สองวิธี:
- URL MCP เริ่มต้น (การยินยอมที่แก้ไขได้): เชื่อมต่อกับ
https://mcp.neon.tech/mcpและยกเลิกการเลือก Allow writes ในหน้าอนุญาต คุณยังสามารถเลือกหนึ่งโปรเจกต์และชุดย่อยของหมวดหมู่เครื่องมือได้ที่นั่น - URL MCP แบบมีพารามิเตอร์ (การยินยอมคงที่): ใส่
readonly,projectIdและ/หรือcategoryใน 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บน URL MCP เป็นสิทธิ์คงที่ที่ยืนยันที่การอนุญาตreadonly=trueไม่สามารถขยายเป็นการเขียนได้ในหน้านั้น หลังจากออก token แล้ว การเปลี่ยน URL จะไม่ขยาย token นั้น อนุญาตอีกครั้ง
สำหรับการลงทะเบียน OAuth x-read-only เป็นค่าเริ่มต้น Allow-writes เริ่มต้นในการยินยอมที่แก้ไขได้ มันไม่ได้ล็อกการยืนยัน และไม่ลด URL แบบมีพารามิเตอร์ที่รวม readonly=false คำขอ API-key ยังคงให้เกียรติ x-read-only ต่อคำขอ ต่ำกว่าพารามิเตอร์คิวรี readonly
หมายเหตุ: โหมดอ่านอย่างเดียวจำกัด เครื่องมือ ที่พร้อมใช้งาน นอกจากนี้ เครื่องมือ
run_sqlยังคงพร้อมใช้งานสำหรับคิวรีอ่านอย่างเดียวเท่านั้น
พารามิเตอร์คิวรี URL สำหรับการควบคุมการเข้าถึง
บริบทสิทธิ์ (หมวดหมู่ scope, การกำหนดขอบเขตโปรเจกต์, โหมดอ่านอย่างเดียว) ถูกกำหนดค่าผ่านพารามิเตอร์คิวรี URL บน URL ของ MCP server คำขอ API-key ใช้พารามิเตอร์เหล่านั้นในแต่ละคำขอ OAuth tokens เก็บสิทธิ์ที่ยืนยันหรือแก้ไขที่การอนุญาต
| พารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
readonly | เปิดใช้งานโหมดอ่านอย่างเดียว (true/false) | ?readonly=true |
category | จำกัดเฉพาะหมวดหมู่เครื่องมือที่ระบุ (ซ้ำหรือ CSV) | ?category=querying&category=schema |
projectId | กำหนดขอบเขตการดำเนินการทั้งหมดให้กับโปรเจกต์เดียว | ?projectId=proj-123 |
ตัวอย่างอ่านอย่างเดียว + กำหนดขอบเขตโปรเจกต์:
{
"mcpServers": {
"Neon": {
"url": "https://mcp.neon.tech/mcp?readonly=true&projectId=my-project-id"
}
}
}
ตัวอย่างกรองหมวดหมู่ (เฉพาะเครื่องมือคิวรีและ schema):
{
"mcpServers": {
"Neon": {
"url": "https://mcp.neon.tech/mcp?category=querying&category=schema"
}
}
}
คุณสามารถดูตัวอย่างว่าเครื่องมือใดที่มองเห็นได้สำหรับการกำหนดค่าใดๆ โดยใช้ปลายทาง /api/list-tools (ไม่ต้องรับรองความถูกต้อง):
curl "https://mcp.neon.tech/api/list-tools?readonly=true&category=querying"
เครื่องมือที่พร้อมใช้งานในโหมดอ่านอย่างเดียว
เครื่องมือโฮสต์: list_organizations, describe_branch, run_sql, run_sql_transaction, get_database_tables, describe_table_schema, list_slow_queries, explain_sql_statement, inspect_database, get_neon_auth_config, search, fetch, list_docs_resources, get_doc_resource
เครื่องมือ Management API ที่สร้างขึ้นซึ่งเป็น GET และไม่ส่งคืนความลับ รวมถึง query_logs (POST, อ่านอย่างเดียว) ดูตัวอย่างชุดที่แน่นอนด้วย /api/list-tools?readonly=true
เครื่องมือที่ต้องมีการเข้าถึงการเขียน:
- การเขียน Management API ที่สร้างขึ้น (
create_project,create_branch,delete_project, …) get_connection_string(connection string มีรหัสผ่านของบทบาทที่มีสิทธิ์ ดังนั้นจึงถูกระงับในโหมดอ่านอย่างเดียว คัดลอกจาก Neon Console แทน)prepare_database_migration,complete_database_migrationprepare_query_tuning,complete_query_tuning
การส่งผ่าน Server-Sent Events (SSE) (เลิกใช้แล้ว)
MCP รองรับการส่งผ่านเซิร์ฟเวอร์ระยะไกลสองแบบ: Server-Sent Events (SSE) ที่เลิกใช้แล้ว และ Streamable HTTP ที่ใหม่กว่าและแนะนำ หาก LLM client ของคุณยังไม่รองรับ Streamable HTTP คุณสามารถเปลี่ยนปลายทางจาก https://mcp.neon.tech/mcp เป็น https://mcp.neon.tech/sse เพื่อใช้ SSE แทน
รันคำสั่งต่อไปนี้เพื่อเพิ่ม Neon MCP Server สำหรับ agent และ editor ที่ตรวจพบทั้งหมดใน workspace ของคุณโดยใช้การส่งผ่าน SSE:
npx add-mcp https://mcp.neon.tech/sse --type sse
สถาปัตยกรรมเซิร์ฟเวอร์ระยะไกล
เซิร์ฟเวอร์ระยะไกลทำงานเป็นแอปพลิเคชัน Next.js App Router บน Vercel ที่ mcp.neon.tech
[!NOTE] เส้นทาง
/หลักเปลี่ยนเส้นทางไปยัง เอกสาร Neon MCP Server ไม่มีหน้าแลนดิ้ง
พื้นที่การใช้งานหลัก:
app/api/[transport]/route.ts: ปลายทางการส่งผ่าน MCP สำหรับ Streamable HTTP (/mcp) และ SSE (/sse)app/api/authorize/,app/callback/,app/api/token/,app/api/revoke/: ปลายทางขั้นตอน OAuthapp/.well-known/: ปลายทางข้อมูลเมตาการค้นพบ OAuthmcp/: MCP server, เครื่องมือ, handlers, การวิเคราะห์ และการรวม Sentrylib/: ตัวช่วยที่เข้ากันได้กับ Next.js (OAuth, การกำหนดค่า, การจัดการข้อผิดพลาด)mcp/utils/read-only.ts: การจัดการโหมดอ่านอย่างเดียวและ scope
คำแนะนำ
- คู่มือ Neon MCP Server
- เชื่อมต่อ MCP Clients กับ 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 Clients คุณสามารถใช้เครื่องมือเหล่านี้เพื่อโต้ตอบกับโปรเจกต์และฐานข้อมูล Neon ของคุณด้วยคำสั่งภาษาธรรมชาติ
ข้อมูลเมตาดาต้าขอบเขตของเครื่องมือ
คำจำกัดความของเครื่องมือแต่ละรายการมีหมวดหมู่ scope ที่ใช้สำหรับการกรองเครื่องมือตามสิทธิ์และการยินยอมของผู้ใช้ หมวดหมู่ปัจจุบันมีดังนี้:
projectsbranchesendpointssnapshotsschemaqueryingneon_authdata_apiobservabilitydocsfunctionsstoragenull(เครื่องมือที่ไม่มีหมวดหมู่ขอบเขต)
หมายเหตุ:
- เครื่องมือ 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,create_project,list_organizations,list_regions,search,fetch, …) จะถูกซ่อนdelete_projectก็ถูกซ่อนเช่นกัน
การจัดการโปรเจกต์:
list_projects: แสดงรายการโปรเจกต์ Neonlimitจำกัดจำนวนรายการที่ส่งกลับdescribe_project: ดึงข้อมูลโปรเจกต์ Neon ด้วย id ({ "project_id": "…" })create_project: สร้างโปรเจกต์ Neon และรอให้ compute เริ่มต้นพร้อมใช้งาน ไม่ส่งคืน connection string อาร์กิวเมนต์คือ{ "name": "…", "org_id": "…", "region_id": "…" }เรียกget_connection_stringหลังจากสำเร็จdelete_project: ลบโปรเจกต์ Neon ที่มีอยู่ อาร์กิวเมนต์คือ{ "project_id": "…" }list_organizations: แสดงรายการองค์กรทั้งหมดที่ผู้ใช้ปัจจุบันเข้าถึงได้ สามารถกรองตามชื่อองค์กรหรือ ID โดยใช้พารามิเตอร์การค้นหา
การจัดการ Branch:
list_branches: แสดงรายการ branches ในโปรเจกต์ ใช้เพื่อแปลงชื่อ branch เป็น idbr-…list_credentials,create_credential,revoke_credential,rotate_credential: ข้อมูลประจำตัวที่จำกัดขอบเขต branch สำหรับ Object Storage และ AI Gatewayrevealไม่ใช่เครื่องมือ; การหมุนเวียนจะแทนที่ secrets ในตำแหน่งเดิมและไม่ใช่ idempotentcreate_branch: สร้าง branch พร้อม compute แบบอ่าน-เขียนและรอจนกว่าจะพร้อมใช้งาน ไม่ส่งคืน connection string อาร์กิวเมนต์คือ{ "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 มี children; children เหล่านั้นจะย้ายไปยัง branch ใหม่ เฉพาะ parent HEAD; การกู้คืน ณ จุดเวลา คือrestore_snapshotdelete_branch: ลบ branch ({ "project_id": "…", "branch_id": "br-…" })describe_branch: ดึงโครงสร้างของ databases, schemas, tables, views และ functions บน branch- เครื่องมือ branch ที่สร้างขึ้นใช้
branch_idเป็น branch id (br-...) ไม่ใช่ชื่อ restore_snapshot: กู้คืน snapshot ส่งtarget_branch_idเพื่อกู้คืนลงบน branch ที่มีอยู่; ละเว้นเพื่อสร้าง branch ใหม่
Compute endpoints (?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
Snapshots (?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: ความแตกต่างของ SQL schema ระหว่างฐานข้อมูลหนึ่งกับอีก branchdatabase_nameจำเป็น การละเว้นbase_branch_idจะเปรียบเทียบกับ parentlsn,timestamp,base_lsn,base_timestampที่ไม่บังคับใช้เฉพาะ ณ จุดเวลาเท่านั้น
การดำเนินการ SQL Query:
get_connection_string: ส่งคืน connection string ของฐานข้อมูลของคุณrun_sql: ดำเนินการ SQL query เดียวกับฐานข้อมูล Neon ที่ระบุ รองรับทั้งการอ่านและการเขียนrun_sql_transaction: ดำเนินการชุด SQL queries ภายใน transaction เดียวกับฐานข้อมูล Neonget_database_tables: แสดงรายการตารางทั้งหมดภายในฐานข้อมูล Neon ที่ระบุdescribe_table_schema: ดึงคำจำกัดความ schema ของตารางเฉพาะ โดยให้รายละเอียดคอลัมน์ ประเภทข้อมูล และข้อจำกัด
การย้ายฐานข้อมูล (การเปลี่ยนแปลง Schema):
prepare_database_migration: เริ่มกระบวนการย้ายฐานข้อมูล สิ่งสำคัญคือสร้าง branch ชั่วคราวเพื่อใช้และทดสอบการย้ายอย่างปลอดภัยก่อนส่งผลต่อ branch หลักcomplete_database_migration: ทำให้การย้ายฐานข้อมูลที่เตรียมไว้เสร็จสมบูรณ์และนำไปใช้กับ branch หลัก การดำเนินการนี้รวมการเปลี่ยนแปลงจาก branch การย้ายชั่วคราวและทำความสะอาดทรัพยากรชั่วคราว
การสอบถามและปรับแต่ง SQL:
inspect_database: รันหนึ่งใน 15 การวินิจฉัย Postgres แบบอ่านอย่างเดียวที่กำหนดไว้ล่วงหน้ากับ branch — ขนาด relation และ index, การใช้งาน index และ sequential-scan, queries และ locks ที่ใช้งานอยู่, queries ที่หนักที่สุดและบ่อยที่สุด, อัตรา cache hit และขนาด working-set, การประมาณ autovacuum และ bloat และสถานะ replication ตรวจสอบเดียวกันกับคำสั่ง CLIneon inspect dbละเว้นdatabase_nameเพื่อครอบคลุมทุกฐานข้อมูลบน branch; ส่งชื่อเพื่อตรวจสอบหนึ่งรายการ สี่รายการต้องใช้ส่วนขยายpg_stat_statementsหรือneonlist_slow_queries: ระบุคอขวดประสิทธิภาพโดยค้นหา queries ที่ช้าที่สุดในฐานข้อมูล ต้องใช้ส่วนขยาย pg_stat_statementsexplain_sql_statement: ให้แผนการดำเนินการโดยละเอียดสำหรับ SQL queries เพื่อช่วยระบุคอขวดประสิทธิภาพprepare_query_tuning: วิเคราะห์ประสิทธิภาพ query และแนะนำการปรับแต่ง เช่น การสร้าง index สร้าง branch ชั่วคราวเพื่อทดสอบการปรับแต่งเหล่านี้อย่างปลอดภัยcomplete_query_tuning: ทำให้การปรับแต่ง query เสร็จสมบูรณ์โดยใช้การปรับแต่งกับ branch หลักหรือละทิ้ง ทำความสะอาด branch การปรับแต่งชั่วคราว
Neon Auth (?category=neon_auth):
provision_neon_auth,get_auth,disable_auth,update_auth_configget_neon_auth_config: เครื่องมือโฮสต์; secrets ถูกปกปิด ใช้เครื่องมือเขียน Auth ที่สร้างขึ้นเพื่อเปลี่ยนการตั้งค่าlist_auth_oauth_providers,add_auth_oauth_provider,update_auth_oauth_provider,delete_auth_oauth_providerlist_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 สำหรับฐานข้อมูล branch
การค้นหาและการค้นพบ:
search: ค้นหาองค์กร โปรเจกต์ และ branches ที่ตรงกับ query ส่งคืน IDs, titles และลิงก์โดยตรงไปยัง Neon Consolefetch: ดึงข้อมูลโดยละเอียดเกี่ยวกับองค์กร โปรเจกต์ หรือ branch เฉพาะโดยใช้ ID (โดยทั่วไปจากเครื่องมือค้นหา)
การสังเกตการณ์ (?category=observability): เครื่องมือเหล่านี้ต้องใช้ Neon Platform Beta และปัจจุบันใช้ได้เฉพาะโปรเจกต์ในภูมิภาค aws-us-east-2 เท่านั้น branch ที่ไม่มีการเข้าถึง logs จะส่งคืน HTTP 404 พร้อมเหตุผล telemetry_not_enabled
query_logs: สอบถาม OpenTelemetry logs สำหรับ branch POST ใน Management API; ถือว่าเป็นการอ่านอย่างเดียวโดยเซิร์ฟเวอร์นี้list_log_fields: แสดงรายการฟิลด์ log ที่คุณสามารถแจกแจงค่าบน branch ได้list_log_field_values: แสดงรายการค่าที่แตกต่างของฟิลด์ log ภายใน branch และช่วงเวลา
เอกสารและทรัพยากร (?category=docs):
list_docs_resources: แสดงรายการหน้าเอกสาร Neon ทั้งหมดโดยดึง index จากhttps://neon.com/docs/llms.txtส่งคืน URL และชื่อหน้าเว็บที่สามารถดึงได้ทีละรายการโดยใช้เครื่องมือget_doc_resourceget_doc_resource: ดึงหน้าเอกสาร Neon เฉพาะเป็นเนื้อหา markdown ใช้เครื่องมือlist_docs_resourcesก่อนเพื่อค้นพบ slugs หน้าที่มี จากนั้นส่ง slug ไปยังเครื่องมือนี้
ฟังก์ชัน (?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 ห้าฟิลด์)
การจัดเก็บ (?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
การย้ายฐานข้อมูล
การย้ายฐานข้อมูลเป็นวิธีจัดการการเปลี่ยนแปลง schema ของฐานข้อมูลเมื่อเวลาผ่านไป ด้วย Neon MCP server, LLM ได้รับความสามารถในการทำการย้ายฐานข้อมูลอย่างปลอดภัยด้วยคำสั่ง "Start" (prepare_database_migration) และ "Commit" (complete_database_migration) ที่แยกจากกัน
คำสั่ง "Start" รับการย้ายและรันใน branch ชั่วคราวใหม่ เมื่อส่งคืน คำสั่งนี้จะแนะนำ LLM ว่าควรทดสอบการย้ายบน branch นี้ จากนั้น LLM สามารถรันคำสั่ง "Commit" เพื่อใช้การย้ายกับ branch เดิม
การพัฒนา
โปรเจกต์นี้ใช้ pnpm เป็นตัวจัดการแพ็กเกจ ซึ่งถูกตรึงผ่าน Corepack
โครงสร้างโปรเจกต์
โค้ด MCP server อยู่ที่รากของ repository ซึ่งเป็นแอปพลิเคชัน Next.js ที่ปรับใช้กับ 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 และ Type
pnpm lint
pnpm typecheck
ตัวแปรสภาพแวดล้อม
จำเป็นสำหรับรันไทม์เซิร์ฟเวอร์ระยะไกล:
| ตัวแปร | คำอธิบาย |
|---|---|
SERVER_HOST | URL เซิร์ฟเวอร์ (ค่าเริ่มต้นคือ VERCEL_URL) |
UPSTREAM_OAUTH_HOST | URL ผู้ให้บริการ OAuth ของ Neon |
CLIENT_ID | OAuth client ID |
CLIENT_SECRET | OAuth client secret |
KV_URL | URL Vercel KV (Upstash Redis) |
OAUTH_DATABASE_URL | URL Postgres สำหรับการจัดเก็บโทเค็น |
ไม่บังคับ:
| ตัวแปร | คำอธิบาย |
|---|---|
LOG_LEVEL | ระดับ log ของ Winston: error, warn, info (ค่าเริ่มต้น), debug, verbose, silly |
NEON_MCP_DISABLE_ANALYTICS | ตั้งค่าเป็น 1 เพื่อปิดการวิเคราะห์ผลิตภัณฑ์ |
Testing Pyramid
การทดสอบทั้งหมดรันจากโฟลเดอร์รากของ 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 สำหรับข้อกำหนดของเครื่องมือที่กำหนดตายตัวและพฤติกรรมของ workflow
- ใช้การทดสอบ unit สำหรับตรรกะบริสุทธิ์และกรณีขอบ
- หลีกเลี่ยงการพึ่งพาความพร้อมใช้งานของบริการภายนอกในการทดสอบที่ใช้ gate การ merge; mock dependencies ภายนอกในชั้น integration/unit
Deployment
Vercel ปรับใช้เซิร์ฟเวอร์ระยะไกลโดยอัตโนมัติจากการกำหนดค่าสาขาของ repository สภาพแวดล้อม preview พร้อมใช้งานสำหรับ pull requests
Telemetry
เซิร์ฟเวอร์ Neon MCP เก็บข้อมูลการวิเคราะห์ผลิตภัณฑ์และรายงานข้อผิดพลาดเพื่อช่วยให้เราเข้าใจการใช้งานและปรับปรุงความน่าเชื่อถือ:
- การวิเคราะห์ผลิตภัณฑ์ (Segment): เมื่อคุณเชื่อมต่อด้วยบัญชีที่ได้รับการยืนยันตัวตน เซิร์ฟเวอร์จะส่งเหตุการณ์
identifyพร้อมด้วย ID บัญชี Neon, ชื่อ และที่อยู่อีเมลของคุณ นอกจากนี้ยังติดตามการเริ่มเซสชัน (server_init), การเรียกใช้เครื่องมือแต่ละครั้ง (tool_call), และข้อผิดพลาดของเซิร์ฟเวอร์ที่ไม่คาดคิด (server_error) เหตุการณ์การเรียกใช้เครื่องมือประกอบด้วยชื่อเครื่องมือ วิธีการยืนยันตัวตน และไคลเอนต์ ไม่รวมอาร์กิวเมนต์ของเครื่องมือหรือผลลัพธ์ของคิวรี การเรียกใช้เครื่องมือเฉพาะเอกสารโดยไม่มีบัญชีจะถูกติดตามโดยไม่ระบุตัวตน เหตุการณ์จะถูกส่งไปยังtrack.neon.techซึ่งเป็นจุดสิ้นสุดการวิเคราะห์ของ Neon เอง - การรายงานข้อผิดพลาด (Sentry): ข้อผิดพลาดของเซิร์ฟเวอร์ที่ไม่คาดคิดจะถูกรายงานพร้อมกับ stack traces และบริบทของคำขอ
การเก็บข้อมูลนี้อยู่ภายใต้ นโยบายความเป็นส่วนตัวของ Neon หากต้องการปิดการวิเคราะห์เมื่อรันเซิร์ฟเวอร์ด้วยตัวเอง ให้ตั้งค่า NEON_MCP_DISABLE_ANALYTICS=1 แฟล็กนั้นไม่ได้ปิด Sentry