試鏈路)
1. 為什么要在 Cursor 里接 Aspire MCPAppHost 調(diào)試鏈路的真實(shí)痛點(diǎn)如果你正在用 .NET Aspire 做微服務(wù)編排大概率經(jīng)歷過這種場景aspire run之后Dashboard 里幾十個(gè)資源在跑某個(gè) API 服務(wù)突然變成 Failed你切到瀏覽器看日志、再切回 IDE 改代碼、再切回 Dashboard 重啟資源來回跳窗口把思路切得稀碎。Aspire MCP 工具就是來解決這個(gè)問題的——它把 AppHost 的資源編排、日志查詢、分布式追蹤能力通過 Model Context Protocol 暴露給 Cursor 的 AI 助手讓你在聊天窗口里用自然語言完成列出所有資源看 identity 服務(wù)的控制臺日志重啟 exam-api這些操作。Aspire MCP 是什么簡單說它是aspireCLI 內(nèi)置的一個(gè) MCP Server通過 stdio 協(xié)議和 Cursor 通信。Cursor 作為 MCP Client把 AI 助手的工具調(diào)用請求轉(zhuǎn)發(fā)給 Aspire MCP ServerServer 再去和運(yùn)行中的 AppHost 交互。能做什么資源管理list_resources、execute_resource_command、日志查看list_console_logs、list_structured_logs、分布式追蹤list_traces、list_trace_structured_logs、集成管理list_integrations、get_integration_docs、AppHost 切換list_apphosts、select_apphost。適合誰正在用 .NET Aspire 做本地開發(fā)調(diào)試的 .NET 開發(fā)者尤其是微服務(wù)項(xiàng)目里資源多、排查鏈路長的團(tuán)隊(duì)。我試過在一個(gè) 29 個(gè)資源的 Aspire 項(xiàng)目里用這套工具排查啟動(dòng)失敗從資源 Failed到定位到端口沖突只用了三輪對話比手動(dòng)翻 Dashboard 快不少。下面把完整配置和驗(yàn)證流程拆開講你照著做就能跑通。2. 前置準(zhǔn)備aspire CLI 安裝與 AppHost 運(yùn)行狀態(tài)確認(rèn)在配置 Cursor 之前先把地基打好。Aspire MCP 依賴aspireCLI而 CLI 又依賴一個(gè)能正常運(yùn)行的 AppHost 項(xiàng)目。這一章把前置條件逐個(gè)確認(rèn)避免后面配置完了發(fā)現(xiàn)是環(huán)境問題。2.1 確認(rèn) .NET SDK 與 Aspire 工作負(fù)載先看 .NET SDK 版本Aspire 9.x 需要 .NET 8 或 .NET 9dotnet --version如果版本低于 8.0先去裝新版 SDK。然后確認(rèn) Aspire 工作負(fù)載dotnet workload list輸出里應(yīng)該能看到aspire相關(guān)的條目。如果沒有安裝dotnet workload install aspire2.2 安裝 aspire CLI 工具Aspire MCP 的入口是aspire mcp start命令這個(gè)命令由 aspire CLI 提供。安裝方式dotnet tool install -g aspire裝完后驗(yàn)證aspire --version能打印出版本號就說明 CLI 就緒。如果提示aspire不是可識別命令檢查~/.dotnet/toolsWindows 是%USERPROFILE%\.dotnet\tools是否在 PATH 里。這是后面找不到 aspire 命令報(bào)錯(cuò)的根源先在這里解決掉。2.3 確認(rèn) AppHost 項(xiàng)目能獨(dú)立運(yùn)行進(jìn)入你的 AppHost 項(xiàng)目目錄比如Src/CodeSpirit.AppHost先手動(dòng)跑一次aspire run正常的話會看到 Dashboard 地址通常是https://localhost:17109以及資源逐個(gè)啟動(dòng)的日志。確認(rèn)所有資源能起來再按 CtrlC 停掉。這一步很關(guān)鍵——如果 AppHost 本身跑不起來MCP 工具連上去也是空的。注意只有修改了apphost.cs或Program.cs里的資源定義才需要重啟 AppHost。改業(yè)務(wù)代碼通常熱重載就行不用重啟。2.4 Cursor 版本要求Cursor 需要支持 MCP 功能建議用較新版本。打開 Cursor進(jìn) Settings看左側(cè)有沒有 Tools MCP 這一項(xiàng)。有就說明版本支持沒有就升級 Cursor。到這里前置條件就齊了.NET SDK、aspire 工作負(fù)載、aspire CLI、能跑的 AppHost、支持 MCP 的 Cursor。接下來配置。3. 可復(fù)制配置在 Cursor 的 mcp.json 里接入 Aspire MCP Server這一章是核心給出可以直接復(fù)制的配置片段。Cursor 的 MCP 配置走mcp.json文件路徑和內(nèi)容都要對。3.1 打開 Cursor 的 MCP 配置入口操作路徑打開 Cursor → 打開 Cursor Settings → 找到 Tools MCP → 點(diǎn)擊添加 MCP Server。Cursor 會打開或創(chuàng)建mcp.json文件。這個(gè)文件通常在用戶級配置目錄下Windows 是%APPDATA%\Cursor\User\mcp.jsonmacOS 是~/Library/Application Support/Cursor/User/mcp.json。3.2 寫入 aspire-mcp 配置片段在mcp.json的mcpServers對象里加入下面這段。注意 JSON 語法逗號別漏{ mcpServers: { aspire-mcp: { name: aspire, type: stdio, command: aspire, args: [ mcp, start ] } } }逐字段說明aspire-mcp是這個(gè) MCP Server 在 Cursor 里的標(biāo)識名隨便起但別和別的沖突type固定stdio因?yàn)?Aspire MCP 走標(biāo)準(zhǔn)輸入輸出通信command是aspire前提是它在 PATH 里args是[mcp, start]合起來就是aspire mcp start。3.3 三件套對照Base URL、Key、Model ID 的類比如果你之前配過 Cline MCP 或 Codex 的auth.json會發(fā)現(xiàn) MCP 配置的套路是一致的——都是連到哪、用什么憑證、調(diào)哪個(gè)模型三件事。Aspire MCP 這里比較特殊它連的是本地 stdio 進(jìn)程不需要 Base URL 和 API Keycommandargs就等價(jià)于連接地址。但如果你同時(shí)用 Cursor 的 AI 能力比如讓它幫你分析日志那 Cursor 側(cè)的模型配置是另一套走 Cursor 自己的設(shè)置。為了讓你有個(gè)統(tǒng)一心智模型把三件套列一下配置項(xiàng)Aspire MCP 場景通用 MCP/API 場景連接地址command: aspireargs: [mcp,start]Base URL憑證無需本地進(jìn)程API Key模型/工具Cursor 內(nèi)置模型 Aspire 工具集Model ID如果你在別的項(xiàng)目里需要接遠(yuǎn)程模型服務(wù)做日志分析可以用 TaoToken 的 API 作為統(tǒng)一入口Base URL 填https://taotoken.net/apiKey 在控制臺生成Model ID 按文檔選。這樣 Cursor 負(fù)責(zé)交互、TaoToken 負(fù)責(zé)模型推理、Aspire MCP 負(fù)責(zé)本地資源操作三層各司其職。3.4 保存并重載保存mcp.json后Cursor 通常會自動(dòng)重載 MCP Server。如果沒反應(yīng)重啟 Cursor。重啟后在 Tools MCP 面板里應(yīng)該能看到aspire-mcp處于已連接狀態(tài)綠燈或類似標(biāo)識。4. 驗(yàn)證請求從 list_resources 到日志查看的完整鏈路配置寫完不算完得驗(yàn)證工具鏈真的生效。這一章給出可復(fù)制的驗(yàn)證動(dòng)作和預(yù)期結(jié)果。4.1 第一步確認(rèn) MCP 工具列表在 Cursor 的 AI 聊天窗口輸入你有哪些 Aspire MCP 工具可用如果配置正確AI 會列出list_resources、list_console_logs、list_structured_logs、list_traces、list_integrations、list_apphosts、select_apphost等工具。這一步只驗(yàn)證 MCP Server 連上了還沒碰 AppHost。4.2 第二步啟動(dòng) AppHost 并列出資源先確保 AppHost 在跑aspire run然后在 Cursor 聊天窗口輸入請列出當(dāng)前 Aspire 應(yīng)用的所有資源AI 會調(diào)用list_resources。如果 AppHost 沒啟動(dòng)它會提示沒有運(yùn)行的 Aspire 應(yīng)用甚至主動(dòng)幫你調(diào)list_apphosts找連接。實(shí)測下來AI 有時(shí)會自己發(fā)現(xiàn) AppHost 不在工作目錄范圍內(nèi)然后調(diào)select_apphost切換再重新列資源。這個(gè)過程你能在聊天記錄里看到[1 tool called]的標(biāo)記。預(yù)期結(jié)果是一份資源清單包含資源名、類型、狀態(tài)、端點(diǎn)、健康狀態(tài)。比如webfrontend Running https://localhost:7120 identity Running https://localhost:5071 mysql 容器 Running Healthy cache Redis 容器 Running Healthy4.3 第三步查看某個(gè)服務(wù)的控制臺日志假設(shè) identity 服務(wù)啟動(dòng)異常輸入查看 identity 服務(wù)的控制臺日志AI 調(diào)用list_console_logs(resourceName: identity)返回標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤。啟動(dòng)失敗的原因端口沖突、連接串錯(cuò)誤、依賴未就緒通常在這里能直接看到。4.4 第四步查看結(jié)構(gòu)化日志和追蹤業(yè)務(wù)邏輯錯(cuò)誤看結(jié)構(gòu)化日志查看 identity 服務(wù)的結(jié)構(gòu)化日志只看 Error 級別AI 調(diào)用list_structured_logs(resourceName: identity)返回帶時(shí)間戳、日志級別、類別、異常信息的記錄。跨服務(wù)調(diào)用問題看追蹤列出最近的分布式追蹤找出耗時(shí)超過 1 秒的AI 調(diào)list_traces()返回 Trace ID、涉及資源、總時(shí)長、狀態(tài)。拿到慢追蹤的 ID 后查看追蹤 abc123 的詳細(xì)日志AI 調(diào)list_trace_structured_logs(traceId: abc123)展示每個(gè) Span 的耗時(shí)和父子關(guān)系瓶頸一目了然。4.5 第五步執(zhí)行資源命令重啟某個(gè)資源重啟 exam-api 資源AI 調(diào)execute_resource_command(resourceName: exam-api, commandName: resource-restart)。可用命令有resource-start、resource-stop、resource-restart。走完這五步說明從 Cursor 到 Aspire MCP 再到 AppHost 的整條鏈路是通的。5. 常見報(bào)錯(cuò)排查401、local proxy failed、reading choices、OAuth 對照配置和使用過程中會撞到幾類典型報(bào)錯(cuò)逐個(gè)對照排查。5.1 找不到 aspire 命令報(bào)錯(cuò)長這樣command not found: aspire或 Cursor 里 MCP Server 顯示連接失敗日志提示spawn aspire ENOENT。原因aspire不在 Cursor 進(jìn)程的 PATH 里。Cursor 啟動(dòng)時(shí)繼承的環(huán)境變量可能和你終端不一樣。排查步驟先在終端跑aspire --version確認(rèn) CLI 裝了。然后確認(rèn)~/.dotnet/tools在系統(tǒng) PATH 里。Windows 上如果 Cursor 是從開始菜單啟動(dòng)的可能沒加載用戶級 PATH試試從終端用cursor .啟動(dòng) Cursor讓它繼承終端環(huán)境。或者把command改成 aspire 的絕對路徑比如command: C:\\Users\\你的用戶名\\.dotnet\\tools\\aspire.exe。5.2 MCP 服務(wù)器無法連接 / local proxy failed報(bào)錯(cuò)MCP server connection failed或local proxy failed to start。原因通常是aspire mcp start進(jìn)程起不來或者 AppHost 沒運(yùn)行導(dǎo)致 Server 空轉(zhuǎn)。排查先在終端手動(dòng)跑aspire mcp start看有沒有報(bào)錯(cuò)。如果它正常掛起等待輸入說明 Server 本身沒問題那就是 Cursor 配置的command/args寫錯(cuò)了。檢查 JSON 里args是不是[mcp, start]別寫成[mcp start]。另外確認(rèn) AppHost 在跑aspire run起一個(gè)。5.3 reading choices 類解析錯(cuò)誤報(bào)錯(cuò)error reading choices或 AI 返回工具調(diào)用結(jié)果時(shí)解析失敗。這類多半是 MCP Server 返回的數(shù)據(jù)格式和 Cursor 期望的不一致常見于版本不匹配。排查升級 aspire CLI 到最新dotnet tool update -g aspire升級 Cursor 到最新。如果還不行看 Cursor 的 MCP 日志Tools MCP 面板里通常有 View Logs里面會有原始返回內(nèi)容。5.4 OAuth 相關(guān)報(bào)錯(cuò)報(bào)錯(cuò)OAuth token expired或unauthorized。Aspire MCP 走本地 stdio本身不涉及 OAuth。如果你在 Cursor 里同時(shí)配了別的遠(yuǎn)程 MCP Server走 HTTP OAuth那報(bào)錯(cuò)可能來自那個(gè) Server不是 Aspire。排查時(shí)先禁用其他 MCP Server只留aspire-mcp確認(rèn)是不是它的問題。如果確實(shí)需要遠(yuǎn)程模型服務(wù)做輔助分析用 TaoToken 的 API Key 方式在控制臺生成 Key 后填到對應(yīng)配置里別和 Aspire MCP 的配置混在一起。5.5 資源列表為空AI 說沒有運(yùn)行的 Aspire 應(yīng)用但你明明aspire run了。原因AppHost 不在 MCP Server 的工作目錄范圍內(nèi)。讓 AI 調(diào)list_apphosts看看如果顯示范圍: 工作目錄外就調(diào)select_apphost(appHostPath: 你的AppHost路徑)切換過去。或者直接在 Cursor 里打開 AppHost 所在的工作區(qū)根目錄讓工作目錄覆蓋到它。6. 把 Aspire MCP 用順從調(diào)試鏈路到長期編碼工作流配置跑通只是起點(diǎn)真正提效在于把它嵌進(jìn)日常開發(fā)流。這一章給幾條實(shí)操建議。6.1 調(diào)試工作流的固定套路遇到資源啟動(dòng)失敗按這個(gè)順序走先list_resources看哪些 Failed/Stopped再list_console_logs看啟動(dòng)日志找直接原因端口沖突、鏡像拉取失敗、連接串錯(cuò)誤然后list_structured_logs看應(yīng)用級錯(cuò)誤最后修復(fù)后用execute_resource_command重啟驗(yàn)證。這套順序比盲目翻 Dashboard 高效。性能問題反過來先list_traces找慢追蹤再list_trace_structured_logs看每個(gè) Span 耗時(shí)定位到具體服務(wù)或數(shù)據(jù)庫查詢優(yōu)化后重新對比追蹤時(shí)間。6.2 日志查看的優(yōu)先級控制臺日志適合啟動(dòng)失敗和容器問題結(jié)構(gòu)化日志適合業(yè)務(wù)邏輯錯(cuò)誤追蹤日志適合分布式調(diào)用問題。別一上來就翻追蹤信息量太大反而干擾判斷。6.3 持久化容器的坑開發(fā)早期盡量別用持久化容器。Aspire 默認(rèn)的容器是臨時(shí)的重啟就重置狀態(tài)干凈。一旦開了持久化重啟后舊數(shù)據(jù)可能和新 schema 沖突排查起來很煩。等測試環(huán)境需要保留數(shù)據(jù)時(shí)再開。6.4 多 AppHost 項(xiàng)目的切換工作區(qū)里有多個(gè)微服務(wù)項(xiàng)目、每個(gè)都有自己的 AppHost 時(shí)用list_apphosts看全部連接select_apphost切到目標(biāo)。切換后后續(xù)所有工具調(diào)用都針對新 AppHost不用重啟 Cursor。6.5 集成擴(kuò)展的查找路徑要加新資源比如 PostgreSQL、MongoDB先list_integrations找包和版本再get_integration_docs拿配置文檔然后裝 NuGet 包、改apphost.cs、aspire run重啟、list_resources驗(yàn)證。版本要和Aspire.AppHost.Sdk對齊注意有些集成帶 preview 后綴。6.6 長期編碼場景的模型接入如果你打算把 Cursor Aspire MCP 作為長期編碼工作流AI 側(cè)的模型調(diào)用量會上去。這時(shí)候可以考慮用 TaoToken 的 Coding Plan 做統(tǒng)一模型接入Base URL 填https://taotoken.net/apiKey 在控制臺生成Model ID 按文檔選。這樣 Cursor 負(fù)責(zé) MCP 工具編排TaoToken 負(fù)責(zé)模型推理Aspire MCP 負(fù)責(zé)本地資源操作三層解耦換模型不用動(dòng) MCP 配置。需要生成 Key 或看接入細(xì)節(jié)走這兩個(gè)入口API Keys 在https://taotoken.net/console/api-keys接入文檔在https://taotoken.net/doc。想先驗(yàn)證模型對話效果用https://taotoken.net/models試。長期編碼和 Agent 場景直接看 Coding Planhttps://taotoken.net/coding-plan。6.7 更新 AppHost 和依賴aspire update能把 AppHost 和部分 Aspire 包升到最新。更全面的過時(shí)包檢查用dotnet-outdateddotnet tool install --global dotnet-outdated-tool dotnet outdated它會列出所有過時(shí)的 NuGet 包按需升級。升級后記得aspire run重啟再用list_resources確認(rèn)所有資源正常。把上面這些串起來你在 Cursor 里就有了一個(gè)能查資源、看日志、追鏈路、管集成的完整 Aspire 調(diào)試臺。配置一次后面排查問題基本不用離開編輯器。