[{"data":1,"prerenderedAt":4540},["ShallowReactive",2],{"blog-posts":3},[4,2576,2763,3120,3842],{"id":5,"title":6,"author":7,"body":8,"description":2554,"extension":2555,"image":2556,"meta":2557,"navigation":191,"path":2560,"publishedAt":2561,"seo":2562,"stem":2571,"tags":2572,"__hash__":2575},"blog/blog/build-your-own-mcp-server-typescript.md","Build Your Own MCP Server with TypeScript: A Complete Guide","Anton Andresen",{"type":9,"value":10,"toc":2542},"minimal",[11,15,19,22,25,30,33,36,39,61,64,68,71,74,116,122,125,129,132,997,1000,1004,1007,1013,1023,1029,1035,1042,1046,1049,1052,1371,1374,1380,1383,1387,1390,1393,1399,1569,1575,1709,1715,1848,1851,1855,1858,1861,1866,2015,2020,2158,2163,2279,2282,2286,2289,2303,2306,2310,2313,2319,2335,2338,2344,2423,2429,2435,2438,2499,2502,2506,2509,2512,2529,2532,2535,2538],[12,13,6],"h1",{"id":14},"build-your-own-mcp-server-with-typescript-a-complete-guide",[16,17,18],"p",{},"Have you ever wanted to give Claude custom superpowers?",[16,20,21],{},"That's exactly what Model Context Protocol (MCP) servers let you do... They're basically a way to extend AI clients like Claude, Cursor, or any other MCP-compatible tool with your own custom functions...",[16,23,24],{},"And honestly, it's way easier than you might think...",[26,27,29],"h2",{"id":28},"what-the-heck-is-mcp-anyway","What the Heck is MCP Anyway?",[16,31,32],{},"MCP is a standardized protocol that lets you connect AI clients to external tools and data sources...",[16,34,35],{},"Think of it like giving your AI access to your APIs, databases, or any custom functionality you want... The amazing thing is that once you build an MCP server, it works with ALL modern MCP clients...",[16,37,38],{},"That means your server will work with:",[40,41,42,50,56],"ul",{},[43,44,45,49],"li",{},[46,47,48],"strong",{},"Claude"," (via the desktop app or API)",[43,51,52,55],{},[46,53,54],{},"Cursor"," (the AI code editor)",[43,57,58],{},[46,59,60],{},"Any other MCP-compatible client",[16,62,63],{},"The cool part? You can build these servers in any language and deploy them anywhere... I'm gonna show you how to do it with TypeScript because, well, TypeScript is awesome...",[26,65,67],{"id":66},"setting-up-your-mcp-server","Setting Up Your MCP Server",[16,69,70],{},"First, let's get the dependencies sorted...",[16,72,73],{},"You'll need the MCP SDK and some other basics:",[75,76,81],"pre",{"className":77,"code":78,"language":79,"meta":80,"style":80},"language-bash shiki shiki-themes github-light github-dark","npm install @modelcontextprotocol/sdk zod\n# If you're using Nitro (like I am), you're already set\n# For Express, add: npm install express @types/express\n","bash","",[82,83,84,103,110],"code",{"__ignoreMap":80},[85,86,89,93,97,100],"span",{"class":87,"line":88},"line",1,[85,90,92],{"class":91},"sScJk","npm",[85,94,96],{"class":95},"sZZnC"," install",[85,98,99],{"class":95}," @modelcontextprotocol/sdk",[85,101,102],{"class":95}," zod\n",[85,104,106],{"class":87,"line":105},2,[85,107,109],{"class":108},"sJ8bj","# If you're using Nitro (like I am), you're already set\n",[85,111,113],{"class":87,"line":112},3,[85,114,115],{"class":108},"# For Express, add: npm install express @types/express\n",[16,117,118,121],{},[46,119,120],{},"Important:"," MCP requires Node.js v18.x or higher to work properly...",[16,123,124],{},"The core idea is pretty simple... You create a server, register some tools, and handle HTTP requests using the StreamableHTTPServerTransport...",[26,126,128],{"id":127},"the-complete-mcp-server-code","The Complete MCP Server Code",[16,130,131],{},"Here's the full implementation I'm using in my Nitro app:",[75,133,137],{"className":134,"code":135,"language":136,"meta":80,"style":80},"language-typescript shiki shiki-themes github-light github-dark","import { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\n\nexport default defineEventHandler(async (event) => {\n  if (['GET', 'DELETE'].includes(event.method)) {\n    event.node.res.writeHead(405).end(JSON.stringify({\n      jsonrpc: \"2.0\",\n      error: {\n        code: -32000,\n        message: \"Method not allowed.\"\n      },\n      id: null\n    }))\n  }\n\n  if (event.method === 'POST') {\n    const body = await readBody(event)\n    try {\n      const server = getServer()\n      const transport: StreamableHTTPServerTransport = new StreamableHTTPServerTransport({\n        sessionIdGenerator: undefined,\n      });\n      \n      event.node.res.on('close', () => {\n        console.log('Request closed')\n        transport.close()\n        server.close()\n      })\n      \n      await server.connect(transport)\n      await transport.handleRequest(event.node.req, event.node.res, body)\n      return\n    } catch (error) {\n      console.error('Error handling MCP request:', error);\n      if (!event.node.res.headersSent) {\n        return event.node.res.writeHead(500).end(JSON.stringify({\n          jsonrpc: '2.0',\n          error: {\n            code: -32603,\n            message: 'Internal server error',\n          },\n          id: null,\n        }))\n      }\n    }\n  }\n\n  // Return 404 for all other methods\n  return event.node.res.writeHead(404).end()\n})\n\nconst getServer = () => {\n  // Create an MCP server\n  const server = new McpServer({\n    name: \"your-mcp-server-name\",\n    version: \"1.0.0\"\n  });\n\n  // Add an addition tool\n  server.registerTool(\"add\",\n    {\n      title: \"Addition Tool\",\n      description: \"Add two numbers\",\n      inputSchema: { a: z.number(), b: z.number() }\n    },\n    async ({ a, b }) => ({\n      content: [{ type: \"text\", text: String(a + b) }]\n    })\n  )\n\n  return server\n}\n","typescript",[82,138,139,158,172,186,193,227,254,289,301,307,321,330,336,345,351,357,362,379,400,408,425,448,459,465,471,492,509,520,530,536,541,556,570,576,588,605,619,649,660,666,679,690,696,707,713,719,725,730,735,741,762,768,773,790,796,813,824,833,839,844,850,866,872,883,894,911,917,942,966,972,978,983,991],{"__ignoreMap":80},[85,140,141,145,149,152,155],{"class":87,"line":88},[85,142,144],{"class":143},"szBVR","import",[85,146,148],{"class":147},"sVt8B"," { StreamableHTTPServerTransport } ",[85,150,151],{"class":143},"from",[85,153,154],{"class":95}," \"@modelcontextprotocol/sdk/server/streamableHttp.js\"",[85,156,157],{"class":147},";\n",[85,159,160,162,165,167,170],{"class":87,"line":105},[85,161,144],{"class":143},[85,163,164],{"class":147}," { McpServer } ",[85,166,151],{"class":143},[85,168,169],{"class":95}," \"@modelcontextprotocol/sdk/server/mcp.js\"",[85,171,157],{"class":147},[85,173,174,176,179,181,184],{"class":87,"line":112},[85,175,144],{"class":143},[85,177,178],{"class":147}," { z } ",[85,180,151],{"class":143},[85,182,183],{"class":95}," \"zod\"",[85,185,157],{"class":147},[85,187,189],{"class":87,"line":188},4,[85,190,192],{"emptyLinePlaceholder":191},true,"\n",[85,194,196,199,202,205,208,211,214,218,221,224],{"class":87,"line":195},5,[85,197,198],{"class":143},"export",[85,200,201],{"class":143}," default",[85,203,204],{"class":91}," defineEventHandler",[85,206,207],{"class":147},"(",[85,209,210],{"class":143},"async",[85,212,213],{"class":147}," (",[85,215,217],{"class":216},"s4XuR","event",[85,219,220],{"class":147},") ",[85,222,223],{"class":143},"=>",[85,225,226],{"class":147}," {\n",[85,228,230,233,236,239,242,245,248,251],{"class":87,"line":229},6,[85,231,232],{"class":143},"  if",[85,234,235],{"class":147}," ([",[85,237,238],{"class":95},"'GET'",[85,240,241],{"class":147},", ",[85,243,244],{"class":95},"'DELETE'",[85,246,247],{"class":147},"].",[85,249,250],{"class":91},"includes",[85,252,253],{"class":147},"(event.method)) {\n",[85,255,257,260,263,265,269,272,275,277,280,283,286],{"class":87,"line":256},7,[85,258,259],{"class":147},"    event.node.res.",[85,261,262],{"class":91},"writeHead",[85,264,207],{"class":147},[85,266,268],{"class":267},"sj4cs","405",[85,270,271],{"class":147},").",[85,273,274],{"class":91},"end",[85,276,207],{"class":147},[85,278,279],{"class":267},"JSON",[85,281,282],{"class":147},".",[85,284,285],{"class":91},"stringify",[85,287,288],{"class":147},"({\n",[85,290,292,295,298],{"class":87,"line":291},8,[85,293,294],{"class":147},"      jsonrpc: ",[85,296,297],{"class":95},"\"2.0\"",[85,299,300],{"class":147},",\n",[85,302,304],{"class":87,"line":303},9,[85,305,306],{"class":147},"      error: {\n",[85,308,310,313,316,319],{"class":87,"line":309},10,[85,311,312],{"class":147},"        code: ",[85,314,315],{"class":143},"-",[85,317,318],{"class":267},"32000",[85,320,300],{"class":147},[85,322,324,327],{"class":87,"line":323},11,[85,325,326],{"class":147},"        message: ",[85,328,329],{"class":95},"\"Method not allowed.\"\n",[85,331,333],{"class":87,"line":332},12,[85,334,335],{"class":147},"      },\n",[85,337,339,342],{"class":87,"line":338},13,[85,340,341],{"class":147},"      id: ",[85,343,344],{"class":267},"null\n",[85,346,348],{"class":87,"line":347},14,[85,349,350],{"class":147},"    }))\n",[85,352,354],{"class":87,"line":353},15,[85,355,356],{"class":147},"  }\n",[85,358,360],{"class":87,"line":359},16,[85,361,192],{"emptyLinePlaceholder":191},[85,363,365,367,370,373,376],{"class":87,"line":364},17,[85,366,232],{"class":143},[85,368,369],{"class":147}," (event.method ",[85,371,372],{"class":143},"===",[85,374,375],{"class":95}," 'POST'",[85,377,378],{"class":147},") {\n",[85,380,382,385,388,391,394,397],{"class":87,"line":381},18,[85,383,384],{"class":143},"    const",[85,386,387],{"class":267}," body",[85,389,390],{"class":143}," =",[85,392,393],{"class":143}," await",[85,395,396],{"class":91}," readBody",[85,398,399],{"class":147},"(event)\n",[85,401,403,406],{"class":87,"line":402},19,[85,404,405],{"class":143},"    try",[85,407,226],{"class":147},[85,409,411,414,417,419,422],{"class":87,"line":410},20,[85,412,413],{"class":143},"      const",[85,415,416],{"class":267}," server",[85,418,390],{"class":143},[85,420,421],{"class":91}," getServer",[85,423,424],{"class":147},"()\n",[85,426,428,430,433,436,439,441,444,446],{"class":87,"line":427},21,[85,429,413],{"class":143},[85,431,432],{"class":267}," transport",[85,434,435],{"class":143},":",[85,437,438],{"class":91}," StreamableHTTPServerTransport",[85,440,390],{"class":143},[85,442,443],{"class":143}," new",[85,445,438],{"class":91},[85,447,288],{"class":147},[85,449,451,454,457],{"class":87,"line":450},22,[85,452,453],{"class":147},"        sessionIdGenerator: ",[85,455,456],{"class":267},"undefined",[85,458,300],{"class":147},[85,460,462],{"class":87,"line":461},23,[85,463,464],{"class":147},"      });\n",[85,466,468],{"class":87,"line":467},24,[85,469,470],{"class":147},"      \n",[85,472,474,477,480,482,485,488,490],{"class":87,"line":473},25,[85,475,476],{"class":147},"      event.node.res.",[85,478,479],{"class":91},"on",[85,481,207],{"class":147},[85,483,484],{"class":95},"'close'",[85,486,487],{"class":147},", () ",[85,489,223],{"class":143},[85,491,226],{"class":147},[85,493,495,498,501,503,506],{"class":87,"line":494},26,[85,496,497],{"class":147},"        console.",[85,499,500],{"class":91},"log",[85,502,207],{"class":147},[85,504,505],{"class":95},"'Request closed'",[85,507,508],{"class":147},")\n",[85,510,512,515,518],{"class":87,"line":511},27,[85,513,514],{"class":147},"        transport.",[85,516,517],{"class":91},"close",[85,519,424],{"class":147},[85,521,523,526,528],{"class":87,"line":522},28,[85,524,525],{"class":147},"        server.",[85,527,517],{"class":91},[85,529,424],{"class":147},[85,531,533],{"class":87,"line":532},29,[85,534,535],{"class":147},"      })\n",[85,537,539],{"class":87,"line":538},30,[85,540,470],{"class":147},[85,542,544,547,550,553],{"class":87,"line":543},31,[85,545,546],{"class":143},"      await",[85,548,549],{"class":147}," server.",[85,551,552],{"class":91},"connect",[85,554,555],{"class":147},"(transport)\n",[85,557,559,561,564,567],{"class":87,"line":558},32,[85,560,546],{"class":143},[85,562,563],{"class":147}," transport.",[85,565,566],{"class":91},"handleRequest",[85,568,569],{"class":147},"(event.node.req, event.node.res, body)\n",[85,571,573],{"class":87,"line":572},33,[85,574,575],{"class":143},"      return\n",[85,577,579,582,585],{"class":87,"line":578},34,[85,580,581],{"class":147},"    } ",[85,583,584],{"class":143},"catch",[85,586,587],{"class":147}," (error) {\n",[85,589,591,594,597,599,602],{"class":87,"line":590},35,[85,592,593],{"class":147},"      console.",[85,595,596],{"class":91},"error",[85,598,207],{"class":147},[85,600,601],{"class":95},"'Error handling MCP request:'",[85,603,604],{"class":147},", error);\n",[85,606,608,611,613,616],{"class":87,"line":607},36,[85,609,610],{"class":143},"      if",[85,612,213],{"class":147},[85,614,615],{"class":143},"!",[85,617,618],{"class":147},"event.node.res.headersSent) {\n",[85,620,622,625,628,630,632,635,637,639,641,643,645,647],{"class":87,"line":621},37,[85,623,624],{"class":143},"        return",[85,626,627],{"class":147}," event.node.res.",[85,629,262],{"class":91},[85,631,207],{"class":147},[85,633,634],{"class":267},"500",[85,636,271],{"class":147},[85,638,274],{"class":91},[85,640,207],{"class":147},[85,642,279],{"class":267},[85,644,282],{"class":147},[85,646,285],{"class":91},[85,648,288],{"class":147},[85,650,652,655,658],{"class":87,"line":651},38,[85,653,654],{"class":147},"          jsonrpc: ",[85,656,657],{"class":95},"'2.0'",[85,659,300],{"class":147},[85,661,663],{"class":87,"line":662},39,[85,664,665],{"class":147},"          error: {\n",[85,667,669,672,674,677],{"class":87,"line":668},40,[85,670,671],{"class":147},"            code: ",[85,673,315],{"class":143},[85,675,676],{"class":267},"32603",[85,678,300],{"class":147},[85,680,682,685,688],{"class":87,"line":681},41,[85,683,684],{"class":147},"            message: ",[85,686,687],{"class":95},"'Internal server error'",[85,689,300],{"class":147},[85,691,693],{"class":87,"line":692},42,[85,694,695],{"class":147},"          },\n",[85,697,699,702,705],{"class":87,"line":698},43,[85,700,701],{"class":147},"          id: ",[85,703,704],{"class":267},"null",[85,706,300],{"class":147},[85,708,710],{"class":87,"line":709},44,[85,711,712],{"class":147},"        }))\n",[85,714,716],{"class":87,"line":715},45,[85,717,718],{"class":147},"      }\n",[85,720,722],{"class":87,"line":721},46,[85,723,724],{"class":147},"    }\n",[85,726,728],{"class":87,"line":727},47,[85,729,356],{"class":147},[85,731,733],{"class":87,"line":732},48,[85,734,192],{"emptyLinePlaceholder":191},[85,736,738],{"class":87,"line":737},49,[85,739,740],{"class":108},"  // Return 404 for all other methods\n",[85,742,744,747,749,751,753,756,758,760],{"class":87,"line":743},50,[85,745,746],{"class":143},"  return",[85,748,627],{"class":147},[85,750,262],{"class":91},[85,752,207],{"class":147},[85,754,755],{"class":267},"404",[85,757,271],{"class":147},[85,759,274],{"class":91},[85,761,424],{"class":147},[85,763,765],{"class":87,"line":764},51,[85,766,767],{"class":147},"})\n",[85,769,771],{"class":87,"line":770},52,[85,772,192],{"emptyLinePlaceholder":191},[85,774,776,779,781,783,786,788],{"class":87,"line":775},53,[85,777,778],{"class":143},"const",[85,780,421],{"class":91},[85,782,390],{"class":143},[85,784,785],{"class":147}," () ",[85,787,223],{"class":143},[85,789,226],{"class":147},[85,791,793],{"class":87,"line":792},54,[85,794,795],{"class":108},"  // Create an MCP server\n",[85,797,799,802,804,806,808,811],{"class":87,"line":798},55,[85,800,801],{"class":143},"  const",[85,803,416],{"class":267},[85,805,390],{"class":143},[85,807,443],{"class":143},[85,809,810],{"class":91}," McpServer",[85,812,288],{"class":147},[85,814,816,819,822],{"class":87,"line":815},56,[85,817,818],{"class":147},"    name: ",[85,820,821],{"class":95},"\"your-mcp-server-name\"",[85,823,300],{"class":147},[85,825,827,830],{"class":87,"line":826},57,[85,828,829],{"class":147},"    version: ",[85,831,832],{"class":95},"\"1.0.0\"\n",[85,834,836],{"class":87,"line":835},58,[85,837,838],{"class":147},"  });\n",[85,840,842],{"class":87,"line":841},59,[85,843,192],{"emptyLinePlaceholder":191},[85,845,847],{"class":87,"line":846},60,[85,848,849],{"class":108},"  // Add an addition tool\n",[85,851,853,856,859,861,864],{"class":87,"line":852},61,[85,854,855],{"class":147},"  server.",[85,857,858],{"class":91},"registerTool",[85,860,207],{"class":147},[85,862,863],{"class":95},"\"add\"",[85,865,300],{"class":147},[85,867,869],{"class":87,"line":868},62,[85,870,871],{"class":147},"    {\n",[85,873,875,878,881],{"class":87,"line":874},63,[85,876,877],{"class":147},"      title: ",[85,879,880],{"class":95},"\"Addition Tool\"",[85,882,300],{"class":147},[85,884,886,889,892],{"class":87,"line":885},64,[85,887,888],{"class":147},"      description: ",[85,890,891],{"class":95},"\"Add two numbers\"",[85,893,300],{"class":147},[85,895,897,900,903,906,908],{"class":87,"line":896},65,[85,898,899],{"class":147},"      inputSchema: { a: z.",[85,901,902],{"class":91},"number",[85,904,905],{"class":147},"(), b: z.",[85,907,902],{"class":91},[85,909,910],{"class":147},"() }\n",[85,912,914],{"class":87,"line":913},66,[85,915,916],{"class":147},"    },\n",[85,918,920,923,926,929,931,934,937,939],{"class":87,"line":919},67,[85,921,922],{"class":143},"    async",[85,924,925],{"class":147}," ({ ",[85,927,928],{"class":216},"a",[85,930,241],{"class":147},[85,932,933],{"class":216},"b",[85,935,936],{"class":147}," }) ",[85,938,223],{"class":143},[85,940,941],{"class":147}," ({\n",[85,943,945,948,951,954,957,960,963],{"class":87,"line":944},68,[85,946,947],{"class":147},"      content: [{ type: ",[85,949,950],{"class":95},"\"text\"",[85,952,953],{"class":147},", text: ",[85,955,956],{"class":91},"String",[85,958,959],{"class":147},"(a ",[85,961,962],{"class":143},"+",[85,964,965],{"class":147}," b) }]\n",[85,967,969],{"class":87,"line":968},69,[85,970,971],{"class":147},"    })\n",[85,973,975],{"class":87,"line":974},70,[85,976,977],{"class":147},"  )\n",[85,979,981],{"class":87,"line":980},71,[85,982,192],{"emptyLinePlaceholder":191},[85,984,986,988],{"class":87,"line":985},72,[85,987,746],{"class":143},[85,989,990],{"class":147}," server\n",[85,992,994],{"class":87,"line":993},73,[85,995,996],{"class":147},"}\n",[16,998,999],{},"Let me break this down for you...",[26,1001,1003],{"id":1002},"how-it-actually-works","How It Actually Works",[16,1005,1006],{},"The magic happens in a few key parts:",[16,1008,1009,1012],{},[46,1010,1011],{},"1. HTTP Method Handling","\nWe only accept POST requests because that's how MCP communication works... Everything else gets a nice error response...",[16,1014,1015,1018,1019,1022],{},[46,1016,1017],{},"2. Transport Layer","\nThe ",[82,1020,1021],{},"StreamableHTTPServerTransport"," handles the connection between Claude and your server... It's basically the bridge that makes everything work...",[16,1024,1025,1028],{},[46,1026,1027],{},"3. Server Creation","\nWe create a new MCP server instance with a name and version... This is what Claude will see when it connects...",[16,1030,1031,1034],{},[46,1032,1033],{},"4. Tool Registration","\nThis is where you define what your server can actually do... In this example, it's just adding two numbers, but you can build way more complex stuff...",[16,1036,1037,1038,1041],{},"The modern way to register tools uses ",[82,1039,1040],{},"server.registerTool()"," which gives you better TypeScript support and cleaner APIs...",[26,1043,1045],{"id":1044},"adapting-for-express-or-any-framework","Adapting for Express (Or Any Framework)",[16,1047,1048],{},"The beauty of this approach is that it works everywhere...",[16,1050,1051],{},"For Express, you'd do something like this:",[75,1053,1055],{"className":134,"code":1054,"language":136,"meta":80,"style":80},"import express from 'express';\n// ... other imports\n\nconst app = express();\napp.use(express.json());\n\napp.post('/mcp', async (req, res) => {\n  try {\n    const server = getServer();\n    const transport = new StreamableHTTPServerTransport({\n      sessionIdGenerator: undefined,\n    });\n    \n    res.on('close', () => {\n      transport.close();\n      server.close();\n    });\n    \n    await server.connect(transport);\n    await transport.handleRequest(req, res, req.body);\n  } catch (error) {\n    console.error('MCP Error:', error);\n    if (!res.headersSent) {\n      res.status(500).json({\n        jsonrpc: '2.0',\n        error: { code: -32603, message: 'Internal server error' },\n        id: null,\n      });\n    }\n  }\n});\n",[82,1056,1057,1071,1076,1080,1095,1112,1116,1148,1155,1167,1181,1190,1195,1200,1217,1226,1235,1239,1243,1255,1266,1275,1289,1301,1319,1328,1345,1354,1358,1362,1366],{"__ignoreMap":80},[85,1058,1059,1061,1064,1066,1069],{"class":87,"line":88},[85,1060,144],{"class":143},[85,1062,1063],{"class":147}," express ",[85,1065,151],{"class":143},[85,1067,1068],{"class":95}," 'express'",[85,1070,157],{"class":147},[85,1072,1073],{"class":87,"line":105},[85,1074,1075],{"class":108},"// ... other imports\n",[85,1077,1078],{"class":87,"line":112},[85,1079,192],{"emptyLinePlaceholder":191},[85,1081,1082,1084,1087,1089,1092],{"class":87,"line":188},[85,1083,778],{"class":143},[85,1085,1086],{"class":267}," app",[85,1088,390],{"class":143},[85,1090,1091],{"class":91}," express",[85,1093,1094],{"class":147},"();\n",[85,1096,1097,1100,1103,1106,1109],{"class":87,"line":195},[85,1098,1099],{"class":147},"app.",[85,1101,1102],{"class":91},"use",[85,1104,1105],{"class":147},"(express.",[85,1107,1108],{"class":91},"json",[85,1110,1111],{"class":147},"());\n",[85,1113,1114],{"class":87,"line":229},[85,1115,192],{"emptyLinePlaceholder":191},[85,1117,1118,1120,1123,1125,1128,1130,1132,1134,1137,1139,1142,1144,1146],{"class":87,"line":256},[85,1119,1099],{"class":147},[85,1121,1122],{"class":91},"post",[85,1124,207],{"class":147},[85,1126,1127],{"class":95},"'/mcp'",[85,1129,241],{"class":147},[85,1131,210],{"class":143},[85,1133,213],{"class":147},[85,1135,1136],{"class":216},"req",[85,1138,241],{"class":147},[85,1140,1141],{"class":216},"res",[85,1143,220],{"class":147},[85,1145,223],{"class":143},[85,1147,226],{"class":147},[85,1149,1150,1153],{"class":87,"line":291},[85,1151,1152],{"class":143},"  try",[85,1154,226],{"class":147},[85,1156,1157,1159,1161,1163,1165],{"class":87,"line":303},[85,1158,384],{"class":143},[85,1160,416],{"class":267},[85,1162,390],{"class":143},[85,1164,421],{"class":91},[85,1166,1094],{"class":147},[85,1168,1169,1171,1173,1175,1177,1179],{"class":87,"line":309},[85,1170,384],{"class":143},[85,1172,432],{"class":267},[85,1174,390],{"class":143},[85,1176,443],{"class":143},[85,1178,438],{"class":91},[85,1180,288],{"class":147},[85,1182,1183,1186,1188],{"class":87,"line":323},[85,1184,1185],{"class":147},"      sessionIdGenerator: ",[85,1187,456],{"class":267},[85,1189,300],{"class":147},[85,1191,1192],{"class":87,"line":332},[85,1193,1194],{"class":147},"    });\n",[85,1196,1197],{"class":87,"line":338},[85,1198,1199],{"class":147},"    \n",[85,1201,1202,1205,1207,1209,1211,1213,1215],{"class":87,"line":347},[85,1203,1204],{"class":147},"    res.",[85,1206,479],{"class":91},[85,1208,207],{"class":147},[85,1210,484],{"class":95},[85,1212,487],{"class":147},[85,1214,223],{"class":143},[85,1216,226],{"class":147},[85,1218,1219,1222,1224],{"class":87,"line":353},[85,1220,1221],{"class":147},"      transport.",[85,1223,517],{"class":91},[85,1225,1094],{"class":147},[85,1227,1228,1231,1233],{"class":87,"line":359},[85,1229,1230],{"class":147},"      server.",[85,1232,517],{"class":91},[85,1234,1094],{"class":147},[85,1236,1237],{"class":87,"line":364},[85,1238,1194],{"class":147},[85,1240,1241],{"class":87,"line":381},[85,1242,1199],{"class":147},[85,1244,1245,1248,1250,1252],{"class":87,"line":402},[85,1246,1247],{"class":143},"    await",[85,1249,549],{"class":147},[85,1251,552],{"class":91},[85,1253,1254],{"class":147},"(transport);\n",[85,1256,1257,1259,1261,1263],{"class":87,"line":410},[85,1258,1247],{"class":143},[85,1260,563],{"class":147},[85,1262,566],{"class":91},[85,1264,1265],{"class":147},"(req, res, req.body);\n",[85,1267,1268,1271,1273],{"class":87,"line":427},[85,1269,1270],{"class":147},"  } ",[85,1272,584],{"class":143},[85,1274,587],{"class":147},[85,1276,1277,1280,1282,1284,1287],{"class":87,"line":450},[85,1278,1279],{"class":147},"    console.",[85,1281,596],{"class":91},[85,1283,207],{"class":147},[85,1285,1286],{"class":95},"'MCP Error:'",[85,1288,604],{"class":147},[85,1290,1291,1294,1296,1298],{"class":87,"line":461},[85,1292,1293],{"class":143},"    if",[85,1295,213],{"class":147},[85,1297,615],{"class":143},[85,1299,1300],{"class":147},"res.headersSent) {\n",[85,1302,1303,1306,1309,1311,1313,1315,1317],{"class":87,"line":467},[85,1304,1305],{"class":147},"      res.",[85,1307,1308],{"class":91},"status",[85,1310,207],{"class":147},[85,1312,634],{"class":267},[85,1314,271],{"class":147},[85,1316,1108],{"class":91},[85,1318,288],{"class":147},[85,1320,1321,1324,1326],{"class":87,"line":473},[85,1322,1323],{"class":147},"        jsonrpc: ",[85,1325,657],{"class":95},[85,1327,300],{"class":147},[85,1329,1330,1333,1335,1337,1340,1342],{"class":87,"line":494},[85,1331,1332],{"class":147},"        error: { code: ",[85,1334,315],{"class":143},[85,1336,676],{"class":267},[85,1338,1339],{"class":147},", message: ",[85,1341,687],{"class":95},[85,1343,1344],{"class":147}," },\n",[85,1346,1347,1350,1352],{"class":87,"line":511},[85,1348,1349],{"class":147},"        id: ",[85,1351,704],{"class":267},[85,1353,300],{"class":147},[85,1355,1356],{"class":87,"line":522},[85,1357,464],{"class":147},[85,1359,1360],{"class":87,"line":532},[85,1361,724],{"class":147},[85,1363,1364],{"class":87,"line":538},[85,1365,356],{"class":147},[85,1367,1368],{"class":87,"line":543},[85,1369,1370],{"class":147},"});\n",[16,1372,1373],{},"Same logic, different framework... Pretty nice, right?",[16,1375,1376,1379],{},[46,1377,1378],{},"Important Note:"," The example above creates a new server instance for each request (stateless mode)... This is perfect for simple use cases, but if you need session management, you'd want to store transports by session ID...",[16,1381,1382],{},"Check out the official MCP SDK docs for examples of both stateless and session-based implementations...",[26,1384,1386],{"id":1385},"understanding-mcp-capabilities","Understanding MCP Capabilities",[16,1388,1389],{},"Before we dive into building tools, let's talk about what MCP servers can actually do...",[16,1391,1392],{},"There are three main types of features you can implement:",[16,1394,1395,1398],{},[46,1396,1397],{},"Tools"," - These are like POST endpoints... They perform actions and can have side effects:",[75,1400,1402],{"className":134,"code":1401,"language":136,"meta":80,"style":80},"server.registerTool(\"send-email\",\n  {\n    title: \"Send Email\",\n    description: \"Send an email to someone\",\n    inputSchema: { \n      to: z.string().email(), \n      subject: z.string(), \n      body: z.string() \n    }\n  },\n  async ({ to, subject, body }) => {\n    await sendEmail(to, subject, body);\n    return {\n      content: [{ type: \"text\", text: `Email sent to ${to}` }]\n    };\n  }\n);\n",[82,1403,1404,1418,1423,1433,1443,1448,1465,1474,1484,1488,1493,1519,1529,1536,1555,1560,1564],{"__ignoreMap":80},[85,1405,1406,1409,1411,1413,1416],{"class":87,"line":88},[85,1407,1408],{"class":147},"server.",[85,1410,858],{"class":91},[85,1412,207],{"class":147},[85,1414,1415],{"class":95},"\"send-email\"",[85,1417,300],{"class":147},[85,1419,1420],{"class":87,"line":105},[85,1421,1422],{"class":147},"  {\n",[85,1424,1425,1428,1431],{"class":87,"line":112},[85,1426,1427],{"class":147},"    title: ",[85,1429,1430],{"class":95},"\"Send Email\"",[85,1432,300],{"class":147},[85,1434,1435,1438,1441],{"class":87,"line":188},[85,1436,1437],{"class":147},"    description: ",[85,1439,1440],{"class":95},"\"Send an email to someone\"",[85,1442,300],{"class":147},[85,1444,1445],{"class":87,"line":195},[85,1446,1447],{"class":147},"    inputSchema: { \n",[85,1449,1450,1453,1456,1459,1462],{"class":87,"line":229},[85,1451,1452],{"class":147},"      to: z.",[85,1454,1455],{"class":91},"string",[85,1457,1458],{"class":147},"().",[85,1460,1461],{"class":91},"email",[85,1463,1464],{"class":147},"(), \n",[85,1466,1467,1470,1472],{"class":87,"line":256},[85,1468,1469],{"class":147},"      subject: z.",[85,1471,1455],{"class":91},[85,1473,1464],{"class":147},[85,1475,1476,1479,1481],{"class":87,"line":291},[85,1477,1478],{"class":147},"      body: z.",[85,1480,1455],{"class":91},[85,1482,1483],{"class":147},"() \n",[85,1485,1486],{"class":87,"line":303},[85,1487,724],{"class":147},[85,1489,1490],{"class":87,"line":309},[85,1491,1492],{"class":147},"  },\n",[85,1494,1495,1498,1500,1503,1505,1508,1510,1513,1515,1517],{"class":87,"line":323},[85,1496,1497],{"class":143},"  async",[85,1499,925],{"class":147},[85,1501,1502],{"class":216},"to",[85,1504,241],{"class":147},[85,1506,1507],{"class":216},"subject",[85,1509,241],{"class":147},[85,1511,1512],{"class":216},"body",[85,1514,936],{"class":147},[85,1516,223],{"class":143},[85,1518,226],{"class":147},[85,1520,1521,1523,1526],{"class":87,"line":332},[85,1522,1247],{"class":143},[85,1524,1525],{"class":91}," sendEmail",[85,1527,1528],{"class":147},"(to, subject, body);\n",[85,1530,1531,1534],{"class":87,"line":338},[85,1532,1533],{"class":143},"    return",[85,1535,226],{"class":147},[85,1537,1538,1540,1542,1544,1547,1549,1552],{"class":87,"line":347},[85,1539,947],{"class":147},[85,1541,950],{"class":95},[85,1543,953],{"class":147},[85,1545,1546],{"class":95},"`Email sent to ${",[85,1548,1502],{"class":147},[85,1550,1551],{"class":95},"}`",[85,1553,1554],{"class":147}," }]\n",[85,1556,1557],{"class":87,"line":353},[85,1558,1559],{"class":147},"    };\n",[85,1561,1562],{"class":87,"line":359},[85,1563,356],{"class":147},[85,1565,1566],{"class":87,"line":364},[85,1567,1568],{"class":147},");\n",[16,1570,1571,1574],{},[46,1572,1573],{},"Resources"," - These are like GET endpoints... They provide data but shouldn't have side effects:",[75,1576,1578],{"className":134,"code":1577,"language":136,"meta":80,"style":80},"server.registerResource(\n  \"user-profile\",\n  new ResourceTemplate(\"users://{userId}/profile\", { list: undefined }),\n  {\n    title: \"User Profile\",\n    description: \"Get user profile information\"\n  },\n  async (uri, { userId }) => ({\n    contents: [{\n      uri: uri.href,\n      text: JSON.stringify(await getUserProfile(userId))\n    }]\n  })\n);\n",[82,1579,1580,1590,1597,1618,1622,1631,1638,1642,1663,1668,1673,1695,1700,1705],{"__ignoreMap":80},[85,1581,1582,1584,1587],{"class":87,"line":88},[85,1583,1408],{"class":147},[85,1585,1586],{"class":91},"registerResource",[85,1588,1589],{"class":147},"(\n",[85,1591,1592,1595],{"class":87,"line":105},[85,1593,1594],{"class":95},"  \"user-profile\"",[85,1596,300],{"class":147},[85,1598,1599,1602,1605,1607,1610,1613,1615],{"class":87,"line":112},[85,1600,1601],{"class":143},"  new",[85,1603,1604],{"class":91}," ResourceTemplate",[85,1606,207],{"class":147},[85,1608,1609],{"class":95},"\"users://{userId}/profile\"",[85,1611,1612],{"class":147},", { list: ",[85,1614,456],{"class":267},[85,1616,1617],{"class":147}," }),\n",[85,1619,1620],{"class":87,"line":188},[85,1621,1422],{"class":147},[85,1623,1624,1626,1629],{"class":87,"line":195},[85,1625,1427],{"class":147},[85,1627,1628],{"class":95},"\"User Profile\"",[85,1630,300],{"class":147},[85,1632,1633,1635],{"class":87,"line":229},[85,1634,1437],{"class":147},[85,1636,1637],{"class":95},"\"Get user profile information\"\n",[85,1639,1640],{"class":87,"line":256},[85,1641,1492],{"class":147},[85,1643,1644,1646,1648,1651,1654,1657,1659,1661],{"class":87,"line":291},[85,1645,1497],{"class":143},[85,1647,213],{"class":147},[85,1649,1650],{"class":216},"uri",[85,1652,1653],{"class":147},", { ",[85,1655,1656],{"class":216},"userId",[85,1658,936],{"class":147},[85,1660,223],{"class":143},[85,1662,941],{"class":147},[85,1664,1665],{"class":87,"line":303},[85,1666,1667],{"class":147},"    contents: [{\n",[85,1669,1670],{"class":87,"line":309},[85,1671,1672],{"class":147},"      uri: uri.href,\n",[85,1674,1675,1678,1680,1682,1684,1686,1689,1692],{"class":87,"line":323},[85,1676,1677],{"class":147},"      text: ",[85,1679,279],{"class":267},[85,1681,282],{"class":147},[85,1683,285],{"class":91},[85,1685,207],{"class":147},[85,1687,1688],{"class":143},"await",[85,1690,1691],{"class":91}," getUserProfile",[85,1693,1694],{"class":147},"(userId))\n",[85,1696,1697],{"class":87,"line":332},[85,1698,1699],{"class":147},"    }]\n",[85,1701,1702],{"class":87,"line":338},[85,1703,1704],{"class":147},"  })\n",[85,1706,1707],{"class":87,"line":347},[85,1708,1568],{"class":147},[16,1710,1711,1714],{},[46,1712,1713],{},"Prompts"," - These are reusable templates for AI interactions:",[75,1716,1718],{"className":134,"code":1717,"language":136,"meta":80,"style":80},"server.registerPrompt(\n  \"code-review\",\n  {\n    title: \"Code Review\",\n    description: \"Review code for best practices\",\n    argsSchema: { code: z.string() }\n  },\n  ({ code }) => ({\n    messages: [{\n      role: \"user\",\n      content: {\n        type: \"text\",\n        text: `Please review this code:\\n\\n${code}`\n      }\n    }]\n  })\n);\n",[82,1719,1720,1729,1736,1740,1749,1758,1767,1771,1784,1789,1799,1804,1813,1832,1836,1840,1844],{"__ignoreMap":80},[85,1721,1722,1724,1727],{"class":87,"line":88},[85,1723,1408],{"class":147},[85,1725,1726],{"class":91},"registerPrompt",[85,1728,1589],{"class":147},[85,1730,1731,1734],{"class":87,"line":105},[85,1732,1733],{"class":95},"  \"code-review\"",[85,1735,300],{"class":147},[85,1737,1738],{"class":87,"line":112},[85,1739,1422],{"class":147},[85,1741,1742,1744,1747],{"class":87,"line":188},[85,1743,1427],{"class":147},[85,1745,1746],{"class":95},"\"Code Review\"",[85,1748,300],{"class":147},[85,1750,1751,1753,1756],{"class":87,"line":195},[85,1752,1437],{"class":147},[85,1754,1755],{"class":95},"\"Review code for best practices\"",[85,1757,300],{"class":147},[85,1759,1760,1763,1765],{"class":87,"line":229},[85,1761,1762],{"class":147},"    argsSchema: { code: z.",[85,1764,1455],{"class":91},[85,1766,910],{"class":147},[85,1768,1769],{"class":87,"line":256},[85,1770,1492],{"class":147},[85,1772,1773,1776,1778,1780,1782],{"class":87,"line":291},[85,1774,1775],{"class":147},"  ({ ",[85,1777,82],{"class":216},[85,1779,936],{"class":147},[85,1781,223],{"class":143},[85,1783,941],{"class":147},[85,1785,1786],{"class":87,"line":303},[85,1787,1788],{"class":147},"    messages: [{\n",[85,1790,1791,1794,1797],{"class":87,"line":309},[85,1792,1793],{"class":147},"      role: ",[85,1795,1796],{"class":95},"\"user\"",[85,1798,300],{"class":147},[85,1800,1801],{"class":87,"line":323},[85,1802,1803],{"class":147},"      content: {\n",[85,1805,1806,1809,1811],{"class":87,"line":332},[85,1807,1808],{"class":147},"        type: ",[85,1810,950],{"class":95},[85,1812,300],{"class":147},[85,1814,1815,1818,1821,1824,1827,1829],{"class":87,"line":338},[85,1816,1817],{"class":147},"        text: ",[85,1819,1820],{"class":95},"`Please review this code:",[85,1822,1823],{"class":267},"\\n\\n",[85,1825,1826],{"class":95},"${",[85,1828,82],{"class":147},[85,1830,1831],{"class":95},"}`\n",[85,1833,1834],{"class":87,"line":347},[85,1835,718],{"class":147},[85,1837,1838],{"class":87,"line":353},[85,1839,1699],{"class":147},[85,1841,1842],{"class":87,"line":359},[85,1843,1704],{"class":147},[85,1845,1846],{"class":87,"line":364},[85,1847,1568],{"class":147},[16,1849,1850],{},"Pretty powerful stuff, right?",[26,1852,1854],{"id":1853},"building-useful-tools","Building Useful Tools",[16,1856,1857],{},"The addition example is cute, but let's be real... You probably want to build something more useful...",[16,1859,1860],{},"Here are some ideas that actually make sense:",[16,1862,1863],{},[46,1864,1865],{},"Database Queries",[75,1867,1869],{"className":134,"code":1868,"language":136,"meta":80,"style":80},"server.registerTool(\"query_users\",\n  {\n    title: \"Query Users\",\n    description: \"Search for users in the database\",\n    inputSchema: { query: z.string(), limit: z.number().optional() }\n  },\n  async ({ query, limit = 10 }) => {\n    const users = await db.user.findMany({\n      where: { name: { contains: query } },\n      take: limit\n    });\n    return { content: [{ type: \"text\", text: JSON.stringify(users) }] };\n  }\n)\n",[82,1870,1871,1884,1888,1897,1906,1925,1929,1954,1973,1978,1983,1987,2007,2011],{"__ignoreMap":80},[85,1872,1873,1875,1877,1879,1882],{"class":87,"line":88},[85,1874,1408],{"class":147},[85,1876,858],{"class":91},[85,1878,207],{"class":147},[85,1880,1881],{"class":95},"\"query_users\"",[85,1883,300],{"class":147},[85,1885,1886],{"class":87,"line":105},[85,1887,1422],{"class":147},[85,1889,1890,1892,1895],{"class":87,"line":112},[85,1891,1427],{"class":147},[85,1893,1894],{"class":95},"\"Query Users\"",[85,1896,300],{"class":147},[85,1898,1899,1901,1904],{"class":87,"line":188},[85,1900,1437],{"class":147},[85,1902,1903],{"class":95},"\"Search for users in the database\"",[85,1905,300],{"class":147},[85,1907,1908,1911,1913,1916,1918,1920,1923],{"class":87,"line":195},[85,1909,1910],{"class":147},"    inputSchema: { query: z.",[85,1912,1455],{"class":91},[85,1914,1915],{"class":147},"(), limit: z.",[85,1917,902],{"class":91},[85,1919,1458],{"class":147},[85,1921,1922],{"class":91},"optional",[85,1924,910],{"class":147},[85,1926,1927],{"class":87,"line":229},[85,1928,1492],{"class":147},[85,1930,1931,1933,1935,1938,1940,1943,1945,1948,1950,1952],{"class":87,"line":256},[85,1932,1497],{"class":143},[85,1934,925],{"class":147},[85,1936,1937],{"class":216},"query",[85,1939,241],{"class":147},[85,1941,1942],{"class":216},"limit",[85,1944,390],{"class":143},[85,1946,1947],{"class":267}," 10",[85,1949,936],{"class":147},[85,1951,223],{"class":143},[85,1953,226],{"class":147},[85,1955,1956,1958,1961,1963,1965,1968,1971],{"class":87,"line":291},[85,1957,384],{"class":143},[85,1959,1960],{"class":267}," users",[85,1962,390],{"class":143},[85,1964,393],{"class":143},[85,1966,1967],{"class":147}," db.user.",[85,1969,1970],{"class":91},"findMany",[85,1972,288],{"class":147},[85,1974,1975],{"class":87,"line":303},[85,1976,1977],{"class":147},"      where: { name: { contains: query } },\n",[85,1979,1980],{"class":87,"line":309},[85,1981,1982],{"class":147},"      take: limit\n",[85,1984,1985],{"class":87,"line":323},[85,1986,1194],{"class":147},[85,1988,1989,1991,1994,1996,1998,2000,2002,2004],{"class":87,"line":332},[85,1990,1533],{"class":143},[85,1992,1993],{"class":147}," { content: [{ type: ",[85,1995,950],{"class":95},[85,1997,953],{"class":147},[85,1999,279],{"class":267},[85,2001,282],{"class":147},[85,2003,285],{"class":91},[85,2005,2006],{"class":147},"(users) }] };\n",[85,2008,2009],{"class":87,"line":338},[85,2010,356],{"class":147},[85,2012,2013],{"class":87,"line":347},[85,2014,508],{"class":147},[16,2016,2017],{},[46,2018,2019],{},"API Integrations",[75,2021,2023],{"className":134,"code":2022,"language":136,"meta":80,"style":80},"server.registerTool(\"get_weather\",\n  {\n    title: \"Get Weather\",\n    description: \"Get current weather for a location\",\n    inputSchema: { location: z.string() }\n  },\n  async ({ location }) => {\n    const weather = await fetch(`https://api.weather.com/v1/current?location=${location}`);\n    const data = await weather.json();\n    return { content: [{ type: \"text\", text: JSON.stringify(data) }] };\n  }\n)\n",[82,2024,2025,2038,2042,2051,2060,2069,2073,2088,2113,2131,2150,2154],{"__ignoreMap":80},[85,2026,2027,2029,2031,2033,2036],{"class":87,"line":88},[85,2028,1408],{"class":147},[85,2030,858],{"class":91},[85,2032,207],{"class":147},[85,2034,2035],{"class":95},"\"get_weather\"",[85,2037,300],{"class":147},[85,2039,2040],{"class":87,"line":105},[85,2041,1422],{"class":147},[85,2043,2044,2046,2049],{"class":87,"line":112},[85,2045,1427],{"class":147},[85,2047,2048],{"class":95},"\"Get Weather\"",[85,2050,300],{"class":147},[85,2052,2053,2055,2058],{"class":87,"line":188},[85,2054,1437],{"class":147},[85,2056,2057],{"class":95},"\"Get current weather for a location\"",[85,2059,300],{"class":147},[85,2061,2062,2065,2067],{"class":87,"line":195},[85,2063,2064],{"class":147},"    inputSchema: { location: z.",[85,2066,1455],{"class":91},[85,2068,910],{"class":147},[85,2070,2071],{"class":87,"line":229},[85,2072,1492],{"class":147},[85,2074,2075,2077,2079,2082,2084,2086],{"class":87,"line":256},[85,2076,1497],{"class":143},[85,2078,925],{"class":147},[85,2080,2081],{"class":216},"location",[85,2083,936],{"class":147},[85,2085,223],{"class":143},[85,2087,226],{"class":147},[85,2089,2090,2092,2095,2097,2099,2102,2104,2107,2109,2111],{"class":87,"line":291},[85,2091,384],{"class":143},[85,2093,2094],{"class":267}," weather",[85,2096,390],{"class":143},[85,2098,393],{"class":143},[85,2100,2101],{"class":91}," fetch",[85,2103,207],{"class":147},[85,2105,2106],{"class":95},"`https://api.weather.com/v1/current?location=${",[85,2108,2081],{"class":147},[85,2110,1551],{"class":95},[85,2112,1568],{"class":147},[85,2114,2115,2117,2120,2122,2124,2127,2129],{"class":87,"line":303},[85,2116,384],{"class":143},[85,2118,2119],{"class":267}," data",[85,2121,390],{"class":143},[85,2123,393],{"class":143},[85,2125,2126],{"class":147}," weather.",[85,2128,1108],{"class":91},[85,2130,1094],{"class":147},[85,2132,2133,2135,2137,2139,2141,2143,2145,2147],{"class":87,"line":309},[85,2134,1533],{"class":143},[85,2136,1993],{"class":147},[85,2138,950],{"class":95},[85,2140,953],{"class":147},[85,2142,279],{"class":267},[85,2144,282],{"class":147},[85,2146,285],{"class":91},[85,2148,2149],{"class":147},"(data) }] };\n",[85,2151,2152],{"class":87,"line":323},[85,2153,356],{"class":147},[85,2155,2156],{"class":87,"line":332},[85,2157,508],{"class":147},[16,2159,2160],{},[46,2161,2162],{},"File Operations",[75,2164,2166],{"className":134,"code":2165,"language":136,"meta":80,"style":80},"server.registerTool(\"read_file\",\n  {\n    title: \"Read File\",\n    description: \"Read contents of a file\",\n    inputSchema: { path: z.string() }\n  },\n  async ({ path }) => {\n    const content = await fs.readFile(path, 'utf-8');\n    return { content: [{ type: \"text\", text: content }] };\n  }\n)\n)\n",[82,2167,2168,2181,2185,2194,2203,2212,2216,2231,2256,2267,2271,2275],{"__ignoreMap":80},[85,2169,2170,2172,2174,2176,2179],{"class":87,"line":88},[85,2171,1408],{"class":147},[85,2173,858],{"class":91},[85,2175,207],{"class":147},[85,2177,2178],{"class":95},"\"read_file\"",[85,2180,300],{"class":147},[85,2182,2183],{"class":87,"line":105},[85,2184,1422],{"class":147},[85,2186,2187,2189,2192],{"class":87,"line":112},[85,2188,1427],{"class":147},[85,2190,2191],{"class":95},"\"Read File\"",[85,2193,300],{"class":147},[85,2195,2196,2198,2201],{"class":87,"line":188},[85,2197,1437],{"class":147},[85,2199,2200],{"class":95},"\"Read contents of a file\"",[85,2202,300],{"class":147},[85,2204,2205,2208,2210],{"class":87,"line":195},[85,2206,2207],{"class":147},"    inputSchema: { path: z.",[85,2209,1455],{"class":91},[85,2211,910],{"class":147},[85,2213,2214],{"class":87,"line":229},[85,2215,1492],{"class":147},[85,2217,2218,2220,2222,2225,2227,2229],{"class":87,"line":256},[85,2219,1497],{"class":143},[85,2221,925],{"class":147},[85,2223,2224],{"class":216},"path",[85,2226,936],{"class":147},[85,2228,223],{"class":143},[85,2230,226],{"class":147},[85,2232,2233,2235,2238,2240,2242,2245,2248,2251,2254],{"class":87,"line":291},[85,2234,384],{"class":143},[85,2236,2237],{"class":267}," content",[85,2239,390],{"class":143},[85,2241,393],{"class":143},[85,2243,2244],{"class":147}," fs.",[85,2246,2247],{"class":91},"readFile",[85,2249,2250],{"class":147},"(path, ",[85,2252,2253],{"class":95},"'utf-8'",[85,2255,1568],{"class":147},[85,2257,2258,2260,2262,2264],{"class":87,"line":303},[85,2259,1533],{"class":143},[85,2261,1993],{"class":147},[85,2263,950],{"class":95},[85,2265,2266],{"class":147},", text: content }] };\n",[85,2268,2269],{"class":87,"line":309},[85,2270,356],{"class":147},[85,2272,2273],{"class":87,"line":323},[85,2274,508],{"class":147},[85,2276,2277],{"class":87,"line":332},[85,2278,508],{"class":147},[16,2280,2281],{},"The possibilities are honestly endless...",[26,2283,2285],{"id":2284},"deployment-made-easy","Deployment Made Easy",[16,2287,2288],{},"Since this is just HTTP, you can deploy it literally anywhere...",[16,2290,2291,2294,2295,2298,2299,2302],{},[46,2292,2293],{},"Vercel/Netlify",": Perfect for simple tools and integrations\n",[46,2296,2297],{},"Railway/Render",": Great for more complex servers with databases\n",[46,2300,2301],{},"Your own VPS",": Full control, do whatever you want",[16,2304,2305],{},"Just make sure your endpoint is publicly accessible so Claude can reach it...",[26,2307,2309],{"id":2308},"testing-your-mcp-server","Testing Your MCP Server",[16,2311,2312],{},"There are a few ways to test your MCP server...",[16,2314,2315,2318],{},[46,2316,2317],{},"Option 1: MCP Inspector (Recommended)","\nThe easiest way is using the official MCP Inspector:",[75,2320,2322],{"className":77,"code":2321,"language":79,"meta":80,"style":80},"npx @modelcontextprotocol/inspector http://localhost:3000/routes/mcp\n",[82,2323,2324],{"__ignoreMap":80},[85,2325,2326,2329,2332],{"class":87,"line":88},[85,2327,2328],{"class":91},"npx",[85,2330,2331],{"class":95}," @modelcontextprotocol/inspector",[85,2333,2334],{"class":95}," http://localhost:3000/routes/mcp\n",[16,2336,2337],{},"This gives you a nice web interface to test all your tools, resources, and prompts...",[16,2339,2340,2343],{},[46,2341,2342],{},"Option 2: Manual Testing","\nYou can also test with curl if you want to go old school:",[75,2345,2347],{"className":77,"code":2346,"language":79,"meta":80,"style":80},"curl -X POST http://localhost:3000/routes/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"tools/call\",\n    \"params\": {\n      \"name\": \"add\",\n      \"arguments\": { \"a\": 5, \"b\": 3 }\n    },\n    \"id\": 1\n  }'\n",[82,2348,2349,2366,2376,2384,2389,2394,2399,2404,2409,2413,2418],{"__ignoreMap":80},[85,2350,2351,2354,2357,2360,2363],{"class":87,"line":88},[85,2352,2353],{"class":91},"curl",[85,2355,2356],{"class":267}," -X",[85,2358,2359],{"class":95}," POST",[85,2361,2362],{"class":95}," http://localhost:3000/routes/mcp",[85,2364,2365],{"class":267}," \\\n",[85,2367,2368,2371,2374],{"class":87,"line":105},[85,2369,2370],{"class":267},"  -H",[85,2372,2373],{"class":95}," \"Content-Type: application/json\"",[85,2375,2365],{"class":267},[85,2377,2378,2381],{"class":87,"line":112},[85,2379,2380],{"class":267},"  -d",[85,2382,2383],{"class":95}," '{\n",[85,2385,2386],{"class":87,"line":188},[85,2387,2388],{"class":95},"    \"jsonrpc\": \"2.0\",\n",[85,2390,2391],{"class":87,"line":195},[85,2392,2393],{"class":95},"    \"method\": \"tools/call\",\n",[85,2395,2396],{"class":87,"line":229},[85,2397,2398],{"class":95},"    \"params\": {\n",[85,2400,2401],{"class":87,"line":256},[85,2402,2403],{"class":95},"      \"name\": \"add\",\n",[85,2405,2406],{"class":87,"line":291},[85,2407,2408],{"class":95},"      \"arguments\": { \"a\": 5, \"b\": 3 }\n",[85,2410,2411],{"class":87,"line":303},[85,2412,916],{"class":95},[85,2414,2415],{"class":87,"line":309},[85,2416,2417],{"class":95},"    \"id\": 1\n",[85,2419,2420],{"class":87,"line":323},[85,2421,2422],{"class":95},"  }'\n",[16,2424,2425,2428],{},[46,2426,2427],{},"Option 3: Connect to Claude Desktop","\nOnce your server is running, you can add it to Claude Desktop's configuration and test it in real conversations...",[16,2430,2431,2434],{},[46,2432,2433],{},"Option 4: Connect to Cursor","\nIf you're using Cursor (the AI code editor), you can add your server to the MCP settings...",[16,2436,2437],{},"Open Cursor Settings and add this to your MCP configuration:",[75,2439,2442],{"className":2440,"code":2441,"language":1108,"meta":80,"style":80},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"your-mcp-server-name\": {\n      \"type\": \"http\",\n      \"url\": \"http://localhost:3000/routes/mcp\"\n    }\n  }\n}\n",[82,2443,2444,2449,2457,2464,2477,2487,2491,2495],{"__ignoreMap":80},[85,2445,2446],{"class":87,"line":88},[85,2447,2448],{"class":147},"{\n",[85,2450,2451,2454],{"class":87,"line":105},[85,2452,2453],{"class":267},"  \"mcpServers\"",[85,2455,2456],{"class":147},": {\n",[85,2458,2459,2462],{"class":87,"line":112},[85,2460,2461],{"class":267},"    \"your-mcp-server-name\"",[85,2463,2456],{"class":147},[85,2465,2466,2469,2472,2475],{"class":87,"line":188},[85,2467,2468],{"class":267},"      \"type\"",[85,2470,2471],{"class":147},": ",[85,2473,2474],{"class":95},"\"http\"",[85,2476,300],{"class":147},[85,2478,2479,2482,2484],{"class":87,"line":195},[85,2480,2481],{"class":267},"      \"url\"",[85,2483,2471],{"class":147},[85,2485,2486],{"class":95},"\"http://localhost:3000/routes/mcp\"\n",[85,2488,2489],{"class":87,"line":229},[85,2490,724],{"class":147},[85,2492,2493],{"class":87,"line":256},[85,2494,356],{"class":147},[85,2496,2497],{"class":87,"line":291},[85,2498,996],{"class":147},[16,2500,2501],{},"Then just let that connect, and your MCP server will be available for AI interactions...",[26,2503,2505],{"id":2504},"whats-next","What's Next?",[16,2507,2508],{},"This is just the beginning...",[16,2510,2511],{},"You could build MCP servers for pretty much anything:",[40,2513,2514,2517,2520,2523,2526],{},[43,2515,2516],{},"Custom analytics dashboards",[43,2518,2519],{},"Internal company tools",[43,2521,2522],{},"Database management",[43,2524,2525],{},"File system operations",[43,2527,2528],{},"Third-party API integrations",[16,2530,2531],{},"The cool thing is that once you build it, Claude can use it naturally in conversation...",[16,2533,2534],{},"Want to see more advanced examples? I'm thinking about open-sourcing some of the MCP servers we use at Pogton... Would that be useful?",[16,2536,2537],{},"Let me know what kind of tools you'd want to build with this...",[2539,2540,2541],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":80,"searchDepth":105,"depth":105,"links":2543},[2544,2545,2546,2547,2548,2549,2550,2551,2552,2553],{"id":28,"depth":105,"text":29},{"id":66,"depth":105,"text":67},{"id":127,"depth":105,"text":128},{"id":1002,"depth":105,"text":1003},{"id":1044,"depth":105,"text":1045},{"id":1385,"depth":105,"text":1386},{"id":1853,"depth":105,"text":1854},{"id":2284,"depth":105,"text":2285},{"id":2308,"depth":105,"text":2309},{"id":2504,"depth":105,"text":2505},"Want to create custom tools for Claude? Here's how to build your own Model Context Protocol server with TypeScript and deploy it anywhere...","md","/images/blog/mcp-server-typescript.jpg",{"category":2558,"featured":191,"readTime":2559},"Development","8 min","/blog/build-your-own-mcp-server-typescript","2025-07-22",{"keywords":2563,"title":6,"description":2554},[2564,2565,2566,2567,2568,2569,2570],"MCP server","Model Context Protocol","TypeScript","Claude AI","Nitro","Express","AI tools","blog/build-your-own-mcp-server-typescript",[2573,2566,48,2574,2558,2568,2569],"MCP","AI","5xv7tji_f6HRmFwRG7yZ1PxguLy-gXwo9SL0IJvY8AA",{"id":2577,"title":2578,"author":7,"body":2579,"description":2744,"extension":2555,"image":2745,"meta":2746,"navigation":191,"path":2749,"publishedAt":2750,"seo":2751,"stem":2758,"tags":2759,"__hash__":2762},"blog/blog/cursor-the-ai-editor-changing-everything.md","Cursor: The AI Editor That's Actually Changing Everything",{"type":9,"value":2580,"toc":2733},[2581,2584,2587,2590,2593,2597,2600,2603,2606,2610,2613,2616,2619,2623,2626,2629,2632,2636,2639,2642,2645,2649,2652,2655,2658,2661,2665,2668,2671,2674,2678,2681,2684,2687,2690,2694,2697,2700,2703,2707,2710,2713,2716,2719,2722],[12,2582,2578],{"id":2583},"cursor-the-ai-editor-thats-actually-changing-everything",[16,2585,2586],{},"Have you tried coding with Cursor yet?",[16,2588,2589],{},"I'm not gonna lie, I was pretty skeptical at first... Another AI coding tool, right?",[16,2591,2592],{},"But after using it for a few weeks now, I'm genuinely hyped about what this thing can do...",[26,2594,2596],{"id":2595},"what-makes-cursor-different","What Makes Cursor Different",[16,2598,2599],{},"Imagine having a coding buddy who actually knows what you're thinking before you even type it...",[16,2601,2602],{},"That's basically what Cursor feels like... It's built on top of VS Code, so everything feels familiar, but then it just predicts your next move perfectly..",[16,2604,2605],{},"The autocompletion is honestly kinda scary good...",[26,2607,2609],{"id":2608},"why-im-obsessed-with-it","Why I'm Obsessed With It",[16,2611,2612],{},"You know how annoying it is to write unit tests, right?",[16,2614,2615],{},"Well, Cursor just... does it for you... I'm not even joking, it writes better tests than I do sometimes...",[16,2617,2618],{},"And the best part? It feels natural, not like you're fighting some clunky AI assistant...",[26,2620,2622],{"id":2621},"the-real-magic-happens-here","The Real Magic Happens Here",[16,2624,2625],{},"Here's where it gets really nice...",[16,2627,2628],{},"You can actually talk to it in plain English right inside your editor... Like, \"hey, can you refactor this function to use async/await?\" and it just does it...",[16,2630,2631],{},"No more copying code to ChatGPT and pasting it back... Everything happens right where you're already working...",[26,2633,2635],{"id":2634},"but-lets-be-real-about-the-downsides","But Let's Be Real About The Downsides",[16,2637,2638],{},"It's not perfect though...",[16,2640,2641],{},"When your codebase gets really big, the AI sometimes gets a bit... confused... It starts suggesting random stuff that doesn't really make sense...",[16,2643,2644],{},"And if you're someone who wants to understand every single line of code you write, this might drive you crazy...",[26,2646,2648],{"id":2647},"perfect-for-side-projects","Perfect For Side Projects",[16,2650,2651],{},"This is where Cursor really shines...",[16,2653,2654],{},"Building prototypes and side projects has become so much faster... I can go from idea to working code in like half the time...",[16,2656,2657],{},"The AI just fills in all the boring boilerplate stuff while I focus on the interesting parts...",[16,2659,2660],{},"Wouldn't that be nice for your next project?",[26,2662,2664],{"id":2663},"custom-rules-are-game-changing","Custom Rules Are Game Changing",[16,2666,2667],{},"Here's something cool that most people don't know about...",[16,2669,2670],{},"You can teach Cursor your team's coding style... So instead of getting generic suggestions, it learns how YOU like to write code...",[16,2672,2673],{},"This is huge for teams because everyone stays consistent without thinking about it...",[26,2675,2677],{"id":2676},"my-honest-take","My Honest Take",[16,2679,2680],{},"Look, I've tried pretty much every AI coding tool out there...",[16,2682,2683],{},"Cursor just feels different... It's not trying to replace you as a developer, it's trying to make you better at what you already do...",[16,2685,2686],{},"And the fact that it's basically VS Code under the hood means there's zero learning curve...",[16,2688,2689],{},"Have you been thinking about trying it?",[26,2691,2693],{"id":2692},"the-future-feels-pretty-awesome","The Future Feels Pretty Awesome",[16,2695,2696],{},"I think we're just scratching the surface of what AI can do for developers...",[16,2698,2699],{},"Cursor is showing us what's possible when AI actually integrates seamlessly into our workflow instead of being this separate thing we have to deal with...",[16,2701,2702],{},"It's making me excited about coding again in a way I haven't felt in a while...",[26,2704,2706],{"id":2705},"should-you-try-it","Should You Try It?",[16,2708,2709],{},"If you're building anything right now, especially side projects or prototypes, you should definitely give it a shot...",[16,2711,2712],{},"The productivity boost is real, and since it's free to try, you've got nothing to lose...",[16,2714,2715],{},"Just don't blame me when you can't go back to regular VS Code...",[16,2717,2718],{},"What's your current coding setup looking like? Are you curious about trying Cursor or are you sticking with what works?",[2720,2721],"hr",{},[16,2723,2724],{},[2725,2726,2727,2728,2732],"em",{},"Building something cool with AI tools? I'd love to hear about it... ",[928,2729,2731],{"href":2730},"/contact","Let's connect"," and talk about the future of development...",{"title":80,"searchDepth":105,"depth":105,"links":2734},[2735,2736,2737,2738,2739,2740,2741,2742,2743],{"id":2595,"depth":105,"text":2596},{"id":2608,"depth":105,"text":2609},{"id":2621,"depth":105,"text":2622},{"id":2634,"depth":105,"text":2635},{"id":2647,"depth":105,"text":2648},{"id":2663,"depth":105,"text":2664},{"id":2676,"depth":105,"text":2677},{"id":2692,"depth":105,"text":2693},{"id":2705,"depth":105,"text":2706},"Have you tried coding with Cursor yet? This AI editor is making me rethink everything about how we write code...","/images/blog/cursor-ai-editor.jpg",{"category":2747,"featured":191,"readTime":2748},"Development Tools","4 min","/blog/cursor-the-ai-editor-changing-everything","2025-06-09",{"keywords":2752,"title":2578,"description":2744},[2753,2754,2755,2756,2757],"Cursor AI editor","AI coding tools","VS Code alternative","AI development","coding productivity","blog/cursor-the-ai-editor-changing-everything",[54,2574,2558,2760,2761],"Productivity","VS Code","xGEHuZU2bquineYGrUU1JdFEGrFfORwK9QyBbv10ufU",{"id":2764,"title":2765,"author":7,"body":2766,"description":3101,"extension":2555,"image":3102,"meta":3103,"navigation":191,"path":3105,"publishedAt":3106,"seo":3107,"stem":3114,"tags":3115,"__hash__":3119},"blog/blog/revolutionizing-ai-investment-strategies.md","Revolutionizing AI Investment Strategies: The Future of Tech Investing",{"type":9,"value":2767,"toc":3081},[2768,2771,2774,2778,2781,2801,2806,2809,2851,2855,2858,2862,2882,2886,2906,2910,2930,2934,2937,2943,2949,2955,2961,2965,2968,2972,2975,2979,2982,2986,2989,2993,2996,3000,3003,3009,3015,3021,3027,3031,3034,3060,3064,3067,3070,3072],[12,2769,2765],{"id":2770},"revolutionizing-ai-investment-strategies-the-future-of-tech-investing",[16,2772,2773],{},"The artificial intelligence revolution isn't just transforming how we work, create, and solve problems, it's fundamentally reshaping the investment landscape. As someone who's been navigating the technology investment space through Pogton, I've witnessed firsthand how AI is creating unprecedented opportunities and challenges for investors.",[26,2775,2777],{"id":2776},"the-ai-investment-paradigm-shift","The AI Investment Paradigm Shift",[16,2779,2780],{},"Traditional investment strategies often relied on historical data patterns and human intuition. Today, AI is enabling a new paradigm where:",[40,2782,2783,2789,2795],{},[43,2784,2785,2788],{},[46,2786,2787],{},"Predictive Analytics"," help identify market trends before they become apparent",[43,2790,2791,2794],{},[46,2792,2793],{},"Real-time Processing"," allows for instantaneous portfolio adjustments",[43,2796,2797,2800],{},[46,2798,2799],{},"Pattern Recognition"," uncovers investment opportunities humans might miss",[2802,2803,2805],"h3",{"id":2804},"key-investment-areas-in-ai","Key Investment Areas in AI",[16,2807,2808],{},"Based on our analysis at Pogton, these sectors show the most promise:",[2810,2811,2812,2825,2838],"ol",{},[43,2813,2814,2817],{},[46,2815,2816],{},"Natural Language Processing (NLP)",[40,2818,2819,2822],{},[43,2820,2821],{},"Companies like our portfolio investment, oriiion, are pushing boundaries",[43,2823,2824],{},"Market size expected to reach $112 billion by 2030",[43,2826,2827,2830],{},[46,2828,2829],{},"Computer Vision",[40,2831,2832,2835],{},[43,2833,2834],{},"Applications in healthcare, autonomous vehicles, and security",[43,2836,2837],{},"Growing at 8.1% CAGR through 2030",[43,2839,2840,2843],{},[46,2841,2842],{},"Machine Learning Infrastructure",[40,2844,2845,2848],{},[43,2846,2847],{},"The picks and shovels of the AI gold rush",[43,2849,2850],{},"Essential for any AI implementation",[26,2852,2854],{"id":2853},"strategic-investment-framework","Strategic Investment Framework",[16,2856,2857],{},"At Pogton, we've developed a framework for evaluating AI investments:",[2802,2859,2861],{"id":2860},"technology-assessment","Technology Assessment",[40,2863,2864,2870,2876],{},[43,2865,2866,2869],{},[46,2867,2868],{},"Innovation Depth",": How novel is the underlying technology?",[43,2871,2872,2875],{},[46,2873,2874],{},"Scalability",": Can the solution handle exponential growth?",[43,2877,2878,2881],{},[46,2879,2880],{},"Market Readiness",": Is the market prepared for adoption?",[2802,2883,2885],{"id":2884},"team-evaluation","Team Evaluation",[40,2887,2888,2894,2900],{},[43,2889,2890,2893],{},[46,2891,2892],{},"Technical Expertise",": Deep understanding of AI/ML",[43,2895,2896,2899],{},[46,2897,2898],{},"Execution Capability",": Proven track record of delivery",[43,2901,2902,2905],{},[46,2903,2904],{},"Vision Alignment",": Long-term thinking about AI's potential",[2802,2907,2909],{"id":2908},"market-dynamics","Market Dynamics",[40,2911,2912,2918,2924],{},[43,2913,2914,2917],{},[46,2915,2916],{},"Total Addressable Market (TAM)",": Size and growth potential",[43,2919,2920,2923],{},[46,2921,2922],{},"Competitive Landscape",": Barriers to entry and differentiation",[43,2925,2926,2929],{},[46,2927,2928],{},"Regulatory Environment",": Compliance and policy considerations",[26,2931,2933],{"id":2932},"case-study-oriiion-investment","Case Study: oriiion Investment",[16,2935,2936],{},"Our investment in oriiion exemplifies this strategic approach:",[16,2938,2939,2942],{},[46,2940,2941],{},"Technology Innovation",": Breakthrough natural language processing capabilities that enable unprecedented scale and accuracy in data interaction.",[16,2944,2945,2948],{},[46,2946,2947],{},"Market Opportunity",": Addressing the $50+ billion market for enterprise data analytics with a revolutionary approach.",[16,2950,2951,2954],{},[46,2952,2953],{},"Team Excellence",": Founded by AI researchers with proven track records from leading tech companies.",[16,2956,2957,2960],{},[46,2958,2959],{},"Results",": 340% year-over-year growth, demonstrating the power of strategic AI investment.",[26,2962,2964],{"id":2963},"future-investment-themes","Future Investment Themes",[16,2966,2967],{},"Looking ahead, these themes will drive our investment strategy:",[2802,2969,2971],{"id":2970},"_1-ai-democratization","1. AI Democratization",[16,2973,2974],{},"Tools that make AI accessible to non-technical users will capture significant market share.",[2802,2976,2978],{"id":2977},"_2-ethical-ai-solutions","2. Ethical AI Solutions",[16,2980,2981],{},"Companies building responsible AI with built-in bias detection and fairness measures.",[2802,2983,2985],{"id":2984},"_3-ai-native-applications","3. AI-Native Applications",[16,2987,2988],{},"Applications designed from the ground up to leverage AI, rather than retrofitting existing solutions.",[2802,2990,2992],{"id":2991},"_4-edge-ai-computing","4. Edge AI Computing",[16,2994,2995],{},"Bringing AI processing closer to data sources for reduced latency and improved privacy.",[26,2997,2999],{"id":2998},"investment-best-practices","Investment Best Practices",[16,3001,3002],{},"Based on our experience, here are key principles for AI investing:",[16,3004,3005,3008],{},[46,3006,3007],{},"Diversification Across AI Segments",": Don't put all resources into one type of AI technology.",[16,3010,3011,3014],{},[46,3012,3013],{},"Technical Due Diligence",": Understand the underlying technology and its limitations.",[16,3016,3017,3020],{},[46,3018,3019],{},"Market Timing",": Consider adoption curves and market readiness.",[16,3022,3023,3026],{},[46,3024,3025],{},"Regulatory Awareness",": Stay informed about AI governance and compliance requirements.",[26,3028,3030],{"id":3029},"the-road-ahead","The Road Ahead",[16,3032,3033],{},"The AI investment landscape will continue evolving rapidly. Success requires:",[40,3035,3036,3042,3048,3054],{},[43,3037,3038,3041],{},[46,3039,3040],{},"Continuous Learning",": Staying updated with technological advances",[43,3043,3044,3047],{},[46,3045,3046],{},"Network Building",": Connecting with AI researchers and entrepreneurs",[43,3049,3050,3053],{},[46,3051,3052],{},"Patient Capital",": Understanding that revolutionary technologies take time",[43,3055,3056,3059],{},[46,3057,3058],{},"Strategic Thinking",": Looking beyond current hype to long-term potential",[26,3061,3063],{"id":3062},"conclusion","Conclusion",[16,3065,3066],{},"AI isn't just another technology trend, it's a fundamental shift that will impact every industry. For investors willing to understand the technology, evaluate opportunities strategically, and think long-term, the potential rewards are unprecedented.",[16,3068,3069],{},"At Pogton, we're committed to identifying and nurturing the next generation of AI companies that will shape our future. The revolution is just beginning.",[2720,3071],{},[16,3073,3074],{},[2725,3075,3076,3077,3080],{},"Interested in learning more about our AI investment strategy? ",[928,3078,3079],{"href":2730},"Connect with us"," to explore partnership opportunities.",{"title":80,"searchDepth":105,"depth":105,"links":3082},[3083,3086,3091,3092,3098,3099,3100],{"id":2776,"depth":105,"text":2777,"children":3084},[3085],{"id":2804,"depth":112,"text":2805},{"id":2853,"depth":105,"text":2854,"children":3087},[3088,3089,3090],{"id":2860,"depth":112,"text":2861},{"id":2884,"depth":112,"text":2885},{"id":2908,"depth":112,"text":2909},{"id":2932,"depth":105,"text":2933},{"id":2963,"depth":105,"text":2964,"children":3093},[3094,3095,3096,3097],{"id":2970,"depth":112,"text":2971},{"id":2977,"depth":112,"text":2978},{"id":2984,"depth":112,"text":2985},{"id":2991,"depth":112,"text":2992},{"id":2998,"depth":105,"text":2999},{"id":3029,"depth":105,"text":3030},{"id":3062,"depth":105,"text":3063},"Exploring how artificial intelligence is transforming investment strategies and creating unprecedented opportunities in the technology sector.","/images/blog/ai-investment-strategies.jpg",{"category":3104,"featured":191,"readTime":2559},"AI Investment","/blog/revolutionizing-ai-investment-strategies","2024-12-20",{"keywords":3108,"title":2765,"description":3101},[3109,3110,3111,3112,3113],"AI investment","technology investing","artificial intelligence","venture capital","tech strategies","blog/revolutionizing-ai-investment-strategies",[2574,3116,3117,3118],"Investment","Technology","Strategy","woPznm3YV-LOjGEPi75K6FGI0gtZ7L8tPfl8iNThq1U",{"id":3121,"title":3122,"author":7,"body":3123,"description":3825,"extension":2555,"image":3826,"meta":3827,"navigation":191,"path":3830,"publishedAt":3831,"seo":3832,"stem":3838,"tags":3839,"__hash__":3841},"blog/blog/cursor-ai-development-revolution.md","Cursor: How AI is Revolutionizing Software Development",{"type":9,"value":3124,"toc":3789},[3125,3128,3131,3135,3142,3144,3147,3153,3159,3165,3171,3175,3178,3182,3193,3197,3208,3212,3223,3227,3230,3236,3242,3248,3252,3256,3259,3263,3573,3577,3580,3594,3598,3601,3615,3619,3622,3626,3637,3641,3652,3656,3667,3671,3674,3678,3681,3685,3688,3692,3695,3699,3702,3706,3709,3715,3721,3727,3733,3737,3741,3744,3748,3751,3755,3758,3762,3765,3767,3770,3773,3776,3778,3786],[12,3126,3122],{"id":3127},"cursor-how-ai-is-revolutionizing-software-development",[16,3129,3130],{},"The software development landscape is experiencing a seismic shift. Tools like Cursor are not just enhancing how we write code, they're fundamentally changing what it means to be a developer. As someone who's built multiple technology companies and witnessed the evolution of development tools firsthand, I can confidently say we're at an inflection point.",[26,3132,3134],{"id":3133},"the-dawn-of-ai-assisted-development","The Dawn of AI-Assisted Development",[16,3136,3137,3138,3141],{},"Traditional IDEs gave us syntax highlighting, autocomplete, and debugging tools. Today's AI-powered editors like Cursor are offering something entirely different: ",[46,3139,3140],{},"intelligent pair programming"," with an AI that understands context, intent, and best practices.",[2802,3143,2596],{"id":2595},[16,3145,3146],{},"Cursor isn't just another text editor with AI features bolted on. It's been designed from the ground up to seamlessly integrate artificial intelligence into the development workflow:",[16,3148,3149,3152],{},[46,3150,3151],{},"Context-Aware Code Generation",": Unlike basic autocomplete, Cursor understands your entire codebase and can generate contextually relevant code snippets.",[16,3154,3155,3158],{},[46,3156,3157],{},"Natural Language Programming",": Describe what you want in plain English, and watch as Cursor translates your intent into working code.",[16,3160,3161,3164],{},[46,3162,3163],{},"Intelligent Refactoring",": AI-powered suggestions for improving code structure, performance, and maintainability.",[16,3166,3167,3170],{},[46,3168,3169],{},"Bug Detection and Fixes",": Real-time identification of potential issues with suggested solutions.",[26,3172,3174],{"id":3173},"real-world-impact-on-development","Real-World Impact on Development",[16,3176,3177],{},"In our portfolio companies, including oriiion, development teams using AI-powered tools like Cursor are reporting:",[2802,3179,3181],{"id":3180},"_40-60-increase-in-development-speed","40-60% Increase in Development Speed",[40,3183,3184,3187,3190],{},[43,3185,3186],{},"Faster prototyping and iteration cycles",[43,3188,3189],{},"Reduced time spent on boilerplate code",[43,3191,3192],{},"Quicker debugging and problem resolution",[2802,3194,3196],{"id":3195},"improved-code-quality","Improved Code Quality",[40,3198,3199,3202,3205],{},[43,3200,3201],{},"AI suggestions often follow best practices by default",[43,3203,3204],{},"Consistent coding patterns across team members",[43,3206,3207],{},"Reduced technical debt accumulation",[2802,3209,3211],{"id":3210},"enhanced-learning-experience","Enhanced Learning Experience",[40,3213,3214,3217,3220],{},[43,3215,3216],{},"Junior developers learn faster by observing AI suggestions",[43,3218,3219],{},"Exposure to advanced programming patterns and techniques",[43,3221,3222],{},"Real-time explanations of complex code structures",[26,3224,3226],{"id":3225},"investment-perspective-the-ai-development-tools-market","Investment Perspective: The AI Development Tools Market",[16,3228,3229],{},"From an investment standpoint, the AI development tools market represents a massive opportunity:",[16,3231,3232,3235],{},[46,3233,3234],{},"Market Size",": The global developer tools market is expected to reach $26.6 billion by 2027, with AI-powered tools capturing an increasing share.",[16,3237,3238,3241],{},[46,3239,3240],{},"Productivity Multiplier",": Tools that significantly increase developer productivity command premium pricing and high adoption rates.",[16,3243,3244,3247],{},[46,3245,3246],{},"Network Effects",": As more developers use these tools, the AI models improve, creating a competitive moat.",[26,3249,3251],{"id":3250},"key-features-transforming-development","Key Features Transforming Development",[2802,3253,3255],{"id":3254},"_1-intelligent-code-completion","1. Intelligent Code Completion",[16,3257,3258],{},"Gone are the days of basic autocomplete. Modern AI assistants predict entire functions, classes, and even architectural patterns based on your project context.",[2802,3260,3262],{"id":3261},"_2-natural-language-to-code-translation","2. Natural Language to Code Translation",[75,3264,3266],{"className":134,"code":3265,"language":136,"meta":80,"style":80},"// Simply describe what you want:\n// \"Create a function that validates email addresses and returns detailed error messages\"\n\nfunction validateEmail(email: string): { isValid: boolean; errors: string[] } {\n  const errors: string[] = [];\n  \n  if (!email || email.trim() === '') {\n    errors.push('Email address is required');\n  }\n  \n  const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  if (!emailRegex.test(email)) {\n    errors.push('Email format is invalid');\n  }\n  \n  if (email.length > 254) {\n    errors.push('Email address is too long');\n  }\n  \n  return {\n    isValid: errors.length === 0,\n    errors\n  };\n}\n",[82,3267,3268,3273,3278,3282,3328,3348,3353,3383,3398,3402,3406,3461,3478,3491,3495,3499,3517,3530,3534,3538,3544,3559,3564,3569],{"__ignoreMap":80},[85,3269,3270],{"class":87,"line":88},[85,3271,3272],{"class":108},"// Simply describe what you want:\n",[85,3274,3275],{"class":87,"line":105},[85,3276,3277],{"class":108},"// \"Create a function that validates email addresses and returns detailed error messages\"\n",[85,3279,3280],{"class":87,"line":112},[85,3281,192],{"emptyLinePlaceholder":191},[85,3283,3284,3287,3290,3292,3294,3296,3299,3302,3304,3307,3310,3312,3315,3318,3321,3323,3325],{"class":87,"line":188},[85,3285,3286],{"class":143},"function",[85,3288,3289],{"class":91}," validateEmail",[85,3291,207],{"class":147},[85,3293,1461],{"class":216},[85,3295,435],{"class":143},[85,3297,3298],{"class":267}," string",[85,3300,3301],{"class":147},")",[85,3303,435],{"class":143},[85,3305,3306],{"class":147}," { ",[85,3308,3309],{"class":216},"isValid",[85,3311,435],{"class":143},[85,3313,3314],{"class":267}," boolean",[85,3316,3317],{"class":147},"; ",[85,3319,3320],{"class":216},"errors",[85,3322,435],{"class":143},[85,3324,3298],{"class":267},[85,3326,3327],{"class":147},"[] } {\n",[85,3329,3330,3332,3335,3337,3339,3342,3345],{"class":87,"line":195},[85,3331,801],{"class":143},[85,3333,3334],{"class":267}," errors",[85,3336,435],{"class":143},[85,3338,3298],{"class":267},[85,3340,3341],{"class":147},"[] ",[85,3343,3344],{"class":143},"=",[85,3346,3347],{"class":147}," [];\n",[85,3349,3350],{"class":87,"line":229},[85,3351,3352],{"class":147},"  \n",[85,3354,3355,3357,3359,3361,3364,3367,3370,3373,3376,3378,3381],{"class":87,"line":256},[85,3356,232],{"class":143},[85,3358,213],{"class":147},[85,3360,615],{"class":143},[85,3362,3363],{"class":147},"email ",[85,3365,3366],{"class":143},"||",[85,3368,3369],{"class":147}," email.",[85,3371,3372],{"class":91},"trim",[85,3374,3375],{"class":147},"() ",[85,3377,372],{"class":143},[85,3379,3380],{"class":95}," ''",[85,3382,378],{"class":147},[85,3384,3385,3388,3391,3393,3396],{"class":87,"line":291},[85,3386,3387],{"class":147},"    errors.",[85,3389,3390],{"class":91},"push",[85,3392,207],{"class":147},[85,3394,3395],{"class":95},"'Email address is required'",[85,3397,1568],{"class":147},[85,3399,3400],{"class":87,"line":303},[85,3401,356],{"class":147},[85,3403,3404],{"class":87,"line":309},[85,3405,3352],{"class":147},[85,3407,3408,3410,3413,3415,3418,3421,3424,3426,3429,3431,3435,3437,3439,3441,3443,3447,3449,3451,3453,3456,3459],{"class":87,"line":323},[85,3409,801],{"class":143},[85,3411,3412],{"class":267}," emailRegex",[85,3414,390],{"class":143},[85,3416,3417],{"class":95}," /",[85,3419,3420],{"class":143},"^",[85,3422,3423],{"class":267},"[",[85,3425,3420],{"class":143},[85,3427,3428],{"class":267},"\\s@]",[85,3430,962],{"class":143},[85,3432,3434],{"class":3433},"sA_wV","@",[85,3436,3423],{"class":267},[85,3438,3420],{"class":143},[85,3440,3428],{"class":267},[85,3442,962],{"class":143},[85,3444,3446],{"class":3445},"snhLl","\\.",[85,3448,3423],{"class":267},[85,3450,3420],{"class":143},[85,3452,3428],{"class":267},[85,3454,3455],{"class":143},"+$",[85,3457,3458],{"class":95},"/",[85,3460,157],{"class":147},[85,3462,3463,3465,3467,3469,3472,3475],{"class":87,"line":332},[85,3464,232],{"class":143},[85,3466,213],{"class":147},[85,3468,615],{"class":143},[85,3470,3471],{"class":147},"emailRegex.",[85,3473,3474],{"class":91},"test",[85,3476,3477],{"class":147},"(email)) {\n",[85,3479,3480,3482,3484,3486,3489],{"class":87,"line":338},[85,3481,3387],{"class":147},[85,3483,3390],{"class":91},[85,3485,207],{"class":147},[85,3487,3488],{"class":95},"'Email format is invalid'",[85,3490,1568],{"class":147},[85,3492,3493],{"class":87,"line":347},[85,3494,356],{"class":147},[85,3496,3497],{"class":87,"line":353},[85,3498,3352],{"class":147},[85,3500,3501,3503,3506,3509,3512,3515],{"class":87,"line":359},[85,3502,232],{"class":143},[85,3504,3505],{"class":147}," (email.",[85,3507,3508],{"class":267},"length",[85,3510,3511],{"class":143}," >",[85,3513,3514],{"class":267}," 254",[85,3516,378],{"class":147},[85,3518,3519,3521,3523,3525,3528],{"class":87,"line":364},[85,3520,3387],{"class":147},[85,3522,3390],{"class":91},[85,3524,207],{"class":147},[85,3526,3527],{"class":95},"'Email address is too long'",[85,3529,1568],{"class":147},[85,3531,3532],{"class":87,"line":381},[85,3533,356],{"class":147},[85,3535,3536],{"class":87,"line":402},[85,3537,3352],{"class":147},[85,3539,3540,3542],{"class":87,"line":410},[85,3541,746],{"class":143},[85,3543,226],{"class":147},[85,3545,3546,3549,3551,3554,3557],{"class":87,"line":427},[85,3547,3548],{"class":147},"    isValid: errors.",[85,3550,3508],{"class":267},[85,3552,3553],{"class":143}," ===",[85,3555,3556],{"class":267}," 0",[85,3558,300],{"class":147},[85,3560,3561],{"class":87,"line":450},[85,3562,3563],{"class":147},"    errors\n",[85,3565,3566],{"class":87,"line":461},[85,3567,3568],{"class":147},"  };\n",[85,3570,3571],{"class":87,"line":467},[85,3572,996],{"class":147},[2802,3574,3576],{"id":3575},"_3-contextual-code-review","3. Contextual Code Review",[16,3578,3579],{},"AI tools can now provide code review feedback that considers:",[40,3581,3582,3585,3588,3591],{},[43,3583,3584],{},"Project-specific conventions",[43,3586,3587],{},"Performance implications",[43,3589,3590],{},"Security vulnerabilities",[43,3592,3593],{},"Accessibility concerns",[2802,3595,3597],{"id":3596},"_4-automated-documentation","4. Automated Documentation",[16,3599,3600],{},"Generate comprehensive documentation directly from code, including:",[40,3602,3603,3606,3609,3612],{},[43,3604,3605],{},"Function descriptions",[43,3607,3608],{},"Parameter explanations",[43,3610,3611],{},"Usage examples",[43,3613,3614],{},"API documentation",[26,3616,3618],{"id":3617},"challenges-and-considerations","Challenges and Considerations",[16,3620,3621],{},"While AI development tools offer tremendous benefits, they also present challenges:",[2802,3623,3625],{"id":3624},"code-quality-assurance","Code Quality Assurance",[40,3627,3628,3631,3634],{},[43,3629,3630],{},"Need for careful review of AI-generated code",[43,3632,3633],{},"Potential for introducing subtle bugs",[43,3635,3636],{},"Importance of maintaining coding standards",[2802,3638,3640],{"id":3639},"dependency-concerns","Dependency Concerns",[40,3642,3643,3646,3649],{},[43,3644,3645],{},"Risk of over-reliance on AI assistance",[43,3647,3648],{},"Need to maintain fundamental programming skills",[43,3650,3651],{},"Importance of understanding generated code",[2802,3653,3655],{"id":3654},"security-implications","Security Implications",[40,3657,3658,3661,3664],{},[43,3659,3660],{},"Ensuring AI-generated code doesn't introduce vulnerabilities",[43,3662,3663],{},"Managing sensitive information in prompts",[43,3665,3666],{},"Compliance with security standards",[26,3668,3670],{"id":3669},"the-future-of-ai-powered-development","The Future of AI-Powered Development",[16,3672,3673],{},"Looking ahead, we can expect:",[2802,3675,3677],{"id":3676},"more-sophisticated-context-understanding","More Sophisticated Context Understanding",[16,3679,3680],{},"AI tools will better understand project requirements, business logic, and architectural decisions.",[2802,3682,3684],{"id":3683},"integrated-testing-and-deployment","Integrated Testing and Deployment",[16,3686,3687],{},"Automated test generation and deployment pipeline creation based on code changes.",[2802,3689,3691],{"id":3690},"cross-language-intelligence","Cross-Language Intelligence",[16,3693,3694],{},"AI assistants that can work seamlessly across multiple programming languages and frameworks.",[2802,3696,3698],{"id":3697},"collaborative-ai-development","Collaborative AI Development",[16,3700,3701],{},"Multiple AI agents working together on different aspects of software development.",[26,3703,3705],{"id":3704},"investment-strategy-for-ai-development-tools","Investment Strategy for AI Development Tools",[16,3707,3708],{},"At Pogton, we're actively evaluating opportunities in this space, focusing on:",[16,3710,3711,3714],{},[46,3712,3713],{},"Technical Differentiation",": Companies with unique approaches to code understanding and generation.",[16,3716,3717,3720],{},[46,3718,3719],{},"Developer Experience",": Tools that significantly improve the development workflow.",[16,3722,3723,3726],{},[46,3724,3725],{},"Enterprise Adoption",": Solutions that can scale across large development teams.",[16,3728,3729,3732],{},[46,3730,3731],{},"Integration Capabilities",": Platforms that work well with existing development ecosystems.",[26,3734,3736],{"id":3735},"practical-tips-for-adopting-ai-development-tools","Practical Tips for Adopting AI Development Tools",[2802,3738,3740],{"id":3739},"start-small","Start Small",[16,3742,3743],{},"Begin with simple code completion and gradually explore more advanced features.",[2802,3745,3747],{"id":3746},"maintain-code-review-practices","Maintain Code Review Practices",[16,3749,3750],{},"Always review AI-generated code for accuracy, security, and alignment with project standards.",[2802,3752,3754],{"id":3753},"invest-in-training","Invest in Training",[16,3756,3757],{},"Ensure your team understands how to effectively prompt and work with AI tools.",[2802,3759,3761],{"id":3760},"measure-impact","Measure Impact",[16,3763,3764],{},"Track productivity improvements and code quality metrics to quantify the benefits.",[26,3766,3063],{"id":3062},[16,3768,3769],{},"Tools like Cursor represent more than just the next evolution in IDEs, they're harbingers of a fundamental shift in how software is created. For developers, they offer unprecedented productivity gains. For investors, they represent a rapidly growing market with significant potential returns.",[16,3771,3772],{},"The question isn't whether AI will transform software development, it's how quickly we can adapt and leverage these tools to build better software, faster.",[16,3774,3775],{},"At Pogton, we're not just observing this transformation; we're actively investing in it. The future of software development is here, and it's powered by artificial intelligence.",[2720,3777],{},[16,3779,3780],{},[2725,3781,3782,3783,3785],{},"Interested in AI development tools or investment opportunities in this space? ",[928,3784,2731],{"href":2730}," and explore how we can build the future together.",[2539,3787,3788],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .snhLl, html code.shiki .snhLl{--shiki-default:#22863A;--shiki-default-font-weight:bold;--shiki-dark:#85E89D;--shiki-dark-font-weight:bold}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);}",{"title":80,"searchDepth":105,"depth":105,"links":3790},[3791,3794,3799,3800,3806,3811,3817,3818,3824],{"id":3133,"depth":105,"text":3134,"children":3792},[3793],{"id":2595,"depth":112,"text":2596},{"id":3173,"depth":105,"text":3174,"children":3795},[3796,3797,3798],{"id":3180,"depth":112,"text":3181},{"id":3195,"depth":112,"text":3196},{"id":3210,"depth":112,"text":3211},{"id":3225,"depth":105,"text":3226},{"id":3250,"depth":105,"text":3251,"children":3801},[3802,3803,3804,3805],{"id":3254,"depth":112,"text":3255},{"id":3261,"depth":112,"text":3262},{"id":3575,"depth":112,"text":3576},{"id":3596,"depth":112,"text":3597},{"id":3617,"depth":105,"text":3618,"children":3807},[3808,3809,3810],{"id":3624,"depth":112,"text":3625},{"id":3639,"depth":112,"text":3640},{"id":3654,"depth":112,"text":3655},{"id":3669,"depth":105,"text":3670,"children":3812},[3813,3814,3815,3816],{"id":3676,"depth":112,"text":3677},{"id":3683,"depth":112,"text":3684},{"id":3690,"depth":112,"text":3691},{"id":3697,"depth":112,"text":3698},{"id":3704,"depth":105,"text":3705},{"id":3735,"depth":105,"text":3736,"children":3819},[3820,3821,3822,3823],{"id":3739,"depth":112,"text":3740},{"id":3746,"depth":112,"text":3747},{"id":3753,"depth":112,"text":3754},{"id":3760,"depth":112,"text":3761},{"id":3062,"depth":105,"text":3063},"Exploring how Cursor and other AI-powered development tools are transforming the way we build software, from code generation to debugging and beyond.","/images/blog/cursor-ai-development.jpg",{"category":2747,"featured":3828,"readTime":3829},false,"6 min","/blog/cursor-ai-development-revolution","2024-12-18",{"keywords":3833,"title":3122,"description":3825},[3834,3835,2757,3836,3837],"Cursor AI","AI development tools","software development","AI programming","blog/cursor-ai-development-revolution",[54,2574,2558,3840,2760],"Programming","NiUBCvIPyzjymUeYQVFIFS5v8PdOXrAAp-hTknKqkO0",{"id":3843,"title":3844,"author":7,"body":3845,"description":4520,"extension":2555,"image":4521,"meta":4522,"navigation":191,"path":4525,"publishedAt":4526,"seo":4527,"stem":4534,"tags":4535,"__hash__":4539},"blog/blog/emerging-tech-trends-2025.md","Emerging Technology Trends to Watch in 2025: An Investor's Perspective",{"type":9,"value":3846,"toc":4476},[3847,3850,3853,3857,3860,3864,3890,3895,3899,3902,3906,3932,3938,3942,3945,3949,3975,3980,3984,3987,3991,4017,4023,4027,4030,4034,4060,4065,4069,4072,4076,4102,4108,4112,4115,4119,4145,4151,4155,4158,4162,4188,4194,4198,4201,4205,4231,4237,4241,4244,4248,4274,4280,4284,4287,4291,4311,4315,4329,4333,4347,4351,4365,4369,4373,4387,4391,4405,4409,4423,4427,4430,4433,4459,4462,4465,4467],[12,3848,3844],{"id":3849},"emerging-technology-trends-to-watch-in-2025-an-investors-perspective",[16,3851,3852],{},"As we approach 2025, the technology landscape continues to evolve at breakneck speed. From my vantage point at Pogton, where we focus on strategic technology investments, certain trends are emerging that promise to reshape entire industries. Here's my analysis of the most significant technology trends to watch in 2025.",[26,3854,3856],{"id":3855},"_1-ai-infrastructure-the-new-gold-rush","1. AI Infrastructure: The New Gold Rush",[16,3858,3859],{},"While everyone talks about AI applications, the real opportunity lies in AI infrastructure. Companies building the foundational tools, platforms, and hardware that enable AI deployment are positioned for massive growth.",[2802,3861,3863],{"id":3862},"key-investment-areas","Key Investment Areas:",[40,3865,3866,3872,3878,3884],{},[43,3867,3868,3871],{},[46,3869,3870],{},"MLOps Platforms",": Tools for managing machine learning lifecycles",[43,3873,3874,3877],{},[46,3875,3876],{},"AI-Optimized Hardware",": Specialized chips for AI workloads",[43,3879,3880,3883],{},[46,3881,3882],{},"Edge AI Computing",": Bringing AI processing closer to data sources",[43,3885,3886,3889],{},[46,3887,3888],{},"AI Model Management",": Version control and deployment systems for AI models",[16,3891,3892,3894],{},[46,3893,2947],{},": The AI infrastructure market is projected to reach $150+ billion by 2030, with infrastructure representing the largest segment.",[26,3896,3898],{"id":3897},"_2-quantum-computing-from-research-to-reality","2. Quantum Computing: From Research to Reality",[16,3900,3901],{},"2025 will mark the transition from quantum computing research to practical applications. While full fault-tolerant quantum computers are still years away, near-term quantum applications are becoming viable.",[2802,3903,3905],{"id":3904},"emerging-applications","Emerging Applications:",[40,3907,3908,3914,3920,3926],{},[43,3909,3910,3913],{},[46,3911,3912],{},"Quantum Machine Learning",": Hybrid classical-quantum algorithms",[43,3915,3916,3919],{},[46,3917,3918],{},"Optimization Problems",": Supply chain, logistics, and financial modeling",[43,3921,3922,3925],{},[46,3923,3924],{},"Cryptography",": Both breaking and creating new encryption methods",[43,3927,3928,3931],{},[46,3929,3930],{},"Drug Discovery",": Molecular simulation and analysis",[16,3933,3934,3937],{},[46,3935,3936],{},"Investment Perspective",": Companies building quantum software stacks and algorithms present more immediate opportunities than hardware manufacturers.",[26,3939,3941],{"id":3940},"_3-sustainable-technology-green-tech-20","3. Sustainable Technology: Green Tech 2.0",[16,3943,3944],{},"Climate technology is evolving beyond traditional renewable energy into sophisticated, AI-driven solutions for carbon management, resource optimization, and environmental monitoring.",[2802,3946,3948],{"id":3947},"high-growth-segments","High-Growth Segments:",[40,3950,3951,3957,3963,3969],{},[43,3952,3953,3956],{},[46,3954,3955],{},"Carbon Capture and Storage",": Advanced materials and processes",[43,3958,3959,3962],{},[46,3960,3961],{},"Smart Grid Technology",": AI-powered energy distribution",[43,3964,3965,3968],{},[46,3966,3967],{},"Precision Agriculture",": IoT and AI for sustainable farming",[43,3970,3971,3974],{},[46,3972,3973],{},"Circular Economy Platforms",": Technology enabling waste reduction and recycling",[16,3976,3977,3979],{},[46,3978,2909],{},": ESG investing continues to drive capital into sustainable technology, with the cleantech market expected to exceed $2.5 trillion by 2030.",[26,3981,3983],{"id":3982},"_4-spatial-computing-beyond-vrar","4. Spatial Computing: Beyond VR/AR",[16,3985,3986],{},"Spatial computing, the fusion of digital and physical worlds, is maturing beyond gaming and entertainment into enterprise applications.",[2802,3988,3990],{"id":3989},"enterprise-applications","Enterprise Applications:",[40,3992,3993,3999,4005,4011],{},[43,3994,3995,3998],{},[46,3996,3997],{},"Digital Twins",": Real-time digital replicas of physical systems",[43,4000,4001,4004],{},[46,4002,4003],{},"Remote Collaboration",": Immersive meetings and training",[43,4006,4007,4010],{},[46,4008,4009],{},"Industrial Maintenance",": AR-guided repair and inspection",[43,4012,4013,4016],{},[46,4014,4015],{},"Healthcare Training",": Surgical simulation and medical education",[16,4018,4019,4022],{},[46,4020,4021],{},"Investment Opportunity",": Focus on enterprise-grade spatial computing platforms rather than consumer hardware.",[26,4024,4026],{"id":4025},"_5-biotechnology-convergence-ai-meets-biology","5. Biotechnology Convergence: AI Meets Biology",[16,4028,4029],{},"The intersection of AI and biotechnology is accelerating drug discovery, personalized medicine, and synthetic biology applications.",[2802,4031,4033],{"id":4032},"breakthrough-areas","Breakthrough Areas:",[40,4035,4036,4042,4048,4054],{},[43,4037,4038,4041],{},[46,4039,4040],{},"AI-Driven Drug Discovery",": Reducing development time from years to months",[43,4043,4044,4047],{},[46,4045,4046],{},"Personalized Medicine",": Tailored treatments based on genetic profiles",[43,4049,4050,4053],{},[46,4051,4052],{},"Synthetic Biology",": Engineering biological systems for manufacturing",[43,4055,4056,4059],{},[46,4057,4058],{},"Digital Therapeutics",": Software-based medical interventions",[16,4061,4062,4064],{},[46,4063,3234],{},": The AI in healthcare market is projected to reach $148 billion by 2029.",[26,4066,4068],{"id":4067},"_6-autonomous-systems-beyond-self-driving-cars","6. Autonomous Systems: Beyond Self-Driving Cars",[16,4070,4071],{},"Autonomous technology is expanding into new domains, creating opportunities across multiple industries.",[2802,4073,4075],{"id":4074},"expanding-applications","Expanding Applications:",[40,4077,4078,4084,4090,4096],{},[43,4079,4080,4083],{},[46,4081,4082],{},"Autonomous Manufacturing",": Self-managing production lines",[43,4085,4086,4089],{},[46,4087,4088],{},"Drone Delivery Systems",": Last-mile logistics automation",[43,4091,4092,4095],{},[46,4093,4094],{},"Autonomous Ships",": Unmanned maritime transport",[43,4097,4098,4101],{},[46,4099,4100],{},"Agricultural Robots",": Automated farming equipment",[16,4103,4104,4107],{},[46,4105,4106],{},"Investment Focus",": Companies developing autonomous system software and sensor fusion technology.",[26,4109,4111],{"id":4110},"_7-neuromorphic-computing-brain-inspired-processing","7. Neuromorphic Computing: Brain-Inspired Processing",[16,4113,4114],{},"Neuromorphic chips that mimic brain architecture are moving from research labs to commercial applications, particularly for edge AI and IoT devices.",[2802,4116,4118],{"id":4117},"applications","Applications:",[40,4120,4121,4127,4133,4139],{},[43,4122,4123,4126],{},[46,4124,4125],{},"Ultra-Low Power AI",": Enabling AI in battery-powered devices",[43,4128,4129,4132],{},[46,4130,4131],{},"Real-Time Processing",": Immediate response for autonomous systems",[43,4134,4135,4138],{},[46,4136,4137],{},"Adaptive Learning",": Hardware that learns and adapts over time",[43,4140,4141,4144],{},[46,4142,4143],{},"Sensory Processing",": Advanced vision and audio processing",[16,4146,4147,4150],{},[46,4148,4149],{},"Investment Potential",": Early-stage market with significant long-term potential for companies developing neuromorphic architectures.",[26,4152,4154],{"id":4153},"_8-web3-infrastructure-building-the-decentralized-web","8. Web3 Infrastructure: Building the Decentralized Web",[16,4156,4157],{},"Despite market volatility, the underlying Web3 infrastructure continues to mature, with focus shifting from speculation to utility.",[2802,4159,4161],{"id":4160},"infrastructure-developments","Infrastructure Developments:",[40,4163,4164,4170,4176,4182],{},[43,4165,4166,4169],{},[46,4167,4168],{},"Layer 2 Solutions",": Scaling blockchain networks",[43,4171,4172,4175],{},[46,4173,4174],{},"Decentralized Identity",": Privacy-preserving authentication",[43,4177,4178,4181],{},[46,4179,4180],{},"Cross-Chain Protocols",": Interoperability between blockchain networks",[43,4183,4184,4187],{},[46,4185,4186],{},"Decentralized Storage",": Distributed file storage systems",[16,4189,4190,4193],{},[46,4191,4192],{},"Strategic Consideration",": Focus on infrastructure and utility rather than speculative assets.",[26,4195,4197],{"id":4196},"_9-advanced-robotics-human-robot-collaboration","9. Advanced Robotics: Human-Robot Collaboration",[16,4199,4200],{},"Robotics is evolving from industrial automation to collaborative systems that work alongside humans in various environments.",[2802,4202,4204],{"id":4203},"emerging-segments","Emerging Segments:",[40,4206,4207,4213,4219,4225],{},[43,4208,4209,4212],{},[46,4210,4211],{},"Collaborative Robots (Cobots)",": Safe human-robot interaction",[43,4214,4215,4218],{},[46,4216,4217],{},"Service Robots",": Healthcare, hospitality, and retail applications",[43,4220,4221,4224],{},[46,4222,4223],{},"Humanoid Robots",": General-purpose robotic assistants",[43,4226,4227,4230],{},[46,4228,4229],{},"Soft Robotics",": Flexible, adaptive robotic systems",[16,4232,4233,4236],{},[46,4234,4235],{},"Market Growth",": The global robotics market is expected to reach $210 billion by 2025.",[26,4238,4240],{"id":4239},"_10-cybersecurity-evolution-ai-powered-defense","10. Cybersecurity Evolution: AI-Powered Defense",[16,4242,4243],{},"As threats become more sophisticated, cybersecurity is evolving to use AI for both attack detection and response.",[2802,4245,4247],{"id":4246},"technology-trends","Technology Trends:",[40,4249,4250,4256,4262,4268],{},[43,4251,4252,4255],{},[46,4253,4254],{},"Zero Trust Architecture",": Never trust, always verify security models",[43,4257,4258,4261],{},[46,4259,4260],{},"AI-Powered Threat Detection",": Machine learning for anomaly detection",[43,4263,4264,4267],{},[46,4265,4266],{},"Quantum-Safe Cryptography",": Preparing for quantum computing threats",[43,4269,4270,4273],{},[46,4271,4272],{},"Behavioral Analytics",": Identifying threats through user behavior patterns",[16,4275,4276,4279],{},[46,4277,4278],{},"Investment Rationale",": Cybersecurity spending continues to grow as digital transformation accelerates.",[26,4281,4283],{"id":4282},"strategic-investment-framework-for-2025","Strategic Investment Framework for 2025",[16,4285,4286],{},"Based on these trends, here's our investment framework at Pogton:",[2802,4288,4290],{"id":4289},"_1-technology-maturity-assessment","1. Technology Maturity Assessment",[40,4292,4293,4299,4305],{},[43,4294,4295,4298],{},[46,4296,4297],{},"Emerging",": High risk, high reward (e.g., quantum computing)",[43,4300,4301,4304],{},[46,4302,4303],{},"Growing",": Balanced risk-reward (e.g., AI infrastructure)",[43,4306,4307,4310],{},[46,4308,4309],{},"Mature",": Lower risk, steady returns (e.g., cybersecurity)",[2802,4312,4314],{"id":4313},"_2-market-readiness-evaluation","2. Market Readiness Evaluation",[40,4316,4317,4320,4323,4326],{},[43,4318,4319],{},"Size of addressable market",[43,4321,4322],{},"Adoption timeline and barriers",[43,4324,4325],{},"Regulatory environment",[43,4327,4328],{},"Competitive landscape",[2802,4330,4332],{"id":4331},"_3-team-and-execution-capability","3. Team and Execution Capability",[40,4334,4335,4338,4341,4344],{},[43,4336,4337],{},"Technical expertise depth",[43,4339,4340],{},"Previous execution track record",[43,4342,4343],{},"Vision and strategic thinking",[43,4345,4346],{},"Ability to scale operations",[2802,4348,4350],{"id":4349},"_4-strategic-positioning","4. Strategic Positioning",[40,4352,4353,4356,4359,4362],{},[43,4354,4355],{},"Competitive moats and barriers to entry",[43,4357,4358],{},"Network effects potential",[43,4360,4361],{},"Platform vs. point solution approach",[43,4363,4364],{},"Partnership and ecosystem opportunities",[26,4366,4368],{"id":4367},"risks-and-considerations","Risks and Considerations",[2802,4370,4372],{"id":4371},"technology-risks","Technology Risks",[40,4374,4375,4378,4381,4384],{},[43,4376,4377],{},"Slower than expected adoption",[43,4379,4380],{},"Technical limitations or breakthroughs",[43,4382,4383],{},"Regulatory challenges",[43,4385,4386],{},"Competitive threats",[2802,4388,4390],{"id":4389},"market-risks","Market Risks",[40,4392,4393,4396,4399,4402],{},[43,4394,4395],{},"Economic downturns affecting tech spending",[43,4397,4398],{},"Shifting investor sentiment",[43,4400,4401],{},"Supply chain disruptions",[43,4403,4404],{},"Geopolitical tensions",[2802,4406,4408],{"id":4407},"investment-risks","Investment Risks",[40,4410,4411,4414,4417,4420],{},[43,4412,4413],{},"Valuation bubbles in hot sectors",[43,4415,4416],{},"Talent scarcity driving up costs",[43,4418,4419],{},"Intellectual property challenges",[43,4421,4422],{},"Execution risks in scaling",[26,4424,4426],{"id":4425},"conclusion-navigating-the-technology-landscape","Conclusion: Navigating the Technology Landscape",[16,4428,4429],{},"2025 promises to be a pivotal year for technology investment. The trends outlined above represent not just technological evolution, but fundamental shifts in how we work, live, and interact with the world around us.",[16,4431,4432],{},"Success in this environment requires:",[40,4434,4435,4441,4447,4453],{},[43,4436,4437,4440],{},[46,4438,4439],{},"Deep Technical Understanding",": Know the technology, not just the hype",[43,4442,4443,4446],{},[46,4444,4445],{},"Strategic Patience",": Revolutionary technologies take time to mature",[43,4448,4449,4452],{},[46,4450,4451],{},"Diversified Exposure",": Spread risk across multiple emerging trends",[43,4454,4455,4458],{},[46,4456,4457],{},"Active Management",": Stay engaged with portfolio companies and market developments",[16,4460,4461],{},"At Pogton, we're positioning ourselves to capitalize on these trends while maintaining disciplined investment practices. The future belongs to those who can identify and nurture the technologies that will define the next decade.",[16,4463,4464],{},"The question isn't whether these trends will reshape our world, it's how quickly we can identify and support the companies that will lead this transformation.",[2720,4466],{},[16,4468,4469],{},[2725,4470,4471,4472,4475],{},"Want to discuss investment opportunities in emerging technologies? ",[928,4473,4474],{"href":2730},"Contact us"," to explore how Pogton can help bring your vision to reality.",{"title":80,"searchDepth":105,"depth":105,"links":4477},[4478,4481,4484,4487,4490,4493,4496,4499,4502,4505,4508,4514,4519],{"id":3855,"depth":105,"text":3856,"children":4479},[4480],{"id":3862,"depth":112,"text":3863},{"id":3897,"depth":105,"text":3898,"children":4482},[4483],{"id":3904,"depth":112,"text":3905},{"id":3940,"depth":105,"text":3941,"children":4485},[4486],{"id":3947,"depth":112,"text":3948},{"id":3982,"depth":105,"text":3983,"children":4488},[4489],{"id":3989,"depth":112,"text":3990},{"id":4025,"depth":105,"text":4026,"children":4491},[4492],{"id":4032,"depth":112,"text":4033},{"id":4067,"depth":105,"text":4068,"children":4494},[4495],{"id":4074,"depth":112,"text":4075},{"id":4110,"depth":105,"text":4111,"children":4497},[4498],{"id":4117,"depth":112,"text":4118},{"id":4153,"depth":105,"text":4154,"children":4500},[4501],{"id":4160,"depth":112,"text":4161},{"id":4196,"depth":105,"text":4197,"children":4503},[4504],{"id":4203,"depth":112,"text":4204},{"id":4239,"depth":105,"text":4240,"children":4506},[4507],{"id":4246,"depth":112,"text":4247},{"id":4282,"depth":105,"text":4283,"children":4509},[4510,4511,4512,4513],{"id":4289,"depth":112,"text":4290},{"id":4313,"depth":112,"text":4314},{"id":4331,"depth":112,"text":4332},{"id":4349,"depth":112,"text":4350},{"id":4367,"depth":105,"text":4368,"children":4515},[4516,4517,4518],{"id":4371,"depth":112,"text":4372},{"id":4389,"depth":112,"text":4390},{"id":4407,"depth":112,"text":4408},{"id":4425,"depth":105,"text":4426},"Key technology trends that will shape 2025 and beyond, analyzed from an investment standpoint with insights on market opportunities and strategic considerations.","/images/blog/tech-trends-2025.jpg",{"category":4523,"featured":3828,"readTime":4524},"Technology Trends","10 min","/blog/emerging-tech-trends-2025","2024-12-15",{"keywords":4528,"title":3844,"description":4520},[4529,4530,4531,4532,4533],"technology trends 2025","tech investment","emerging technologies","innovation trends","future technology","blog/emerging-tech-trends-2025",[3117,4536,3116,4537,4538],"2025","Trends","Innovation","rrunXhUMktia1DesfOHpVxyz9m34sJFt3RZ7SuKlMIU",1774083630094]