從概念到云部署:使用Cursor與Heroku MCP Server構(gòu)建應(yīng)用程序 原創(chuàng)
我一直在嘗試將Cursor作為開發(fā)工具使用,它在日常工作中意外地帶來了顯著幫助。它不僅會(huì)編寫代碼,還能理解上下文,在合適的時(shí)機(jī)給出建議,甚至預(yù)判我接下來的操作意圖。
在看到Heroku MCP Server的公告時(shí),我不禁心生好奇。也許Cursor不僅能夠編寫代碼,還可通過聊天提示詞和響應(yīng)來構(gòu)建應(yīng)用并部署至Heroku?我決定試試看。
本文中,我將演示如何使用Cursor結(jié)合新的MCP集成,構(gòu)建一個(gè)簡(jiǎn)單的SvelteKit應(yīng)用并部署到Heroku。那么,整個(gè)流程否可行又是否順暢?我打算通過實(shí)測(cè)來探究答案。
模型上下文協(xié)議(MCP)是什么??
MCP是一種開放標(biāo)準(zhǔn),允許大語言模型(LLM)以結(jié)構(gòu)化的編程方式與外部工具交互。除了基于上下文生成代碼或文本外,MCP支持讓AI系統(tǒng)執(zhí)行真實(shí)操作——例如發(fā)起API調(diào)用或執(zhí)行命令——且完全遵循用戶請(qǐng)求。
在實(shí)際應(yīng)用中,這使得Cursor不再只是AI增強(qiáng)的代碼編輯器。通過MCP支持,Cursor變成了指揮中心。我們可以通過聊天提示詞直接創(chuàng)建云基礎(chǔ)設(shè)施、查詢數(shù)據(jù)庫(kù)或搭建新項(xiàng)目。
Heroku MCP Server為Heroku平臺(tái)引入這項(xiàng)能力,讓我們能夠要求Cursor執(zhí)行創(chuàng)建Heroku應(yīng)用、擴(kuò)展dyno或附加插件等操作,全程無需離開編輯器或打開終端。
使用Cursor構(gòu)建SvelteKit應(yīng)用?
我想讓Cursor嘗試用SvelteKit構(gòu)建一個(gè)待辦事項(xiàng)單頁(yè)應(yīng)用,后端使用PostgreSQL。這個(gè)任務(wù)對(duì)Cursor來說應(yīng)該足夠簡(jiǎn)單,也能幫我這個(gè)Svelte新手節(jié)約大量時(shí)間。以下是操作步驟:
在新項(xiàng)目文件夾中打開Cursor?
我從~/project下的一個(gè)空文件夾開始。面對(duì)空白畫布,我已準(zhǔn)備好讓Cursor開始工作。
描述任務(wù)?
我向Cursor解釋了需求。為了幫助它理解Svelte,我還專門為大模型提供了相關(guān)說明文檔。
我想用Svelte/SvelteKit構(gòu)建一個(gè)“待辦事項(xiàng)”單頁(yè)應(yīng)用。Svelte文檔地址: ??https://svelte.dev/llms-full.txt???
?我的應(yīng)用需要支持列出待辦事項(xiàng)、添加新事項(xiàng)、標(biāo)記完成/未完成狀態(tài)以及刪除事項(xiàng)。?
其中應(yīng)使用PostgreSQL數(shù)據(jù)庫(kù)。?
最終我會(huì)將這個(gè)應(yīng)用部署到Heroku并附加Postgres插件。但我也想本地測(cè)試。我的本地PostgreSQL實(shí)例正在運(yùn)行。所以,我可以提供本地?cái)?shù)據(jù)庫(kù)憑證,或者在附加插件后使用Heroku的連接字符串。?
請(qǐng)?jiān)诋?dāng)前文件夾中創(chuàng)建我的應(yīng)用。??
這是Cursor的響應(yīng),因此我提供了一些偏好指引。
Cursor開始創(chuàng)建應(yīng)用并添加必要依賴項(xiàng)。當(dāng)遇到障礙(如過時(shí)的命令行選項(xiàng))時(shí),它會(huì)自行解決。
開始編程?
現(xiàn)在輪到Cursor開始實(shí)現(xiàn)應(yīng)用了。此時(shí)距離我啟動(dòng)Cursor僅過了約兩分鐘。
幾秒鐘內(nèi),Cursor就生成了代碼并保存了應(yīng)用所需的文件。
設(shè)置本地?cái)?shù)據(jù)庫(kù)?
接下來,Cursor提供了設(shè)置數(shù)據(jù)庫(kù)的相關(guān)步驟。
在這個(gè)步驟中,我向Cursor求助。
請(qǐng)給出創(chuàng)建數(shù)據(jù)庫(kù)和運(yùn)行架構(gòu)的命令。還要為我創(chuàng)建.env文件。我的本地PostgreSQL運(yùn)行在localhost:5432,用戶名和密碼都是postgres。?
我可能需要源碼控制。請(qǐng)為項(xiàng)目初始化Git倉(cāng)庫(kù)。?
Cursor順利設(shè)置了.env文件并提供了所需的 psql命令。
Git Repo初始化?
Cursor繼續(xù)為項(xiàng)目設(shè)置源碼控制。
應(yīng)用程序本地測(cè)試?
Cursor表示已準(zhǔn)備好在本地開發(fā)服務(wù)器測(cè)試。
真的?所有代碼都寫好了?下面馬上點(diǎn)擊Run command開始測(cè)試。
接下來,我打開瀏覽器訪問??http://localhost:5173?測(cè)試應(yīng)用。
至此,Cursor已完成應(yīng)用開發(fā)。從開始到現(xiàn)在僅用了約五分鐘。接下來準(zhǔn)備部署到Heroku,現(xiàn)在要用到Heroku的MCP Server了。
在Cursor協(xié)助下部署至Heroku?
Heroku本身的設(shè)置和運(yùn)行已經(jīng)很簡(jiǎn)單了。我迫不及待想看看通過Cursor自動(dòng)化Heroku任務(wù)能如何提升效率。
配置Cursor使用Heroku MCP Server?
這里需要將Cursor與Heroku MCP Server對(duì)接,具體步驟如下:
步驟1:獲取Heroku授權(quán)令牌?
在終端中,首先確保已通過Heroku CLI認(rèn)證,然后運(yùn)行:
Shell
$ heroku authorizations:create
Creating OAuth Authorization... done
Client: <none>
ID: 03aff7da-87a9-4f9b-9400-5387164390e9
Description: Long-lived user authorization
Scope: global
Token: HRKU-1a2b3c4d-5e6f-7890-abcd-abc123def456
Updated at: Thu Apr 17 2025 12:04:14 GMT-0700 (Mountain Standard Time) (less than a minute ago)
這將是唯一一次需要在終端執(zhí)行此操作。未來所有Cursor項(xiàng)目均可復(fù)用此令牌。
步驟2:創(chuàng)建mcp.json文件?
在項(xiàng)目文件夾中,我創(chuàng)建了名為.cursor的子文件夾,并在其中新建 mcp.json 文件,內(nèi)容如下:
JSON
{
"mcpServers": {
"heroku": {
"command": "npx -y @heroku/mcp-server",
"env": {
"HEROKU_API_KEY": "HRKU-1a2b3c4d-5e6f-7890-abcd-abc123def456"
}
}
}
}
步驟3:?jiǎn)⒂眯翸CP Server?
保存 .cursor/mcp.json后,Cursor會(huì)自動(dòng)檢測(cè)到此文件。
這里點(diǎn)擊Enable。
使用Cursor構(gòu)建并部署應(yīng)用?
配置完成后,我只需向Cursor發(fā)出指令。
請(qǐng)將我的應(yīng)用部署到Heroku,命名為my-svelte-todo-list。??
看起來不錯(cuò),下面點(diǎn)擊 Run tool。
接下來,Cursor要添加Postgres插件。這里出了點(diǎn)小問題:Cursor不清楚底層插件的正確名稱,但很快自行解決并繼續(xù)執(zhí)行。
Postgres插件成功運(yùn)行,我要求Cursor繼續(xù)推進(jìn)。
你已創(chuàng)建應(yīng)用和PostgreSQL數(shù)據(jù)庫(kù)。?
幫我初始化數(shù)據(jù)庫(kù),然后部署代碼。?
Cursor通過MCP工具接入Heroku的Postgres插件(在Heroku CLI中為heroku pg:psql),并創(chuàng)建了表。
接著,Cursor檢查了部署所需的所有設(shè)置。
之后,Cursor發(fā)現(xiàn)Git repo尚未完成遠(yuǎn)程Heroku設(shè)置,于是協(xié)助處理了這個(gè)問題。
請(qǐng)注意,Cursor需要運(yùn)行bash命令來設(shè)置遠(yuǎn)程。看來 heroku git:remote在Heroku MCP Server中尚不可用(相信后續(xù)會(huì)解決)。
即將完成部署,但若要通過MCP工具(deploy_to_heroku)而非手動(dòng)執(zhí)行g(shù)it push heroku main,項(xiàng)目還需要 app.json文件。我提醒了Cursor:
我認(rèn)為還需要app.json文件才能用Heroku MCP工具部署。?
Cursor順利創(chuàng)建了該文件。
現(xiàn)在,Cursor準(zhǔn)備通過MCP工具部署到Heroku。
幾秒鐘后,Cursor顯示:
這就部署成功了?這么簡(jiǎn)單?我訪問Heroku應(yīng)用URL進(jìn)行了確認(rèn)。
沒錯(cuò),部署順利完成!
Cursor與Heroku MCP Server的其他集成功能?
Cursor報(bào)告部署成功后,詢問是否還有其他需求。
建議檢查應(yīng)用狀態(tài)或者查看日志?當(dāng)然可以。
Cursor使用MCP工具檢查dyno狀態(tài)并匯總近期日志。干得漂亮!
寫在最后:前所未有的構(gòu)建方式?
Cursor不僅幫我搭建了項(xiàng)目框架,還為我不太熟悉的框架編寫了前端代碼。更重要的是,它推動(dòng)我的項(xiàng)目從概念一路推進(jìn)至云端部署。這感覺很棒。Heroku本身已讓部署變得相當(dāng)簡(jiǎn)單,在將Cursor和MCP Server結(jié)合之后,整個(gè)過程幾乎實(shí)現(xiàn)了完全自動(dòng)。
這不僅節(jié)省了時(shí)間,更改變了我與現(xiàn)有工具的互動(dòng)方式。無需切換上下文,直接從“我想構(gòu)建……”到“已上線!”的流暢體驗(yàn)令人興奮。毫無疑問,兩款工具的結(jié)合之力值得在未來更復(fù)雜的項(xiàng)目中深入探索。
也祝大家編程愉快!
原文標(biāo)題:??From Concept to Cloud: Building With Cursor and the Heroku MCP Server?,作者:Alvin Lee
