[{"data":1,"prerenderedAt":3283},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-resources":127,"-core-concepts-resources-surround":3278},[4,40,68,98],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","/getting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","/getting-started/configuration","1.getting-started/3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"MCP Inspector","/getting-started/inspector","1.getting-started/4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","/getting-started/connection","1.getting-started/5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","/getting-started/agent-skills","1.getting-started/6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Core Concepts","/core-concepts","2.core-concepts",[45,48,53,58,63],{"title":20,"path":46,"stem":47,"icon":23},"/core-concepts/configuration","2.core-concepts/1.configuration",{"title":49,"path":50,"stem":51,"icon":52},"Tools","/core-concepts/tools","2.core-concepts/2.tools","i-lucide-wrench",{"title":54,"path":55,"stem":56,"icon":57},"Resources","/core-concepts/resources","2.core-concepts/3.resources","i-lucide-package",{"title":59,"path":60,"stem":61,"icon":62},"Prompts","/core-concepts/prompts","2.core-concepts/4.prompts","i-lucide-message-square",{"title":64,"path":65,"stem":66,"icon":67},"Handlers","/core-concepts/handlers","2.core-concepts/5.handlers","i-lucide-server",{"title":69,"path":70,"stem":71,"children":72,"page":39},"Advanced Topics","/advanced","3.advanced",[73,78,83,88,93],{"title":74,"path":75,"stem":76,"icon":77},"Custom Paths","/advanced/custom-paths","3.advanced/1.custom-paths","i-lucide-folder",{"title":79,"path":80,"stem":81,"icon":82},"Middleware","/advanced/middleware","3.advanced/2.middleware","i-lucide-shield",{"title":84,"path":85,"stem":86,"icon":87},"TypeScript","/advanced/typescript","3.advanced/3.typescript","i-lucide-type",{"title":89,"path":90,"stem":91,"icon":92},"Hooks","/advanced/hooks","3.advanced/4.hooks","i-lucide-webhook",{"title":94,"path":95,"stem":96,"icon":97},"MCP Evals","/advanced/evals","3.advanced/5.evals","i-lucide-flask-conical",{"title":99,"path":100,"stem":101,"children":102,"page":39},"Examples","/examples","4.examples",[103,108,113,118,123],{"title":104,"path":105,"stem":106,"icon":107},"Authentication","/examples/authentication","4.examples/1.authentication","i-lucide-shield-check",{"title":109,"path":110,"stem":111,"icon":112},"API Integration","/examples/api-integration","4.examples/2.api-integration","i-lucide-globe",{"title":114,"path":115,"stem":116,"icon":117},"Common Patterns","/examples/common-patterns","4.examples/3.common-patterns","i-lucide-lightbulb",{"title":119,"path":120,"stem":121,"icon":122},"File Operations","/examples/file-operations","4.examples/4.file-operations","i-lucide-file",{"title":124,"path":125,"stem":126,"icon":62},"Prompt Examples","/examples/prompt-examples","4.examples/5.prompt-examples",{"id":128,"title":54,"body":129,"description":3270,"extension":3271,"links":3272,"meta":3273,"navigation":3274,"path":55,"seo":3275,"stem":56,"__hash__":3277},"docs/2.core-concepts/3.resources.md",{"type":130,"value":131,"toc":3248},"minimark",[132,137,146,163,175,179,182,267,272,285,290,301,305,311,395,429,434,438,441,446,453,579,582,609,613,624,980,984,994,1069,1076,1094,1102,1106,1109,1337,1341,1348,1848,1851,1856,1997,2001,2007,2109,2113,2116,2371,2375,2378,2467,2471,2474,2746,2750,2753,3159,3163,3170,3178,3181,3185,3188,3218,3222,3244],[133,134,136],"h2",{"id":135},"what-are-resources","What are Resources?",[138,139,140,141,145],"p",{},"Resources are a standardized way for MCP servers to expose ",[142,143,144],"strong",{},"read-only data"," to clients. They provide contextual information that can help AI models understand your application, such as files, database schemas, configuration, or any data accessible via a URI.",[147,148,150,153,154,158,159,162],"callout",{"color":149,"icon":117},"primary",[142,151,152],{},"Key concept",": Unlike ",[155,156,157],"a",{"href":50},"tools"," which are invoked directly by the AI to perform actions, resources are ",[142,160,161],{},"application-driven",". The host application (not the AI) decides when and how to fetch and include resource content in the conversation.",[138,164,165,166,170,171,174],{},"Each resource is uniquely identified by a URI (e.g., ",[167,168,169],"code",{},"file:///project/README.md"," or ",[167,172,173],{},"api://users/123",").",[133,176,178],{"id":177},"resources-vs-tools","Resources vs Tools",[138,180,181],{},"Understanding the difference between resources and tools is essential:",[183,184,185,199],"table",{},[186,187,188],"thead",{},[189,190,191,195,197],"tr",{},[192,193,194],"th",{},"Aspect",[192,196,54],{},[192,198,49],{},[200,201,202,216,229,242,255],"tbody",{},[189,203,204,210,213],{},[205,206,207],"td",{},[142,208,209],{},"Purpose",[205,211,212],{},"Provide context and data",[205,214,215],{},"Perform actions",[189,217,218,223,226],{},[205,219,220],{},[142,221,222],{},"Invocation",[205,224,225],{},"Application-driven (user or app selects)",[205,227,228],{},"AI-driven (model decides to call)",[189,230,231,236,239],{},[205,232,233],{},[142,234,235],{},"Nature",[205,237,238],{},"Read-only data access",[205,240,241],{},"Can read and modify state",[189,243,244,249,252],{},[205,245,246],{},[142,247,248],{},"Control",[205,250,251],{},"User/application controls what's included",[205,253,254],{},"AI decides when to use",[189,256,257,261,264],{},[205,258,259],{},[142,260,99],{},[205,262,263],{},"Files, configs, DB schemas, logs",[205,265,266],{},"Send email, create file, query API",[138,268,269],{},[142,270,271],{},"When to use resources:",[273,274,275,279,282],"ul",{},[276,277,278],"li",{},"Exposing project files or documentation",[276,280,281],{},"Sharing database schemas or configurations",[276,283,284],{},"Providing logs or system information as context",[138,286,287],{},[142,288,289],{},"When to use tools:",[273,291,292,295,298],{},[276,293,294],{},"Performing actions that modify state",[276,296,297],{},"Executing operations the AI should decide to trigger",[276,299,300],{},"Interacting with external APIs or services",[133,302,304],{"id":303},"how-resources-are-used","How Resources are Used",[138,306,307,308,310],{},"Resources follow an ",[142,309,161],{}," model. Here's the typical flow:",[312,313,318],"pre",{"className":314,"code":315,"language":316,"meta":317,"style":317},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sequenceDiagram\n    participant App as Host Application\n    participant Server as MCP Server\n    participant AI as AI Model\n\n    App->>Server: resources/list\n    Server-->>App: Available resources\n    Note over App: Display in UI (tree, search...)\n    App->>App: User selects resources\n    App->>Server: resources/read (selected URIs)\n    Server-->>App: Resource contents\n    App->>AI: Include content as context\n","mermaid","",[167,319,320,328,334,340,346,353,359,365,371,377,383,389],{"__ignoreMap":317},[321,322,325],"span",{"class":323,"line":324},"line",1,[321,326,327],{},"sequenceDiagram\n",[321,329,331],{"class":323,"line":330},2,[321,332,333],{},"    participant App as Host Application\n",[321,335,337],{"class":323,"line":336},3,[321,338,339],{},"    participant Server as MCP Server\n",[321,341,343],{"class":323,"line":342},4,[321,344,345],{},"    participant AI as AI Model\n",[321,347,349],{"class":323,"line":348},5,[321,350,352],{"emptyLinePlaceholder":351},true,"\n",[321,354,356],{"class":323,"line":355},6,[321,357,358],{},"    App->>Server: resources/list\n",[321,360,362],{"class":323,"line":361},7,[321,363,364],{},"    Server-->>App: Available resources\n",[321,366,368],{"class":323,"line":367},8,[321,369,370],{},"    Note over App: Display in UI (tree, search...)\n",[321,372,374],{"class":323,"line":373},9,[321,375,376],{},"    App->>App: User selects resources\n",[321,378,380],{"class":323,"line":379},10,[321,381,382],{},"    App->>Server: resources/read (selected URIs)\n",[321,384,386],{"class":323,"line":385},11,[321,387,388],{},"    Server-->>App: Resource contents\n",[321,390,392],{"class":323,"line":391},12,[321,393,394],{},"    App->>AI: Include content as context\n",[396,397,398,408,414,423],"ol",{},[276,399,400,403,404,407],{},[142,401,402],{},"Discovery",": The application calls ",[167,405,406],{},"resources/list"," to discover available resources",[276,409,410,413],{},[142,411,412],{},"Selection",": The application displays resources in a UI (tree view, search, list) and the user or application logic selects which ones to include",[276,415,416,419,420],{},[142,417,418],{},"Reading",": The application fetches selected resources via ",[167,421,422],{},"resources/read",[276,424,425,428],{},[142,426,427],{},"Context inclusion",": The application includes the resource content in the AI conversation as context",[147,430,433],{"color":431,"icon":432},"info","i-lucide-info","The AI model never directly requests resources. It's always the application that decides which resources to include based on user selection, heuristics, or automatic context detection.",[133,435,437],{"id":436},"static-resources","Static Resources",[138,439,440],{},"Static resources have a fixed URI that doesn't change.",[442,443,445],"h3",{"id":444},"simple-file-resources","Simple File Resources",[138,447,448,449,452],{},"The easiest way to expose a local file is using the ",[167,450,451],{},"file"," property. This automatically handles the URI generation, MIME type detection, and file reading.",[312,454,459],{"className":455,"code":456,"filename":457,"language":458,"meta":317,"style":317},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'readme',\n  description: 'Project README file',\n  file: 'README.md', // Relative to project root\n})\n","server/mcp/resources/readme.ts","typescript",[167,460,461,495,499,516,535,551,571],{"__ignoreMap":317},[321,462,463,467,471,475,478,481,484,488,491],{"class":323,"line":324},[321,464,466],{"class":465},"s7zQu","import",[321,468,470],{"class":469},"sMK4o"," {",[321,472,474],{"class":473},"sTEyZ"," defineMcpResource",[321,476,477],{"class":469}," }",[321,479,480],{"class":465}," from",[321,482,483],{"class":469}," '",[321,485,487],{"class":486},"sfazB","@nuxtjs/mcp-toolkit/server",[321,489,490],{"class":469},"'",[321,492,494],{"class":493},"sHwdD"," // optional\n",[321,496,497],{"class":323,"line":330},[321,498,352],{"emptyLinePlaceholder":351},[321,500,501,504,507,510,513],{"class":323,"line":336},[321,502,503],{"class":465},"export",[321,505,506],{"class":465}," default",[321,508,474],{"class":509},"s2Zo4",[321,511,512],{"class":473},"(",[321,514,515],{"class":469},"{\n",[321,517,518,522,525,527,530,532],{"class":323,"line":342},[321,519,521],{"class":520},"swJcz","  name",[321,523,524],{"class":469},":",[321,526,483],{"class":469},[321,528,529],{"class":486},"readme",[321,531,490],{"class":469},[321,533,534],{"class":469},",\n",[321,536,537,540,542,544,547,549],{"class":323,"line":348},[321,538,539],{"class":520},"  description",[321,541,524],{"class":469},[321,543,483],{"class":469},[321,545,546],{"class":486},"Project README file",[321,548,490],{"class":469},[321,550,534],{"class":469},[321,552,553,556,558,560,563,565,568],{"class":323,"line":355},[321,554,555],{"class":520},"  file",[321,557,524],{"class":469},[321,559,483],{"class":469},[321,561,562],{"class":486},"README.md",[321,564,490],{"class":469},[321,566,567],{"class":469},",",[321,569,570],{"class":493}," // Relative to project root\n",[321,572,573,576],{"class":323,"line":361},[321,574,575],{"class":469},"}",[321,577,578],{"class":473},")\n",[138,580,581],{},"This generates:",[273,583,584,593,599],{},[276,585,586,589,590],{},[142,587,588],{},"URI",": ",[167,591,592],{},"file:///path/to/project/README.md",[276,594,595,598],{},[142,596,597],{},"Handler",": Automatically reads the file content",[276,600,601,604,605,608],{},[142,602,603],{},"MIME Type",": Automatically detected (e.g., ",[167,606,607],{},"text/markdown",")",[442,610,612],{"id":611},"custom-static-resources","Custom Static Resources",[138,614,615,616,619,620,623],{},"For more control, you can define the ",[167,617,618],{},"uri"," and ",[167,621,622],{},"handler"," manually:",[312,625,628],{"className":455,"code":626,"filename":627,"language":458,"meta":317,"style":317},"import { readFile } from 'node:fs/promises'\nimport { fileURLToPath } from 'node:url'\nimport { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'custom-readme',\n  title: 'README',\n  description: 'Project README file',\n  uri: 'file:///README.md',\n  metadata: {\n    mimeType: 'text/markdown',\n  },\n  handler: async (uri: URL) => {\n    const filePath = fileURLToPath(uri)\n    const content = await readFile(filePath, 'utf-8')\n    return {\n      contents: [{\n        uri: uri.toString(),\n        mimeType: 'text/markdown',\n        text: content,\n      }],\n    }\n  },\n})\n","server/mcp/resources/custom-readme.ts",[167,629,630,651,671,691,695,707,722,738,752,768,778,793,798,829,849,880,888,901,923,939,951,962,968,973],{"__ignoreMap":317},[321,631,632,634,636,639,641,643,645,648],{"class":323,"line":324},[321,633,466],{"class":465},[321,635,470],{"class":469},[321,637,638],{"class":473}," readFile",[321,640,477],{"class":469},[321,642,480],{"class":465},[321,644,483],{"class":469},[321,646,647],{"class":486},"node:fs/promises",[321,649,650],{"class":469},"'\n",[321,652,653,655,657,660,662,664,666,669],{"class":323,"line":330},[321,654,466],{"class":465},[321,656,470],{"class":469},[321,658,659],{"class":473}," fileURLToPath",[321,661,477],{"class":469},[321,663,480],{"class":465},[321,665,483],{"class":469},[321,667,668],{"class":486},"node:url",[321,670,650],{"class":469},[321,672,673,675,677,679,681,683,685,687,689],{"class":323,"line":336},[321,674,466],{"class":465},[321,676,470],{"class":469},[321,678,474],{"class":473},[321,680,477],{"class":469},[321,682,480],{"class":465},[321,684,483],{"class":469},[321,686,487],{"class":486},[321,688,490],{"class":469},[321,690,494],{"class":493},[321,692,693],{"class":323,"line":342},[321,694,352],{"emptyLinePlaceholder":351},[321,696,697,699,701,703,705],{"class":323,"line":348},[321,698,503],{"class":465},[321,700,506],{"class":465},[321,702,474],{"class":509},[321,704,512],{"class":473},[321,706,515],{"class":469},[321,708,709,711,713,715,718,720],{"class":323,"line":355},[321,710,521],{"class":520},[321,712,524],{"class":469},[321,714,483],{"class":469},[321,716,717],{"class":486},"custom-readme",[321,719,490],{"class":469},[321,721,534],{"class":469},[321,723,724,727,729,731,734,736],{"class":323,"line":361},[321,725,726],{"class":520},"  title",[321,728,524],{"class":469},[321,730,483],{"class":469},[321,732,733],{"class":486},"README",[321,735,490],{"class":469},[321,737,534],{"class":469},[321,739,740,742,744,746,748,750],{"class":323,"line":367},[321,741,539],{"class":520},[321,743,524],{"class":469},[321,745,483],{"class":469},[321,747,546],{"class":486},[321,749,490],{"class":469},[321,751,534],{"class":469},[321,753,754,757,759,761,764,766],{"class":323,"line":373},[321,755,756],{"class":520},"  uri",[321,758,524],{"class":469},[321,760,483],{"class":469},[321,762,763],{"class":486},"file:///README.md",[321,765,490],{"class":469},[321,767,534],{"class":469},[321,769,770,773,775],{"class":323,"line":379},[321,771,772],{"class":520},"  metadata",[321,774,524],{"class":469},[321,776,777],{"class":469}," {\n",[321,779,780,783,785,787,789,791],{"class":323,"line":385},[321,781,782],{"class":520},"    mimeType",[321,784,524],{"class":469},[321,786,483],{"class":469},[321,788,607],{"class":486},[321,790,490],{"class":469},[321,792,534],{"class":469},[321,794,795],{"class":323,"line":391},[321,796,797],{"class":469},"  },\n",[321,799,801,804,806,810,813,816,818,822,824,827],{"class":323,"line":800},13,[321,802,803],{"class":509},"  handler",[321,805,524],{"class":469},[321,807,809],{"class":808},"spNyl"," async",[321,811,812],{"class":469}," (",[321,814,618],{"class":815},"sHdIc",[321,817,524],{"class":469},[321,819,821],{"class":820},"sBMFI"," URL",[321,823,608],{"class":469},[321,825,826],{"class":808}," =>",[321,828,777],{"class":469},[321,830,832,835,838,841,843,845,847],{"class":323,"line":831},14,[321,833,834],{"class":808},"    const",[321,836,837],{"class":473}," filePath",[321,839,840],{"class":469}," =",[321,842,659],{"class":509},[321,844,512],{"class":520},[321,846,618],{"class":473},[321,848,578],{"class":520},[321,850,852,854,857,859,862,864,866,869,871,873,876,878],{"class":323,"line":851},15,[321,853,834],{"class":808},[321,855,856],{"class":473}," content",[321,858,840],{"class":469},[321,860,861],{"class":465}," await",[321,863,638],{"class":509},[321,865,512],{"class":520},[321,867,868],{"class":473},"filePath",[321,870,567],{"class":469},[321,872,483],{"class":469},[321,874,875],{"class":486},"utf-8",[321,877,490],{"class":469},[321,879,578],{"class":520},[321,881,883,886],{"class":323,"line":882},16,[321,884,885],{"class":465},"    return",[321,887,777],{"class":469},[321,889,891,894,896,899],{"class":323,"line":890},17,[321,892,893],{"class":520},"      contents",[321,895,524],{"class":469},[321,897,898],{"class":520}," [",[321,900,515],{"class":469},[321,902,904,907,909,912,915,918,921],{"class":323,"line":903},18,[321,905,906],{"class":520},"        uri",[321,908,524],{"class":469},[321,910,911],{"class":473}," uri",[321,913,914],{"class":469},".",[321,916,917],{"class":509},"toString",[321,919,920],{"class":520},"()",[321,922,534],{"class":469},[321,924,926,929,931,933,935,937],{"class":323,"line":925},19,[321,927,928],{"class":520},"        mimeType",[321,930,524],{"class":469},[321,932,483],{"class":469},[321,934,607],{"class":486},[321,936,490],{"class":469},[321,938,534],{"class":469},[321,940,942,945,947,949],{"class":323,"line":941},20,[321,943,944],{"class":520},"        text",[321,946,524],{"class":469},[321,948,856],{"class":473},[321,950,534],{"class":469},[321,952,954,957,960],{"class":323,"line":953},21,[321,955,956],{"class":469},"      }",[321,958,959],{"class":520},"]",[321,961,534],{"class":469},[321,963,965],{"class":323,"line":964},22,[321,966,967],{"class":469},"    }\n",[321,969,971],{"class":323,"line":970},23,[321,972,797],{"class":469},[321,974,976,978],{"class":323,"line":975},24,[321,977,575],{"class":469},[321,979,578],{"class":473},[133,981,983],{"id":982},"auto-generated-name-and-title","Auto-Generated Name and Title",[138,985,986,987,619,990,993],{},"You can omit ",[167,988,989],{},"name",[167,991,992],{},"title"," - they will be automatically generated from the filename:",[312,995,998],{"className":455,"code":996,"filename":997,"language":458,"meta":317,"style":317},"import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  // name and title are auto-generated from filename:\n  // name: 'project-readme'\n  // title: 'Project Readme'\n  file: 'README.md'\n})\n","server/mcp/resources/project-readme.ts",[167,999,1000,1020,1024,1036,1041,1046,1051,1063],{"__ignoreMap":317},[321,1001,1002,1004,1006,1008,1010,1012,1014,1016,1018],{"class":323,"line":324},[321,1003,466],{"class":465},[321,1005,470],{"class":469},[321,1007,474],{"class":473},[321,1009,477],{"class":469},[321,1011,480],{"class":465},[321,1013,483],{"class":469},[321,1015,487],{"class":486},[321,1017,490],{"class":469},[321,1019,494],{"class":493},[321,1021,1022],{"class":323,"line":330},[321,1023,352],{"emptyLinePlaceholder":351},[321,1025,1026,1028,1030,1032,1034],{"class":323,"line":336},[321,1027,503],{"class":465},[321,1029,506],{"class":465},[321,1031,474],{"class":509},[321,1033,512],{"class":473},[321,1035,515],{"class":469},[321,1037,1038],{"class":323,"line":342},[321,1039,1040],{"class":493},"  // name and title are auto-generated from filename:\n",[321,1042,1043],{"class":323,"line":348},[321,1044,1045],{"class":493},"  // name: 'project-readme'\n",[321,1047,1048],{"class":323,"line":355},[321,1049,1050],{"class":493},"  // title: 'Project Readme'\n",[321,1052,1053,1055,1057,1059,1061],{"class":323,"line":361},[321,1054,555],{"class":520},[321,1056,524],{"class":469},[321,1058,483],{"class":469},[321,1060,562],{"class":486},[321,1062,650],{"class":469},[321,1064,1065,1067],{"class":323,"line":367},[321,1066,575],{"class":469},[321,1068,578],{"class":473},[138,1070,1071,1072,1075],{},"The filename ",[167,1073,1074],{},"project-readme.ts"," automatically becomes:",[273,1077,1078,1086],{},[276,1079,1080,589,1082,1085],{},[167,1081,989],{},[167,1083,1084],{},"project-readme"," (kebab-case)",[276,1087,1088,589,1090,1093],{},[167,1089,992],{},[167,1091,1092],{},"Project Readme"," (title case)",[138,1095,1096,1097,170,1099,1101],{},"You can still provide ",[167,1098,989],{},[167,1100,992],{}," explicitly to override the auto-generated values.",[133,1103,1105],{"id":1104},"resource-structure","Resource Structure",[138,1107,1108],{},"A resource definition consists of:",[1110,1111,1112,1207],"code-group",{},[312,1113,1116],{"className":455,"code":1114,"filename":1115,"language":458,"meta":317,"style":317},"import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'resource-name',\n  file: 'path/to/file.txt', // Local file path\n  metadata: { ... }\n})\n","File Resource",[167,1117,1118,1138,1142,1154,1169,1187,1201],{"__ignoreMap":317},[321,1119,1120,1122,1124,1126,1128,1130,1132,1134,1136],{"class":323,"line":324},[321,1121,466],{"class":465},[321,1123,470],{"class":469},[321,1125,474],{"class":473},[321,1127,477],{"class":469},[321,1129,480],{"class":465},[321,1131,483],{"class":469},[321,1133,487],{"class":486},[321,1135,490],{"class":469},[321,1137,494],{"class":493},[321,1139,1140],{"class":323,"line":330},[321,1141,352],{"emptyLinePlaceholder":351},[321,1143,1144,1146,1148,1150,1152],{"class":323,"line":336},[321,1145,503],{"class":465},[321,1147,506],{"class":465},[321,1149,474],{"class":509},[321,1151,512],{"class":473},[321,1153,515],{"class":469},[321,1155,1156,1158,1160,1162,1165,1167],{"class":323,"line":342},[321,1157,521],{"class":520},[321,1159,524],{"class":469},[321,1161,483],{"class":469},[321,1163,1164],{"class":486},"resource-name",[321,1166,490],{"class":469},[321,1168,534],{"class":469},[321,1170,1171,1173,1175,1177,1180,1182,1184],{"class":323,"line":348},[321,1172,555],{"class":520},[321,1174,524],{"class":469},[321,1176,483],{"class":469},[321,1178,1179],{"class":486},"path/to/file.txt",[321,1181,490],{"class":469},[321,1183,567],{"class":469},[321,1185,1186],{"class":493}," // Local file path\n",[321,1188,1189,1191,1193,1195,1198],{"class":323,"line":355},[321,1190,772],{"class":520},[321,1192,524],{"class":469},[321,1194,470],{"class":469},[321,1196,1197],{"class":469}," ...",[321,1199,1200],{"class":469}," }\n",[321,1202,1203,1205],{"class":323,"line":361},[321,1204,575],{"class":469},[321,1206,578],{"class":473},[312,1208,1211],{"className":455,"code":1209,"filename":1210,"language":458,"meta":317,"style":317},"import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'resource-name',  // Unique identifier\n  uri: 'uri://...',      // Static URI or ResourceTemplate\n  handler: async (uri) => { // Handler function\n    return { contents: [...] }\n  },\n})\n","Custom Resource",[167,1212,1213,1233,1237,1249,1266,1284,1305,1327,1331],{"__ignoreMap":317},[321,1214,1215,1217,1219,1221,1223,1225,1227,1229,1231],{"class":323,"line":324},[321,1216,466],{"class":465},[321,1218,470],{"class":469},[321,1220,474],{"class":473},[321,1222,477],{"class":469},[321,1224,480],{"class":465},[321,1226,483],{"class":469},[321,1228,487],{"class":486},[321,1230,490],{"class":469},[321,1232,494],{"class":493},[321,1234,1235],{"class":323,"line":330},[321,1236,352],{"emptyLinePlaceholder":351},[321,1238,1239,1241,1243,1245,1247],{"class":323,"line":336},[321,1240,503],{"class":465},[321,1242,506],{"class":465},[321,1244,474],{"class":509},[321,1246,512],{"class":473},[321,1248,515],{"class":469},[321,1250,1251,1253,1255,1257,1259,1261,1263],{"class":323,"line":342},[321,1252,521],{"class":520},[321,1254,524],{"class":469},[321,1256,483],{"class":469},[321,1258,1164],{"class":486},[321,1260,490],{"class":469},[321,1262,567],{"class":469},[321,1264,1265],{"class":493},"  // Unique identifier\n",[321,1267,1268,1270,1272,1274,1277,1279,1281],{"class":323,"line":348},[321,1269,756],{"class":520},[321,1271,524],{"class":469},[321,1273,483],{"class":469},[321,1275,1276],{"class":486},"uri://...",[321,1278,490],{"class":469},[321,1280,567],{"class":469},[321,1282,1283],{"class":493},"      // Static URI or ResourceTemplate\n",[321,1285,1286,1288,1290,1292,1294,1296,1298,1300,1302],{"class":323,"line":355},[321,1287,803],{"class":509},[321,1289,524],{"class":469},[321,1291,809],{"class":808},[321,1293,812],{"class":469},[321,1295,618],{"class":815},[321,1297,608],{"class":469},[321,1299,826],{"class":808},[321,1301,470],{"class":469},[321,1303,1304],{"class":493}," // Handler function\n",[321,1306,1307,1309,1311,1314,1316,1318,1321,1324],{"class":323,"line":361},[321,1308,885],{"class":465},[321,1310,470],{"class":469},[321,1312,1313],{"class":520}," contents",[321,1315,524],{"class":469},[321,1317,898],{"class":520},[321,1319,1320],{"class":469},"...",[321,1322,1323],{"class":520},"] ",[321,1325,1326],{"class":469},"}\n",[321,1328,1329],{"class":323,"line":367},[321,1330,797],{"class":469},[321,1332,1333,1335],{"class":323,"line":373},[321,1334,575],{"class":469},[321,1336,578],{"class":473},[133,1338,1340],{"id":1339},"dynamic-resources-with-templates","Dynamic Resources with Templates",[138,1342,1343,1344,1347],{},"Use ",[167,1345,1346],{},"ResourceTemplate"," to create dynamic resources that accept variables:",[312,1349,1352],{"className":455,"code":1350,"filename":1351,"language":458,"meta":317,"style":317},"import { readFile } from 'node:fs/promises'\nimport { join } from 'node:path'\nimport { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport type { Variables } from '@modelcontextprotocol/sdk/shared/uriTemplate.js'\nimport { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'file',\n  title: 'File Resource',\n  uri: new ResourceTemplate('file:///project/{+path}', {\n    list: async () => {\n      // Return list of available resources\n      return {\n        resources: [\n          { uri: 'file:///project/README.md', name: 'README.md' },\n          { uri: 'file:///project/src/index.ts', name: 'src/index.ts' },\n        ],\n      }\n    },\n  }),\n  handler: async (uri: URL, variables: Variables) => {\n    const path = variables.path as string\n    const filePath = join(process.cwd(), path)\n    const content = await readFile(filePath, 'utf-8')\n\n    return {\n      contents: [{\n        uri: uri.toString(),\n        mimeType: 'text/plain',\n        text: content,\n      }],\n    }\n  },\n})\n","server/mcp/resources/file.ts",[167,1353,1354,1372,1392,1412,1435,1455,1459,1471,1485,1499,1523,1539,1544,1551,1561,1592,1622,1629,1634,1639,1648,1679,1701,1729,1755,1760,1767,1778,1795,1811,1822,1831,1836,1841],{"__ignoreMap":317},[321,1355,1356,1358,1360,1362,1364,1366,1368,1370],{"class":323,"line":324},[321,1357,466],{"class":465},[321,1359,470],{"class":469},[321,1361,638],{"class":473},[321,1363,477],{"class":469},[321,1365,480],{"class":465},[321,1367,483],{"class":469},[321,1369,647],{"class":486},[321,1371,650],{"class":469},[321,1373,1374,1376,1378,1381,1383,1385,1387,1390],{"class":323,"line":330},[321,1375,466],{"class":465},[321,1377,470],{"class":469},[321,1379,1380],{"class":473}," join",[321,1382,477],{"class":469},[321,1384,480],{"class":465},[321,1386,483],{"class":469},[321,1388,1389],{"class":486},"node:path",[321,1391,650],{"class":469},[321,1393,1394,1396,1398,1401,1403,1405,1407,1410],{"class":323,"line":336},[321,1395,466],{"class":465},[321,1397,470],{"class":469},[321,1399,1400],{"class":473}," ResourceTemplate",[321,1402,477],{"class":469},[321,1404,480],{"class":465},[321,1406,483],{"class":469},[321,1408,1409],{"class":486},"@modelcontextprotocol/sdk/server/mcp.js",[321,1411,650],{"class":469},[321,1413,1414,1416,1419,1421,1424,1426,1428,1430,1433],{"class":323,"line":342},[321,1415,466],{"class":465},[321,1417,1418],{"class":465}," type",[321,1420,470],{"class":469},[321,1422,1423],{"class":473}," Variables",[321,1425,477],{"class":469},[321,1427,480],{"class":465},[321,1429,483],{"class":469},[321,1431,1432],{"class":486},"@modelcontextprotocol/sdk/shared/uriTemplate.js",[321,1434,650],{"class":469},[321,1436,1437,1439,1441,1443,1445,1447,1449,1451,1453],{"class":323,"line":348},[321,1438,466],{"class":465},[321,1440,470],{"class":469},[321,1442,474],{"class":473},[321,1444,477],{"class":469},[321,1446,480],{"class":465},[321,1448,483],{"class":469},[321,1450,487],{"class":486},[321,1452,490],{"class":469},[321,1454,494],{"class":493},[321,1456,1457],{"class":323,"line":355},[321,1458,352],{"emptyLinePlaceholder":351},[321,1460,1461,1463,1465,1467,1469],{"class":323,"line":361},[321,1462,503],{"class":465},[321,1464,506],{"class":465},[321,1466,474],{"class":509},[321,1468,512],{"class":473},[321,1470,515],{"class":469},[321,1472,1473,1475,1477,1479,1481,1483],{"class":323,"line":367},[321,1474,521],{"class":520},[321,1476,524],{"class":469},[321,1478,483],{"class":469},[321,1480,451],{"class":486},[321,1482,490],{"class":469},[321,1484,534],{"class":469},[321,1486,1487,1489,1491,1493,1495,1497],{"class":323,"line":373},[321,1488,726],{"class":520},[321,1490,524],{"class":469},[321,1492,483],{"class":469},[321,1494,1115],{"class":486},[321,1496,490],{"class":469},[321,1498,534],{"class":469},[321,1500,1501,1503,1505,1508,1510,1512,1514,1517,1519,1521],{"class":323,"line":379},[321,1502,756],{"class":520},[321,1504,524],{"class":469},[321,1506,1507],{"class":469}," new",[321,1509,1400],{"class":509},[321,1511,512],{"class":473},[321,1513,490],{"class":469},[321,1515,1516],{"class":486},"file:///project/{+path}",[321,1518,490],{"class":469},[321,1520,567],{"class":469},[321,1522,777],{"class":469},[321,1524,1525,1528,1530,1532,1535,1537],{"class":323,"line":385},[321,1526,1527],{"class":509},"    list",[321,1529,524],{"class":469},[321,1531,809],{"class":808},[321,1533,1534],{"class":469}," ()",[321,1536,826],{"class":808},[321,1538,777],{"class":469},[321,1540,1541],{"class":323,"line":391},[321,1542,1543],{"class":493},"      // Return list of available resources\n",[321,1545,1546,1549],{"class":323,"line":800},[321,1547,1548],{"class":465},"      return",[321,1550,777],{"class":469},[321,1552,1553,1556,1558],{"class":323,"line":831},[321,1554,1555],{"class":520},"        resources",[321,1557,524],{"class":469},[321,1559,1560],{"class":520}," [\n",[321,1562,1563,1566,1568,1570,1572,1574,1576,1578,1581,1583,1585,1587,1589],{"class":323,"line":851},[321,1564,1565],{"class":469},"          {",[321,1567,911],{"class":520},[321,1569,524],{"class":469},[321,1571,483],{"class":469},[321,1573,169],{"class":486},[321,1575,490],{"class":469},[321,1577,567],{"class":469},[321,1579,1580],{"class":520}," name",[321,1582,524],{"class":469},[321,1584,483],{"class":469},[321,1586,562],{"class":486},[321,1588,490],{"class":469},[321,1590,1591],{"class":469}," },\n",[321,1593,1594,1596,1598,1600,1602,1605,1607,1609,1611,1613,1615,1618,1620],{"class":323,"line":882},[321,1595,1565],{"class":469},[321,1597,911],{"class":520},[321,1599,524],{"class":469},[321,1601,483],{"class":469},[321,1603,1604],{"class":486},"file:///project/src/index.ts",[321,1606,490],{"class":469},[321,1608,567],{"class":469},[321,1610,1580],{"class":520},[321,1612,524],{"class":469},[321,1614,483],{"class":469},[321,1616,1617],{"class":486},"src/index.ts",[321,1619,490],{"class":469},[321,1621,1591],{"class":469},[321,1623,1624,1627],{"class":323,"line":890},[321,1625,1626],{"class":520},"        ]",[321,1628,534],{"class":469},[321,1630,1631],{"class":323,"line":903},[321,1632,1633],{"class":469},"      }\n",[321,1635,1636],{"class":323,"line":925},[321,1637,1638],{"class":469},"    },\n",[321,1640,1641,1644,1646],{"class":323,"line":941},[321,1642,1643],{"class":469},"  }",[321,1645,608],{"class":473},[321,1647,534],{"class":469},[321,1649,1650,1652,1654,1656,1658,1660,1662,1664,1666,1669,1671,1673,1675,1677],{"class":323,"line":953},[321,1651,803],{"class":509},[321,1653,524],{"class":469},[321,1655,809],{"class":808},[321,1657,812],{"class":469},[321,1659,618],{"class":815},[321,1661,524],{"class":469},[321,1663,821],{"class":820},[321,1665,567],{"class":469},[321,1667,1668],{"class":815}," variables",[321,1670,524],{"class":469},[321,1672,1423],{"class":820},[321,1674,608],{"class":469},[321,1676,826],{"class":808},[321,1678,777],{"class":469},[321,1680,1681,1683,1686,1688,1690,1692,1695,1698],{"class":323,"line":964},[321,1682,834],{"class":808},[321,1684,1685],{"class":473}," path",[321,1687,840],{"class":469},[321,1689,1668],{"class":473},[321,1691,914],{"class":469},[321,1693,1694],{"class":473},"path",[321,1696,1697],{"class":465}," as",[321,1699,1700],{"class":820}," string\n",[321,1702,1703,1705,1707,1709,1711,1713,1716,1718,1721,1723,1725,1727],{"class":323,"line":970},[321,1704,834],{"class":808},[321,1706,837],{"class":473},[321,1708,840],{"class":469},[321,1710,1380],{"class":509},[321,1712,512],{"class":520},[321,1714,1715],{"class":473},"process",[321,1717,914],{"class":469},[321,1719,1720],{"class":509},"cwd",[321,1722,920],{"class":520},[321,1724,567],{"class":469},[321,1726,1685],{"class":473},[321,1728,578],{"class":520},[321,1730,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753],{"class":323,"line":975},[321,1732,834],{"class":808},[321,1734,856],{"class":473},[321,1736,840],{"class":469},[321,1738,861],{"class":465},[321,1740,638],{"class":509},[321,1742,512],{"class":520},[321,1744,868],{"class":473},[321,1746,567],{"class":469},[321,1748,483],{"class":469},[321,1750,875],{"class":486},[321,1752,490],{"class":469},[321,1754,578],{"class":520},[321,1756,1758],{"class":323,"line":1757},25,[321,1759,352],{"emptyLinePlaceholder":351},[321,1761,1763,1765],{"class":323,"line":1762},26,[321,1764,885],{"class":465},[321,1766,777],{"class":469},[321,1768,1770,1772,1774,1776],{"class":323,"line":1769},27,[321,1771,893],{"class":520},[321,1773,524],{"class":469},[321,1775,898],{"class":520},[321,1777,515],{"class":469},[321,1779,1781,1783,1785,1787,1789,1791,1793],{"class":323,"line":1780},28,[321,1782,906],{"class":520},[321,1784,524],{"class":469},[321,1786,911],{"class":473},[321,1788,914],{"class":469},[321,1790,917],{"class":509},[321,1792,920],{"class":520},[321,1794,534],{"class":469},[321,1796,1798,1800,1802,1804,1807,1809],{"class":323,"line":1797},29,[321,1799,928],{"class":520},[321,1801,524],{"class":469},[321,1803,483],{"class":469},[321,1805,1806],{"class":486},"text/plain",[321,1808,490],{"class":469},[321,1810,534],{"class":469},[321,1812,1814,1816,1818,1820],{"class":323,"line":1813},30,[321,1815,944],{"class":520},[321,1817,524],{"class":469},[321,1819,856],{"class":473},[321,1821,534],{"class":469},[321,1823,1825,1827,1829],{"class":323,"line":1824},31,[321,1826,956],{"class":469},[321,1828,959],{"class":520},[321,1830,534],{"class":469},[321,1832,1834],{"class":323,"line":1833},32,[321,1835,967],{"class":469},[321,1837,1839],{"class":323,"line":1838},33,[321,1840,797],{"class":469},[321,1842,1844,1846],{"class":323,"line":1843},34,[321,1845,575],{"class":469},[321,1847,578],{"class":473},[133,1849,1346],{"id":1850},"resourcetemplate",[138,1852,1853,1855],{},[167,1854,1346],{}," allows you to create resources with variable parts in the URI:",[312,1857,1859],{"className":455,"code":1858,"language":458,"meta":317,"style":317},"new ResourceTemplate('file:///project/{+path}', {\n  list: async () => {\n    // Optional: Return list of available resources\n    return {\n      resources: [\n        { uri: 'file:///project/file1.txt', name: 'File 1' },\n        { uri: 'file:///project/file2.txt', name: 'File 2' },\n      ],\n    }\n  },\n})\n",[167,1860,1861,1880,1895,1900,1906,1915,1946,1976,1983,1987,1991],{"__ignoreMap":317},[321,1862,1863,1866,1868,1870,1872,1874,1876,1878],{"class":323,"line":324},[321,1864,1865],{"class":469},"new",[321,1867,1400],{"class":509},[321,1869,512],{"class":473},[321,1871,490],{"class":469},[321,1873,1516],{"class":486},[321,1875,490],{"class":469},[321,1877,567],{"class":469},[321,1879,777],{"class":469},[321,1881,1882,1885,1887,1889,1891,1893],{"class":323,"line":330},[321,1883,1884],{"class":509},"  list",[321,1886,524],{"class":469},[321,1888,809],{"class":808},[321,1890,1534],{"class":469},[321,1892,826],{"class":808},[321,1894,777],{"class":469},[321,1896,1897],{"class":323,"line":336},[321,1898,1899],{"class":493},"    // Optional: Return list of available resources\n",[321,1901,1902,1904],{"class":323,"line":342},[321,1903,885],{"class":465},[321,1905,777],{"class":469},[321,1907,1908,1911,1913],{"class":323,"line":348},[321,1909,1910],{"class":520},"      resources",[321,1912,524],{"class":469},[321,1914,1560],{"class":520},[321,1916,1917,1920,1922,1924,1926,1929,1931,1933,1935,1937,1939,1942,1944],{"class":323,"line":355},[321,1918,1919],{"class":469},"        {",[321,1921,911],{"class":520},[321,1923,524],{"class":469},[321,1925,483],{"class":469},[321,1927,1928],{"class":486},"file:///project/file1.txt",[321,1930,490],{"class":469},[321,1932,567],{"class":469},[321,1934,1580],{"class":520},[321,1936,524],{"class":469},[321,1938,483],{"class":469},[321,1940,1941],{"class":486},"File 1",[321,1943,490],{"class":469},[321,1945,1591],{"class":469},[321,1947,1948,1950,1952,1954,1956,1959,1961,1963,1965,1967,1969,1972,1974],{"class":323,"line":361},[321,1949,1919],{"class":469},[321,1951,911],{"class":520},[321,1953,524],{"class":469},[321,1955,483],{"class":469},[321,1957,1958],{"class":486},"file:///project/file2.txt",[321,1960,490],{"class":469},[321,1962,567],{"class":469},[321,1964,1580],{"class":520},[321,1966,524],{"class":469},[321,1968,483],{"class":469},[321,1970,1971],{"class":486},"File 2",[321,1973,490],{"class":469},[321,1975,1591],{"class":469},[321,1977,1978,1981],{"class":323,"line":367},[321,1979,1980],{"class":520},"      ]",[321,1982,534],{"class":469},[321,1984,1985],{"class":323,"line":373},[321,1986,967],{"class":469},[321,1988,1989],{"class":323,"line":379},[321,1990,797],{"class":469},[321,1992,1993,1995],{"class":323,"line":385},[321,1994,575],{"class":469},[321,1996,578],{"class":473},[442,1998,2000],{"id":1999},"template-variables","Template Variables",[138,2002,2003,2004,524],{},"Variables in the URI are defined with ",[167,2005,2006],{},"{variableName}",[312,2008,2010],{"className":455,"code":2009,"language":458,"meta":317,"style":317},"// Single variable\nnew ResourceTemplate('file:///project/{path}', { ... })\n\n// Variable allowing slashes (reserved expansion)\nnew ResourceTemplate('file:///project/{+path}', { ... })\n\n// Multiple variables\nnew ResourceTemplate('api://users/{userId}/posts/{postId}', { ... })\n",[167,2011,2012,2017,2042,2046,2051,2075,2079,2084],{"__ignoreMap":317},[321,2013,2014],{"class":323,"line":324},[321,2015,2016],{"class":493},"// Single variable\n",[321,2018,2019,2021,2023,2025,2027,2030,2032,2034,2036,2038,2040],{"class":323,"line":330},[321,2020,1865],{"class":469},[321,2022,1400],{"class":509},[321,2024,512],{"class":473},[321,2026,490],{"class":469},[321,2028,2029],{"class":486},"file:///project/{path}",[321,2031,490],{"class":469},[321,2033,567],{"class":469},[321,2035,470],{"class":469},[321,2037,1197],{"class":469},[321,2039,477],{"class":469},[321,2041,578],{"class":473},[321,2043,2044],{"class":323,"line":336},[321,2045,352],{"emptyLinePlaceholder":351},[321,2047,2048],{"class":323,"line":342},[321,2049,2050],{"class":493},"// Variable allowing slashes (reserved expansion)\n",[321,2052,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073],{"class":323,"line":348},[321,2054,1865],{"class":469},[321,2056,1400],{"class":509},[321,2058,512],{"class":473},[321,2060,490],{"class":469},[321,2062,1516],{"class":486},[321,2064,490],{"class":469},[321,2066,567],{"class":469},[321,2068,470],{"class":469},[321,2070,1197],{"class":469},[321,2072,477],{"class":469},[321,2074,578],{"class":473},[321,2076,2077],{"class":323,"line":355},[321,2078,352],{"emptyLinePlaceholder":351},[321,2080,2081],{"class":323,"line":361},[321,2082,2083],{"class":493},"// Multiple variables\n",[321,2085,2086,2088,2090,2092,2094,2097,2099,2101,2103,2105,2107],{"class":323,"line":367},[321,2087,1865],{"class":469},[321,2089,1400],{"class":509},[321,2091,512],{"class":473},[321,2093,490],{"class":469},[321,2095,2096],{"class":486},"api://users/{userId}/posts/{postId}",[321,2098,490],{"class":469},[321,2100,567],{"class":469},[321,2102,470],{"class":469},[321,2104,1197],{"class":469},[321,2106,477],{"class":469},[321,2108,578],{"class":473},[133,2110,2112],{"id":2111},"handler-function","Handler Function",[138,2114,2115],{},"The handler receives the resolved URI and optional variables:",[312,2117,2119],{"className":455,"code":2118,"language":458,"meta":317,"style":317},"// Static resource handler\nhandler: async (uri: URL) => {\n  return {\n    contents: [{\n      uri: uri.toString(),\n      mimeType: 'text/plain',\n      text: 'Content',\n    }],\n  }\n}\n\n// Dynamic resource handler\nhandler: async (uri: URL, variables: Variables) => {\n  const path = variables.path as string\n  // Use variables to resolve the resource\n  return {\n    contents: [{\n      uri: uri.toString(),\n      mimeType: 'text/plain',\n      text: 'Content',\n    }],\n  }\n}\n",[167,2120,2121,2126,2148,2155,2166,2183,2198,2214,2223,2228,2232,2236,2241,2271,2290,2295,2301,2311,2327,2341,2355,2363,2367],{"__ignoreMap":317},[321,2122,2123],{"class":323,"line":324},[321,2124,2125],{"class":493},"// Static resource handler\n",[321,2127,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146],{"class":323,"line":330},[321,2129,622],{"class":820},[321,2131,524],{"class":469},[321,2133,809],{"class":808},[321,2135,812],{"class":469},[321,2137,618],{"class":815},[321,2139,524],{"class":469},[321,2141,821],{"class":820},[321,2143,608],{"class":469},[321,2145,826],{"class":808},[321,2147,777],{"class":469},[321,2149,2150,2153],{"class":323,"line":336},[321,2151,2152],{"class":465},"  return",[321,2154,777],{"class":469},[321,2156,2157,2160,2162,2164],{"class":323,"line":342},[321,2158,2159],{"class":520},"    contents",[321,2161,524],{"class":469},[321,2163,898],{"class":520},[321,2165,515],{"class":469},[321,2167,2168,2171,2173,2175,2177,2179,2181],{"class":323,"line":348},[321,2169,2170],{"class":520},"      uri",[321,2172,524],{"class":469},[321,2174,911],{"class":473},[321,2176,914],{"class":469},[321,2178,917],{"class":509},[321,2180,920],{"class":520},[321,2182,534],{"class":469},[321,2184,2185,2188,2190,2192,2194,2196],{"class":323,"line":355},[321,2186,2187],{"class":520},"      mimeType",[321,2189,524],{"class":469},[321,2191,483],{"class":469},[321,2193,1806],{"class":486},[321,2195,490],{"class":469},[321,2197,534],{"class":469},[321,2199,2200,2203,2205,2207,2210,2212],{"class":323,"line":361},[321,2201,2202],{"class":520},"      text",[321,2204,524],{"class":469},[321,2206,483],{"class":469},[321,2208,2209],{"class":486},"Content",[321,2211,490],{"class":469},[321,2213,534],{"class":469},[321,2215,2216,2219,2221],{"class":323,"line":367},[321,2217,2218],{"class":469},"    }",[321,2220,959],{"class":520},[321,2222,534],{"class":469},[321,2224,2225],{"class":323,"line":373},[321,2226,2227],{"class":469},"  }\n",[321,2229,2230],{"class":323,"line":379},[321,2231,1326],{"class":469},[321,2233,2234],{"class":323,"line":385},[321,2235,352],{"emptyLinePlaceholder":351},[321,2237,2238],{"class":323,"line":391},[321,2239,2240],{"class":493},"// Dynamic resource handler\n",[321,2242,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269],{"class":323,"line":800},[321,2244,622],{"class":820},[321,2246,524],{"class":469},[321,2248,809],{"class":808},[321,2250,812],{"class":469},[321,2252,618],{"class":815},[321,2254,524],{"class":469},[321,2256,821],{"class":820},[321,2258,567],{"class":469},[321,2260,1668],{"class":815},[321,2262,524],{"class":469},[321,2264,1423],{"class":820},[321,2266,608],{"class":469},[321,2268,826],{"class":808},[321,2270,777],{"class":469},[321,2272,2273,2276,2278,2280,2282,2284,2286,2288],{"class":323,"line":831},[321,2274,2275],{"class":808},"  const",[321,2277,1685],{"class":473},[321,2279,840],{"class":469},[321,2281,1668],{"class":473},[321,2283,914],{"class":469},[321,2285,1694],{"class":473},[321,2287,1697],{"class":465},[321,2289,1700],{"class":820},[321,2291,2292],{"class":323,"line":851},[321,2293,2294],{"class":493},"  // Use variables to resolve the resource\n",[321,2296,2297,2299],{"class":323,"line":882},[321,2298,2152],{"class":465},[321,2300,777],{"class":469},[321,2302,2303,2305,2307,2309],{"class":323,"line":890},[321,2304,2159],{"class":520},[321,2306,524],{"class":469},[321,2308,898],{"class":520},[321,2310,515],{"class":469},[321,2312,2313,2315,2317,2319,2321,2323,2325],{"class":323,"line":903},[321,2314,2170],{"class":520},[321,2316,524],{"class":469},[321,2318,911],{"class":473},[321,2320,914],{"class":469},[321,2322,917],{"class":509},[321,2324,920],{"class":520},[321,2326,534],{"class":469},[321,2328,2329,2331,2333,2335,2337,2339],{"class":323,"line":925},[321,2330,2187],{"class":520},[321,2332,524],{"class":469},[321,2334,483],{"class":469},[321,2336,1806],{"class":486},[321,2338,490],{"class":469},[321,2340,534],{"class":469},[321,2342,2343,2345,2347,2349,2351,2353],{"class":323,"line":941},[321,2344,2202],{"class":520},[321,2346,524],{"class":469},[321,2348,483],{"class":469},[321,2350,2209],{"class":486},[321,2352,490],{"class":469},[321,2354,534],{"class":469},[321,2356,2357,2359,2361],{"class":323,"line":953},[321,2358,2218],{"class":469},[321,2360,959],{"class":520},[321,2362,534],{"class":469},[321,2364,2365],{"class":323,"line":964},[321,2366,2227],{"class":469},[321,2368,2369],{"class":323,"line":970},[321,2370,1326],{"class":469},[133,2372,2374],{"id":2373},"resource-metadata","Resource Metadata",[138,2376,2377],{},"Add metadata to help clients understand the resource:",[312,2379,2381],{"className":455,"code":2380,"filename":457,"language":458,"meta":317,"style":317},"import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'readme',\n  description: 'Project README file',\n  file: 'README.md',\n})\n",[167,2382,2383,2403,2407,2419,2433,2447,2461],{"__ignoreMap":317},[321,2384,2385,2387,2389,2391,2393,2395,2397,2399,2401],{"class":323,"line":324},[321,2386,466],{"class":465},[321,2388,470],{"class":469},[321,2390,474],{"class":473},[321,2392,477],{"class":469},[321,2394,480],{"class":465},[321,2396,483],{"class":469},[321,2398,487],{"class":486},[321,2400,490],{"class":469},[321,2402,494],{"class":493},[321,2404,2405],{"class":323,"line":330},[321,2406,352],{"emptyLinePlaceholder":351},[321,2408,2409,2411,2413,2415,2417],{"class":323,"line":336},[321,2410,503],{"class":465},[321,2412,506],{"class":465},[321,2414,474],{"class":509},[321,2416,512],{"class":473},[321,2418,515],{"class":469},[321,2420,2421,2423,2425,2427,2429,2431],{"class":323,"line":342},[321,2422,521],{"class":520},[321,2424,524],{"class":469},[321,2426,483],{"class":469},[321,2428,529],{"class":486},[321,2430,490],{"class":469},[321,2432,534],{"class":469},[321,2434,2435,2437,2439,2441,2443,2445],{"class":323,"line":348},[321,2436,539],{"class":520},[321,2438,524],{"class":469},[321,2440,483],{"class":469},[321,2442,546],{"class":486},[321,2444,490],{"class":469},[321,2446,534],{"class":469},[321,2448,2449,2451,2453,2455,2457,2459],{"class":323,"line":355},[321,2450,555],{"class":520},[321,2452,524],{"class":469},[321,2454,483],{"class":469},[321,2456,562],{"class":486},[321,2458,490],{"class":469},[321,2460,534],{"class":469},[321,2462,2463,2465],{"class":323,"line":361},[321,2464,575],{"class":469},[321,2466,578],{"class":473},[133,2468,2470],{"id":2469},"content-types","Content Types",[138,2472,2473],{},"Resources can return different MIME types:",[1110,2475,2476,2559,2661],{},[312,2477,2480],{"className":455,"code":2478,"filename":2479,"language":458,"meta":317,"style":317},"return {\n  contents: [{\n    uri: uri.toString(),\n    mimeType: 'text/markdown',\n    text: '# Markdown content',\n  }],\n}\n","Text/Markdown",[167,2481,2482,2489,2500,2517,2531,2547,2555],{"__ignoreMap":317},[321,2483,2484,2487],{"class":323,"line":324},[321,2485,2486],{"class":465},"return",[321,2488,777],{"class":469},[321,2490,2491,2494,2496,2498],{"class":323,"line":330},[321,2492,2493],{"class":520},"  contents",[321,2495,524],{"class":469},[321,2497,898],{"class":473},[321,2499,515],{"class":469},[321,2501,2502,2505,2507,2509,2511,2513,2515],{"class":323,"line":336},[321,2503,2504],{"class":520},"    uri",[321,2506,524],{"class":469},[321,2508,911],{"class":473},[321,2510,914],{"class":469},[321,2512,917],{"class":509},[321,2514,920],{"class":473},[321,2516,534],{"class":469},[321,2518,2519,2521,2523,2525,2527,2529],{"class":323,"line":342},[321,2520,782],{"class":520},[321,2522,524],{"class":469},[321,2524,483],{"class":469},[321,2526,607],{"class":486},[321,2528,490],{"class":469},[321,2530,534],{"class":469},[321,2532,2533,2536,2538,2540,2543,2545],{"class":323,"line":348},[321,2534,2535],{"class":520},"    text",[321,2537,524],{"class":469},[321,2539,483],{"class":469},[321,2541,2542],{"class":486},"# Markdown content",[321,2544,490],{"class":469},[321,2546,534],{"class":469},[321,2548,2549,2551,2553],{"class":323,"line":355},[321,2550,1643],{"class":469},[321,2552,959],{"class":473},[321,2554,534],{"class":469},[321,2556,2557],{"class":323,"line":361},[321,2558,1326],{"class":469},[312,2560,2563],{"className":455,"code":2561,"filename":2562,"language":458,"meta":317,"style":317},"return {\n  contents: [{\n    uri: uri.toString(),\n    mimeType: 'application/json',\n    text: JSON.stringify({ key: 'value' }),\n  }],\n}\n","JSON",[167,2564,2565,2571,2581,2597,2612,2649,2657],{"__ignoreMap":317},[321,2566,2567,2569],{"class":323,"line":324},[321,2568,2486],{"class":465},[321,2570,777],{"class":469},[321,2572,2573,2575,2577,2579],{"class":323,"line":330},[321,2574,2493],{"class":520},[321,2576,524],{"class":469},[321,2578,898],{"class":473},[321,2580,515],{"class":469},[321,2582,2583,2585,2587,2589,2591,2593,2595],{"class":323,"line":336},[321,2584,2504],{"class":520},[321,2586,524],{"class":469},[321,2588,911],{"class":473},[321,2590,914],{"class":469},[321,2592,917],{"class":509},[321,2594,920],{"class":473},[321,2596,534],{"class":469},[321,2598,2599,2601,2603,2605,2608,2610],{"class":323,"line":342},[321,2600,782],{"class":520},[321,2602,524],{"class":469},[321,2604,483],{"class":469},[321,2606,2607],{"class":486},"application/json",[321,2609,490],{"class":469},[321,2611,534],{"class":469},[321,2613,2614,2616,2618,2621,2623,2626,2628,2631,2634,2636,2638,2641,2643,2645,2647],{"class":323,"line":348},[321,2615,2535],{"class":520},[321,2617,524],{"class":469},[321,2619,2620],{"class":473}," JSON",[321,2622,914],{"class":469},[321,2624,2625],{"class":509},"stringify",[321,2627,512],{"class":473},[321,2629,2630],{"class":469},"{",[321,2632,2633],{"class":520}," key",[321,2635,524],{"class":469},[321,2637,483],{"class":469},[321,2639,2640],{"class":486},"value",[321,2642,490],{"class":469},[321,2644,477],{"class":469},[321,2646,608],{"class":473},[321,2648,534],{"class":469},[321,2650,2651,2653,2655],{"class":323,"line":355},[321,2652,1643],{"class":469},[321,2654,959],{"class":473},[321,2656,534],{"class":469},[321,2658,2659],{"class":323,"line":361},[321,2660,1326],{"class":469},[312,2662,2665],{"className":455,"code":2663,"filename":2664,"language":458,"meta":317,"style":317},"return {\n  contents: [{\n    uri: uri.toString(),\n    mimeType: 'image/png',\n    blob: Buffer.from(binaryData),\n  }],\n}\n","Binary Data",[167,2666,2667,2673,2683,2699,2714,2734,2742],{"__ignoreMap":317},[321,2668,2669,2671],{"class":323,"line":324},[321,2670,2486],{"class":465},[321,2672,777],{"class":469},[321,2674,2675,2677,2679,2681],{"class":323,"line":330},[321,2676,2493],{"class":520},[321,2678,524],{"class":469},[321,2680,898],{"class":473},[321,2682,515],{"class":469},[321,2684,2685,2687,2689,2691,2693,2695,2697],{"class":323,"line":336},[321,2686,2504],{"class":520},[321,2688,524],{"class":469},[321,2690,911],{"class":473},[321,2692,914],{"class":469},[321,2694,917],{"class":509},[321,2696,920],{"class":473},[321,2698,534],{"class":469},[321,2700,2701,2703,2705,2707,2710,2712],{"class":323,"line":342},[321,2702,782],{"class":520},[321,2704,524],{"class":469},[321,2706,483],{"class":469},[321,2708,2709],{"class":486},"image/png",[321,2711,490],{"class":469},[321,2713,534],{"class":469},[321,2715,2716,2719,2721,2724,2726,2729,2732],{"class":323,"line":348},[321,2717,2718],{"class":520},"    blob",[321,2720,524],{"class":469},[321,2722,2723],{"class":473}," Buffer",[321,2725,914],{"class":469},[321,2727,2728],{"class":509},"from",[321,2730,2731],{"class":473},"(binaryData)",[321,2733,534],{"class":469},[321,2735,2736,2738,2740],{"class":323,"line":355},[321,2737,1643],{"class":469},[321,2739,959],{"class":473},[321,2741,534],{"class":469},[321,2743,2744],{"class":323,"line":361},[321,2745,1326],{"class":469},[133,2747,2749],{"id":2748},"error-handling","Error Handling",[138,2751,2752],{},"Handle errors gracefully in your handlers:",[312,2754,2756],{"className":455,"code":2755,"filename":627,"language":458,"meta":317,"style":317},"import { readFile } from 'node:fs/promises'\nimport { fileURLToPath } from 'node:url'\nimport { defineMcpResource } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpResource({\n  name: 'readme',\n  uri: 'file:///README.md',\n  handler: async (uri: URL) => {\n    try {\n      const filePath = fileURLToPath(uri)\n      const content = await readFile(filePath, 'utf-8')\n\n      return {\n        contents: [{\n          uri: uri.toString(),\n          mimeType: 'text/markdown',\n          text: content,\n        }],\n      }\n    }\n    catch (error) {\n      return {\n        contents: [{\n          uri: uri.toString(),\n          mimeType: 'text/plain',\n          text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n        }],\n        isError: true,\n      }\n    }\n  },\n})\n",[167,2757,2758,2776,2794,2814,2818,2830,2844,2858,2880,2887,2904,2930,2934,2940,2951,2968,2983,2994,3003,3007,3011,3026,3032,3042,3058,3072,3120,3128,3141,3145,3149,3153],{"__ignoreMap":317},[321,2759,2760,2762,2764,2766,2768,2770,2772,2774],{"class":323,"line":324},[321,2761,466],{"class":465},[321,2763,470],{"class":469},[321,2765,638],{"class":473},[321,2767,477],{"class":469},[321,2769,480],{"class":465},[321,2771,483],{"class":469},[321,2773,647],{"class":486},[321,2775,650],{"class":469},[321,2777,2778,2780,2782,2784,2786,2788,2790,2792],{"class":323,"line":330},[321,2779,466],{"class":465},[321,2781,470],{"class":469},[321,2783,659],{"class":473},[321,2785,477],{"class":469},[321,2787,480],{"class":465},[321,2789,483],{"class":469},[321,2791,668],{"class":486},[321,2793,650],{"class":469},[321,2795,2796,2798,2800,2802,2804,2806,2808,2810,2812],{"class":323,"line":336},[321,2797,466],{"class":465},[321,2799,470],{"class":469},[321,2801,474],{"class":473},[321,2803,477],{"class":469},[321,2805,480],{"class":465},[321,2807,483],{"class":469},[321,2809,487],{"class":486},[321,2811,490],{"class":469},[321,2813,494],{"class":493},[321,2815,2816],{"class":323,"line":342},[321,2817,352],{"emptyLinePlaceholder":351},[321,2819,2820,2822,2824,2826,2828],{"class":323,"line":348},[321,2821,503],{"class":465},[321,2823,506],{"class":465},[321,2825,474],{"class":509},[321,2827,512],{"class":473},[321,2829,515],{"class":469},[321,2831,2832,2834,2836,2838,2840,2842],{"class":323,"line":355},[321,2833,521],{"class":520},[321,2835,524],{"class":469},[321,2837,483],{"class":469},[321,2839,529],{"class":486},[321,2841,490],{"class":469},[321,2843,534],{"class":469},[321,2845,2846,2848,2850,2852,2854,2856],{"class":323,"line":361},[321,2847,756],{"class":520},[321,2849,524],{"class":469},[321,2851,483],{"class":469},[321,2853,763],{"class":486},[321,2855,490],{"class":469},[321,2857,534],{"class":469},[321,2859,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878],{"class":323,"line":367},[321,2861,803],{"class":509},[321,2863,524],{"class":469},[321,2865,809],{"class":808},[321,2867,812],{"class":469},[321,2869,618],{"class":815},[321,2871,524],{"class":469},[321,2873,821],{"class":820},[321,2875,608],{"class":469},[321,2877,826],{"class":808},[321,2879,777],{"class":469},[321,2881,2882,2885],{"class":323,"line":373},[321,2883,2884],{"class":465},"    try",[321,2886,777],{"class":469},[321,2888,2889,2892,2894,2896,2898,2900,2902],{"class":323,"line":379},[321,2890,2891],{"class":808},"      const",[321,2893,837],{"class":473},[321,2895,840],{"class":469},[321,2897,659],{"class":509},[321,2899,512],{"class":520},[321,2901,618],{"class":473},[321,2903,578],{"class":520},[321,2905,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928],{"class":323,"line":385},[321,2907,2891],{"class":808},[321,2909,856],{"class":473},[321,2911,840],{"class":469},[321,2913,861],{"class":465},[321,2915,638],{"class":509},[321,2917,512],{"class":520},[321,2919,868],{"class":473},[321,2921,567],{"class":469},[321,2923,483],{"class":469},[321,2925,875],{"class":486},[321,2927,490],{"class":469},[321,2929,578],{"class":520},[321,2931,2932],{"class":323,"line":391},[321,2933,352],{"emptyLinePlaceholder":351},[321,2935,2936,2938],{"class":323,"line":800},[321,2937,1548],{"class":465},[321,2939,777],{"class":469},[321,2941,2942,2945,2947,2949],{"class":323,"line":831},[321,2943,2944],{"class":520},"        contents",[321,2946,524],{"class":469},[321,2948,898],{"class":520},[321,2950,515],{"class":469},[321,2952,2953,2956,2958,2960,2962,2964,2966],{"class":323,"line":851},[321,2954,2955],{"class":520},"          uri",[321,2957,524],{"class":469},[321,2959,911],{"class":473},[321,2961,914],{"class":469},[321,2963,917],{"class":509},[321,2965,920],{"class":520},[321,2967,534],{"class":469},[321,2969,2970,2973,2975,2977,2979,2981],{"class":323,"line":882},[321,2971,2972],{"class":520},"          mimeType",[321,2974,524],{"class":469},[321,2976,483],{"class":469},[321,2978,607],{"class":486},[321,2980,490],{"class":469},[321,2982,534],{"class":469},[321,2984,2985,2988,2990,2992],{"class":323,"line":890},[321,2986,2987],{"class":520},"          text",[321,2989,524],{"class":469},[321,2991,856],{"class":473},[321,2993,534],{"class":469},[321,2995,2996,2999,3001],{"class":323,"line":903},[321,2997,2998],{"class":469},"        }",[321,3000,959],{"class":520},[321,3002,534],{"class":469},[321,3004,3005],{"class":323,"line":925},[321,3006,1633],{"class":469},[321,3008,3009],{"class":323,"line":941},[321,3010,967],{"class":469},[321,3012,3013,3016,3018,3021,3024],{"class":323,"line":953},[321,3014,3015],{"class":465},"    catch",[321,3017,812],{"class":520},[321,3019,3020],{"class":473},"error",[321,3022,3023],{"class":520},") ",[321,3025,515],{"class":469},[321,3027,3028,3030],{"class":323,"line":964},[321,3029,1548],{"class":465},[321,3031,777],{"class":469},[321,3033,3034,3036,3038,3040],{"class":323,"line":970},[321,3035,2944],{"class":520},[321,3037,524],{"class":469},[321,3039,898],{"class":520},[321,3041,515],{"class":469},[321,3043,3044,3046,3048,3050,3052,3054,3056],{"class":323,"line":975},[321,3045,2955],{"class":520},[321,3047,524],{"class":469},[321,3049,911],{"class":473},[321,3051,914],{"class":469},[321,3053,917],{"class":509},[321,3055,920],{"class":520},[321,3057,534],{"class":469},[321,3059,3060,3062,3064,3066,3068,3070],{"class":323,"line":1757},[321,3061,2972],{"class":520},[321,3063,524],{"class":469},[321,3065,483],{"class":469},[321,3067,1806],{"class":486},[321,3069,490],{"class":469},[321,3071,534],{"class":469},[321,3073,3074,3076,3078,3081,3084,3087,3090,3093,3096,3099,3102,3104,3107,3109,3112,3115,3118],{"class":323,"line":1762},[321,3075,2987],{"class":520},[321,3077,524],{"class":469},[321,3079,3080],{"class":469}," `",[321,3082,3083],{"class":486},"Error: ",[321,3085,3086],{"class":469},"${",[321,3088,3089],{"class":473},"error ",[321,3091,3092],{"class":469},"instanceof",[321,3094,3095],{"class":820}," Error",[321,3097,3098],{"class":469}," ?",[321,3100,3101],{"class":473}," error",[321,3103,914],{"class":469},[321,3105,3106],{"class":473},"message ",[321,3108,524],{"class":469},[321,3110,3111],{"class":509}," String",[321,3113,3114],{"class":473},"(error)",[321,3116,3117],{"class":469},"}`",[321,3119,534],{"class":469},[321,3121,3122,3124,3126],{"class":323,"line":1769},[321,3123,2998],{"class":469},[321,3125,959],{"class":520},[321,3127,534],{"class":469},[321,3129,3130,3133,3135,3139],{"class":323,"line":1780},[321,3131,3132],{"class":520},"        isError",[321,3134,524],{"class":469},[321,3136,3138],{"class":3137},"sfNiH"," true",[321,3140,534],{"class":469},[321,3142,3143],{"class":323,"line":1797},[321,3144,1633],{"class":469},[321,3146,3147],{"class":323,"line":1813},[321,3148,967],{"class":469},[321,3150,3151],{"class":323,"line":1824},[321,3152,797],{"class":469},[321,3154,3155,3157],{"class":323,"line":1833},[321,3156,575],{"class":469},[321,3158,578],{"class":473},[133,3160,3162],{"id":3161},"file-organization","File Organization",[138,3164,3165,3166,3169],{},"Organize your resources in the ",[167,3167,3168],{},"server/mcp/resources/"," directory:",[312,3171,3176],{"className":3172,"code":3174,"language":3175},[3173],"language-text","server/\n└── mcp/\n    └── resources/\n        ├── readme.ts\n        └── file.ts\n","text",[167,3177,3174],{"__ignoreMap":317},[138,3179,3180],{},"Each file should export a default resource definition.",[133,3182,3184],{"id":3183},"uri-schemes","URI Schemes",[138,3186,3187],{},"You can use any URI scheme that makes sense for your use case:",[273,3189,3190,3196,3202,3212],{},[276,3191,3192,3195],{},[167,3193,3194],{},"file://"," - File system resources",[276,3197,3198,3201],{},[167,3199,3200],{},"api://"," - API endpoints",[276,3203,3204,3207,3208,3211],{},[167,3205,3206],{},"http://"," / ",[167,3209,3210],{},"https://"," - Web resources",[276,3213,3214,3217],{},[167,3215,3216],{},"custom://"," - Custom schemes",[133,3219,3221],{"id":3220},"next-steps","Next Steps",[273,3223,3224,3229,3234,3239],{},[276,3225,3226,3228],{},[155,3227,49],{"href":50}," - Create tools to perform actions",[276,3230,3231,3233],{},[155,3232,59],{"href":60}," - Create reusable prompts",[276,3235,3236,3238],{},[155,3237,64],{"href":65}," - Create custom MCP endpoints",[276,3240,3241,3243],{},[155,3242,99],{"href":120}," - More resource examples",[3245,3246,3247],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":317,"searchDepth":330,"depth":330,"links":3249},[3250,3251,3252,3253,3257,3258,3259,3260,3263,3264,3265,3266,3267,3268,3269],{"id":135,"depth":330,"text":136},{"id":177,"depth":330,"text":178},{"id":303,"depth":330,"text":304},{"id":436,"depth":330,"text":437,"children":3254},[3255,3256],{"id":444,"depth":336,"text":445},{"id":611,"depth":336,"text":612},{"id":982,"depth":330,"text":983},{"id":1104,"depth":330,"text":1105},{"id":1339,"depth":330,"text":1340},{"id":1850,"depth":330,"text":1346,"children":3261},[3262],{"id":1999,"depth":336,"text":2000},{"id":2111,"depth":330,"text":2112},{"id":2373,"depth":330,"text":2374},{"id":2469,"depth":330,"text":2470},{"id":2748,"depth":330,"text":2749},{"id":3161,"depth":330,"text":3162},{"id":3183,"depth":330,"text":3184},{"id":3220,"depth":330,"text":3221},"Expose read-only data sources as MCP resources to provide context to AI models.","md",null,{},{"icon":57},{"title":54,"description":3276},"Create MCP resources to expose read-only data sources with static or dynamic URIs.","h2eCKwK9DFi4_rjzZvwtZGk3zpbFpX9u8v-Us5BBB1w",[3279,3281],{"title":49,"path":50,"stem":51,"description":3280,"icon":52,"children":-1},"Create MCP tools with Zod validation and type safety.",{"title":59,"path":60,"stem":61,"description":3282,"icon":62,"children":-1},"Create reusable prompts for AI assistants with optional arguments.",1770467787400]