{"id":26545,"date":"2026-07-10T20:51:20","date_gmt":"2026-07-10T20:51:20","guid":{"rendered":"https:\/\/umang.pk\/2026\/07\/10\/supabase-auth-%d8%a7%d9%88%d8%b1-digitalocean-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%a7%d9%be%d9%86%d8%a7-mcp-%d8%b3%d8%b1%d9%88\/"},"modified":"2026-07-10T20:51:22","modified_gmt":"2026-07-10T20:51:22","slug":"supabase-auth-%d8%a7%d9%88%d8%b1-digitalocean-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%a7%d9%be%d9%86%d8%a7-mcp-%d8%b3%d8%b1%d9%88","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/07\/10\/supabase-auth-%d8%a7%d9%88%d8%b1-digitalocean-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-%d8%a7%d9%be%d9%86%d8%a7-mcp-%d8%b3%d8%b1%d9%88\/","title":{"rendered":"Supabase Auth \u0627\u0648\u0631 DigitalOcean \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u067e\u0646\u0627 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 ChatGPT \u0627\u06cc\u067e \u0634\u0627\u0626\u0639 \u06a9\u0631\u06cc\u06ba\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>LLM \u0627\u0648\u0631 AI \u0645\u0642\u0627\u0645\u06cc \u0627\u06cc\u067e\u0633 \u06a9\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c \u0627\u06cc\u067e \u06a9\u06cc \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u0642\u0633\u0645 \u0627\u0628\u06be\u0631 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0642\u0627\u0645\u06cc \u0648\u06cc\u0628 \u06cc\u0627 \u0645\u0648\u0628\u0627\u0626\u0644 \u0627\u06cc\u067e \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 AI \u0686\u06cc\u0679 (\u062c\u06cc\u0633\u06d2 ChatGPT) \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0633\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0634\u0631\u0648\u0639 \u0633\u06d2 \u0645\u0627\u0688\u0644 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 (MCP) \u0633\u0631\u0648\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u062c\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 UI \u0628\u06be\u06cc \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u062c\u0633\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be ChatGPT \u0627\u06cc\u067e \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0646\u06cc\u06a9\u0679\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be ChatGPT \u0627\u06cc\u067e \u0628\u0646\u0627\u0646\u06d2\u060c \u062c\u0627\u0646\u0686\u0646\u06d2\u060c \u0627\u0633\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0627\u06cc\u067e \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0634\u0627\u0626\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0645\u0639 \u06a9\u0631\u0627\u0646\u06d2 \u06a9\u06d2 \u0639\u0645\u0644 \u0633\u06d2 \u06af\u0632\u0631\u06cc\u06ba \u06af\u06d2\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u062a\u06cc\u0646 \u0633\u0637\u062d\u0648\u06ba \u067e\u0631 \u0627\u06cc\u067e\u0633 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0644\u06cc\u0648\u0644 1: \u0627\u06cc\u06a9 \u0628\u0646\u06cc\u0627\u062f\u06cc MCP \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba \u062c\u0648 \u0679\u06cc\u06a9\u0633\u0679 \u0688\u06cc\u0679\u0627 \u0648\u0627\u067e\u0633 \u06a9\u0631\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0644\u06cc\u0648\u0644 2: LLM UI \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 UI \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0633\u0637\u062d 3: MCP \u0633\u0631\u0648\u0631 \u0645\u06cc\u06ba \u062a\u0648\u062b\u06cc\u0642 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0648\u06cc\u0628 \u06a9\u06cc \u062a\u0631\u0642\u06cc<\/p>\n<\/li>\n<li>\n<p>\u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u067e\u0679<\/p>\n<\/li>\n<li>\n<p>React \u0627\u0648\u0631 React Native<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633<\/p>\n<\/li>\n<\/ul>\n<h3 id=\"heading-what-well-cover\">\u06c1\u0645 \u06a9\u06cc\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2:<\/h3>\n<h2 id=\"heading-what-is-an-mcp-server\">MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u0627\u06cc\u06a9 \u0645\u0627\u0688\u0644 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 (MCP) \u0633\u0631\u0648\u0631 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u06c1\u06d2 \u062c\u0648 \u0645\u0639\u06cc\u0627\u0631\u06cc \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 AI \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0679\u0648\u0644\u0632\u060c \u0648\u0633\u0627\u0626\u0644 \u0627\u0648\u0631 \u0627\u0634\u0627\u0631\u06c1 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u0645 \u0633\u06cc \u067e\u06cc \u0633\u0631\u0648\u0631\u0632 \u0635\u0631\u0641 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642\u060c \u06a9\u0627\u0644 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0679\u0648\u0644\u0632\u060c \u06cc\u0627 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u067e\u0631\u0627\u0645\u067e\u0679 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679\u0633 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 AI \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06cc\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0648\u0633\u06cc\u0639 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u0627\u06cc\u06a9 MCP \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u062a\u06d2 \u06cc\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0645\u0648\u062c\u0648\u062f MCP \u06a9\u0644\u0627\u0626\u0646\u0679\u0633 \u0627\u0633 \u0633\u06d2 \u062c\u0691 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u062f\u0633\u062a\u06cc\u0627\u0628 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06d2 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631\u060c \u062c\u0628 \u0645\u0646\u0627\u0633\u0628 \u06c1\u0648\u060c \u0679\u0648\u0644\u0632 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u06cc\u0627 MCP \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0648\u0633\u0627\u0626\u0644 \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u06a9\u0627\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644 \u0633\u06a9\u06d2\u06d4<\/p>\n<h3 id=\"heading-what-can-you-do-with-an-mcp-server\">\u0645\u06cc\u06ba MCP \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u0648\u06ba\u061f<\/h3>\n<p>MCP \u0633\u0631\u0648\u0631\u0632 AI \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0645\u0627\u0688\u0644 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0648\u0631 \u0633\u0633\u0679\u0645\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06cc\u06a9 \u0645\u0627\u0688\u0644 \u0622\u067e \u06a9\u0648 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u0646\u06d2\u060c \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u06d2\u060c \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u06a9\u06cc \u0628\u0627\u0632\u06cc\u0627\u0641\u062a\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0639\u0645\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u0627\u06cc\u06a9 MCP \u0633\u0631\u0648\u0631 \u0622\u0646 \u0644\u0627\u0626\u0646 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u062c\u0691 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u0627 MCP \u0633\u0631\u0648\u0631 \u0645\u0642\u0627\u0645\u06cc \u0633\u0633\u0679\u0645 \u067e\u0631 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u0648 AI \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0641\u06cc\u062f\u060c \u0639\u0645\u0644\u06cc \u0627\u0648\u0631 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u0679\u0648\u0644\u0632 \u0633\u06d2 \u062c\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-level-1-how-to-build-your-own-mcp-server\">\u0644\u06cc\u0648\u0644 1: \u0627\u067e\u0646\u0627 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h2>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 Node.js \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u0646\u06cc\u0627\u062f\u06cc HTTP \u0633\u0631\u0648\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0648\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 Supabase\u060c \u0627\u0648\u0631 \u0633\u0631\u06a9\u0627\u0631\u06cc MCP \u0633\u0631\u0648\u0631 SDK\u06d4 \u067e\u06be\u0631 \u0627\u0633\u06d2 DigitalOcean \u0645\u06cc\u06ba \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06cc\u067e \u06a9\u0648 ChatGPT \u067e\u0631 \u0634\u0627\u0626\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1\u0627\u06ba \u062f\u0648 \u0642\u062f\u0645 \u0627\u0679\u06be\u0627\u0646\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<ul>\n<li>\n<p>\u067e\u06c1\u0644\u0627 \u0645\u0631\u062d\u0644\u06c1: \u062a\u0639\u06cc\u0646\u0627\u062a \u0627\u06cc\u0645 \u0633\u06cc \u067e\u06cc \u0633\u0631\u0648\u0631 \u06a9\u0648 \u0627\u06cc\u06a9 \u0627\u06cc\u067e\/ \u06a9\u0646\u06cc\u06a9\u0679\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be ChatGPT \u0633\u06d2 \u062c\u0648\u0691\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0627\u0633\u06d2 ChatGPT \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062f\u0648\u0633\u0631\u0627 \u0645\u0631\u062d\u0644\u06c1: \u062c\u0627\u0626\u0632\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e \u062c\u0645\u0639 \u06a9\u0631\u0648\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06af\u0631 \u0645\u0646\u0638\u0648\u0631 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u062a\u0648 \u0627\u0633\u06d2 ChatGPT \u0627\u06cc\u067e \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0634\u0627\u0626\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>MCP \u0633\u0631\u0648\u0631 SDK \u0622\u067e \u06a9\u0627 \u0627\u067e\u0646\u0627 MCP \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u0627 \u0648\u0627\u062d\u062f \u0679\u0648\u0644 \u06cc\u0627 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0686\u0627\u06c1\u06cc\u06ba \u062a\u0648 \u062f\u06cc\u06af\u0631 SDKs \u0627\u0648\u0631 \u0679\u0648\u0644\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u067e\u06c1\u0644\u06d2 \u0645\u0631\u062d\u0644\u06d2 \u06a9\u0648 \u0622\u0633\u0627\u0646 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06c1\u0645 \u0646\u06d2 \u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646 \u0679\u0648\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u06cc\u0627\u06d4<\/p>\n<h3 id=\"heading-step-0-prepare-your-project\">\u0645\u0631\u062d\u0644\u06c1 0: \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0686\u0648\u0646\u06a9\u06c1 \u06c1\u0645 \u06cc\u06c1\u0627\u06ba \u067e\u0648\u0631\u0627 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u06c1\u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0627\u06cc\u06a9 \u067e\u06cc\u06a9\u062c \u0628\u0646\u0627\u0646\u0627 \u06c1\u0648\u06af\u0627 \u0627\u0648\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4 \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0646 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0641\u0648\u0644\u0688\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0627\u0633 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba \u0622\u067e \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>mcp_todo<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633 \u0646\u0626\u06d2 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u062c\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633 \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba \u0679\u0631\u0645\u06cc\u0646\u0644 \u06a9\u06be\u0648\u0644\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u0646 \u067e\u06cc \u0627\u06cc\u0645 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba: <code>npm init --init-type=module -y<\/code> JavaScript \u067e\u06cc\u06a9\u06cc\u062c \u0641\u0627\u0626\u0644\u06cc\u06ba \u0628\u0646\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 ES6 \u0633\u067e\u0648\u0631\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u067e\u06cc\u06a9\u062c\u0632 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0644\u0627\u060c \u06af\u0679 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 <code>git init<\/code> \u0648\u0631\u0698\u0646 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c<\/p>\n<\/li>\n<li>\n<p>\u0645\u062a\u0639\u0644\u0642\u06c1 \u067e\u06cc\u06a9\u06cc\u062c\u0632 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0622\u067e \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p>\u067e\u06cc\u06a9\u06cc\u062c\u0632 \u06c1\u06cc\u06ba Supabase\u060c MCP SDK (\u0645\u0631\u062d\u0644\u06c1 2 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627)\u060c \u0627\u0648\u0631 LLM \u0627\u0646 \u067e\u0679 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 zod validation \u067e\u06cc\u06a9\u06cc\u062c\u06d4<\/p>\n<pre><code class=\"language-shell\">npm install @modelcontextprotocol\/sdk zod @supabase\/supabase-js\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>.gitignore<\/code> \u0641\u0627\u0626\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba <code>node_modules<\/code> Git \u06a9\u0648 \u0622\u067e \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u0646\u06c1 \u062f\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0644\u06a9\u06be \u06a9\u0631 \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u062d\u0627\u0644\u062a \u06a9\u0648 \u06af\u0679 \u0679\u0631\u06cc\u06a9\u0631 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c \u0622\u067e \u0646\u06d2 \u062e\u0648\u062f \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u0622\u067e \u0627\u067e\u0646\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0642\u0637\u06c1 \u0622\u063a\u0627\u0632 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-1-create-a-nodejs-server\">\u0645\u0631\u062d\u0644\u06c1 1: Node.js \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06c1\u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 Node.js \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4 \u06cc\u06c1 \u0627\u0633 \u0637\u0631\u062d \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u0641\u0627\u0626\u0644 \u0628\u0646\u0627 \u06a9\u0631 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2: <code>server.js<\/code> \u0627\u0648\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u06cc\u06ba:<\/p>\n<pre><code class=\"language-javascript\">import { createServer } from \"node:http\";\n\nconst port = Number(process.env.PORT ?? 8787);\n\nconst httpServer = createServer(async (req, res) => {\n\n    console.log(`${req.method} ${req.url}`);\n\n    if (!req.url) {\n\n        res.writeHead(400).end(\"Missing URL\");\n\n        return;\n\n    }\n\n    const url = new URL(req.url, `http:\/\/${req.headers.host ?? \"localhost\"}`);\n\n    res.writeHead(404).end(\"Not Found\");\n\n});\n\nhttpServer.listen(port, () => {\n    console.log(`Todo MCP server listening on http:\/\/localhost:${port}, press Ctrl+C to stop`);\n});\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u0646\u0648\u0688 \u0633\u0631\u0648\u0631 \u06c1\u06d2 \u062c\u0633\u06d2 MCP \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06cc\u0633 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 MCP \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 MCP \u0633\u0631\u0648\u0631 SDK \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e \u06a9\u0648 \u062f\u0648 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2: \u0648\u06c1 \u0679\u0648\u0644 \u062c\u0648 LLM \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u06d2 \u06af\u0627\u060c \u0627\u0648\u0631 \u0648\u06c1 UI \u0627\u0648\u0631 \u0648\u0633\u0627\u0626\u0644 \u062c\u0648 LLM \u0627\u0633\u06d2 \u0631\u06cc\u0646\u0688\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0679\u0648\u0644\u0632 \u0627\u0648\u0631 UI \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 MCP \u0633\u0631\u0648\u0631 SDK \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-2-setting-up-mcp-server-sdk\">\u0645\u0631\u062d\u0644\u06c1 2: MCP \u0633\u0631\u0648\u0631 SDK \u0633\u06cc\u0679 \u0627\u067e \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>MCP \u0633\u0631\u0648\u0631 \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0627\u0648\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u06af\u06cc:<\/p>\n<ul>\n<li>\n<p>\u0679\u0648\u0644\u0632: \u0641\u0639\u0627\u0644\u06cc\u062a \u062c\u0648 MCP \u0633\u0631\u0648\u0631 LLM \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c LLM \u06a9\u0648 \u0633\u0631\u0648\u0631 \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0646\u0638\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u0639\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u06cc\u0633\u06d2 \u06a9\u0633\u06cc API \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u0627\u060c \u062d\u0633\u0627\u0628 \u06a9\u062a\u0627\u0628 \u06a9\u0631\u0646\u0627\u060c \u06cc\u0627 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0648\u0633\u0627\u0626\u0644 (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc): \u0688\u06cc\u0679\u0627 \u062c\u0648 MCP \u0633\u0631\u0648\u0631 LLM \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u06cc\u0626\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c LLM Chat UI \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0627\u06cc\u0645\u0628\u06cc\u0688\u0688 \u0641\u0631\u06cc\u0645 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0633\u06a9\u06cc\u0645\u0627\u060c \u06cc\u0627 HTML UI\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0622\u067e \u06a9\u0648\u0688 \u06a9\u06cc \u062f\u0631\u062c \u0630\u06cc\u0644 \u0644\u0627\u0626\u0646 \u06a9\u0648 \u0633\u0631\u0648\u0631 \u0688\u0627\u0679 \u062c\u06d2 \u0627\u06cc\u0633 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0627\u0648\u067e\u0631\u06cc \u062d\u0635\u06d2 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631 \u06a9\u06d2 \u0633\u0631\u0648\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">import { McpServer } from \"@modelcontextprotocol\/sdk\/server\/mcp.js\";\n\nfunction createTodoServer() {\n    const server = new McpServer({ name: \"todo-app\", version: \"0.1.0\" });\n    return server;\n}\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0641\u0646\u06a9\u0634\u0646 \u062f\u0633\u062a\u062e\u0637 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0679\u0648\u0644\u0632 \u0627\u0648\u0631 \u0648\u0633\u0627\u0626\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-javascript\">server.registerTool(\n    \"NAME\",\n    {},\n    async (args, meta) => { }\n);\n<\/code><\/pre>\n<p>\u0622\u067e \u0679\u0648\u0644 \u0631\u062c\u0633\u0679\u0631\u0627\u0631 \u06a9\u0648 MCP \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0648\u0686 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 LLM \u0627\u0633\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0646\u0627\u0645 \u0627\u0648\u0631 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u0633 \u0679\u0648\u0644 \u0645\u06cc\u06ba \u062f\u0644\u0627\u0626\u0644 \u0627\u0648\u0631 \u0646\u062a\u0627\u0626\u062c \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0688\u06cc\u0679\u0627 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0622\u062c \u06c1\u0645 \u062a\u06cc\u0646 \u0622\u0633\u0627\u0646 \u0679\u0648\u0644\u0632 \u0628\u0646\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p>\u0633\u0628 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba<\/p>\n<\/li>\n<li>\n<p>\u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0633\u0628 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a<\/p>\n<\/li>\n<\/ul>\n<p>\u0648\u06c1 \u0633\u0628 \u06a9\u0686\u06be \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06d2 \u0646\u0638\u0631 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06af\u0644\u06d2 \u062d\u0635\u06d2 \u0645\u06cc\u06ba \u06c1\u0645 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0646 \u0633\u0628 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0644\u06a9\u06be\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<h3 id=\"heading-step-3-add-mcp-server-tools-create-and-add-a-todo\">\u0645\u0631\u062d\u0644\u06c1 3: \u0627\u06cc\u0645 \u0633\u06cc \u067e\u06cc \u0633\u0631\u0648\u0631 \u0679\u0648\u0644\u0632 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba &#8211; \u0679\u0648\u0688\u0648 \u0628\u0646\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06c1\u0645\u06cc\u06ba \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u06c1\u06cc\u0631\u0627 \u067e\u06be\u06cc\u0631\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u0635\u0641 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0635\u0641\u06cc\u06ba \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0633\u0631\u0648\u0631 \u067e\u0631 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">let todos = [];\/\/ outside the createTodoServer function block\nlet nextId = 1; \/\/ outside the createTodoServer function block (this is a mock id for your todos)\n<\/code><\/pre>\n<p>\u0635\u0641\u0648\u06ba \u06a9\u06d2 \u0628\u0639\u062f \u06c1\u0645\u06cc\u06ba \u062f\u0648 \u0645\u0632\u06cc\u062f \u0633\u067e\u0648\u0631\u0679 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2: \u067e\u06c1\u0644\u0627 \u0679\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0646\u0646\u062f\u06c1 \u06c1\u06d2 \u062c\u0648 LLM \u0633\u06d2 \u0645\u062a\u0648\u0642\u0639 \u0627\u0646 \u067e\u0679 \u0642\u0633\u0645\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0627\u0648\u067e\u0631\u06cc \u062d\u0635\u06d2 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0632\u0648\u0688 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u06a9\u0648 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">import { z } from \"zod\";\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e \u0627\u0633\u06d2 \u062f\u0631\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u062f\u062f\u06af\u0627\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0644\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 LLM \u06a9\u0648 \u0628\u062a\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u06cc\u0627 \u0627\u0645\u06cc\u062f \u0631\u06a9\u06be\u06cc \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const addTodoInputSchema = {\n    title: z.string().min(1),\n}; \/\/ outside the createTodoServer function block\n<\/code><\/pre>\n<p>\u0627\u06af\u0644\u0627\u060c \u06c1\u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0631\u06cc\u0679\u0631\u0646 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062c\u0648 \u062f\u0648\u0633\u0631\u06d2 \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0644 \u06a9\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2 \u062a\u0627\u06a9\u06c1 \u06c1\u0645\u0627\u0631\u06d2 \u0679\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u0648\u0646\u06cc\u0641\u0627\u0626\u06cc\u0688 \u0631\u06cc\u0679\u0631\u0646 \u0641\u0646\u06a9\u0634\u0646 \u06c1\u0648\u06d4<\/p>\n<pre><code class=\"language-javascript\">const replyWithTodos = (message) => ({\n    content: message ? [{ type: 'text', text: message }] : [],\n    structuredContent: { tasks: todos },\n}); \/\/outside the createTodoServer function block\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e \u0627\u06cc\u0688 \u0679\u0648 \u0688\u0648 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0633\u0631\u0648\u0631 \u06a9\u06d2 createTodoServer \u0641\u0646\u06a9\u0634\u0646 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u06ba \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>return server<\/code>:<\/p>\n<pre><code class=\"language-javascript\">server.registerTool(\n    'add_todo',\n    {\n        title: 'Add todo',\n        description: 'Creates a todo item with the given title.',\n        inputSchema: addTodoInputSchema,\n        _meta: {\n            'openai\/toolInvocation\/invoking': 'Adding todo',\n            'openai\/toolInvocation\/invoked': 'Added todo',\n        },\n    },\n    async (args) => {\n        const title = args?.title?.trim?.() ?? '';\n        if (!title) return replyWithTodos('Missing title.');\n        const todo = { id: `todo-${nextId++}`, title, completed: false };\n        todos = [...todos, todo];\n        return replyWithTodos(`${todo.title}`);\n    },\n); \/\/ inside the createTodoServer function block\n<\/code><\/pre>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0628\u0627\u0644\u0627 \u06a9\u0648\u0688 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u0646\u06d2 \u0679\u0648\u0644 \u06a9\u06d2 \u0646\u0627\u0645 \u0627\u0648\u0631 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u06a9 \u0627\u0646 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0633\u0631\u0646\u06cc \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u06c1\u0645 \u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0634\u0646\u0627\u062e\u062a \u06a9\u06cc \u062a\u06be\u06cc\u06d4 \u06cc\u06c1\u0627\u06ba \u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062f\u0631\u0633\u062a \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0646\u0627\u0646\u0627\u06d4<\/p>\n<p>\u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u0645\u06cc\u06ba \u0646\u06d2 \u0627\u06cc\u06a9 \u0639\u0646\u0648\u0627\u0646\u060c \u062a\u0641\u0635\u06cc\u0644\u060c inputSchema \u0627\u0648\u0631 _meta \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 OpenAI \u06a9\u0648 \u0631\u06cc\u0646\u0688\u0631 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4 \u0622\u067e \u06a9\u0648 \u0627\u06cc\u06a9 \u0631\u06cc\u0646\u0688\u0631 \u0645\u0644\u062a\u0627 \u06c1\u06d2\u060c \u0679\u0648\u0688\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u06cc\u0633\u0627 \u06a9\u06c1 AI \u0627\u0646\u06c1\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062c\u0628 \u06cc\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u060c \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0679\u0648\u0688\u0648 \u06a9\u0627 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u0648\u0631\u0698\u0646 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<p>\u0627\u0633\u06cc \u0648\u0642\u062a\u060c \u06c1\u0645 \u0646\u06d2 \u0627\u06cc\u06a9 \u0627\u0646 \u067e\u0679 \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 LLM \u06a9\u0648 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648 \u06a9\u06c1 \u062c\u0628 \u0648\u06c1 \u0633\u0631\u0648\u0631 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u06d2 \u06a9\u06cc\u0627 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06c1\u0645 \u0646\u06d2 \u0627\u06cc\u06a9 \u0631\u0633\u067e\u0627\u0646\u0633 \u06c1\u06cc\u0644\u067e\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0627\u0633\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u0648 \u062f\u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u06a9 \u0645\u0646\u0638\u0645 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u06cc\u0627 \u06a9\u0631\u0646\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 LLM \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-step-4-list-todos-from-mcp-server\">\u0645\u0631\u062d\u0644\u06c1 4: MCP \u0633\u0631\u0648\u0631 \u067e\u0631 \u0679\u0648\u0688\u0648 \u0644\u0633\u0679 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u067e\u0646\u06d2 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u0633\u0627\u062f\u06c1 \u0641\u06c1\u0631\u0633\u062a \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u06a9\u0627\u0645 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0630\u06cc\u0644 \u06a9\u0627 \u06a9\u0648\u0688 \u0648\u06c1\u06cc \u0646\u0627\u0645\u060c \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627\u060c \u0627\u0648\u0631 \u0648\u0636\u0627\u062d\u062a \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06d2 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u067e\u06c1\u0644\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u062a\u06be\u06d2\u06d4 \u06c1\u0645 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u06ba todos \u06a9\u0648 \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0686\u06be\u0644\u0627 \u0645\u062f\u062f\u06af\u0627\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0628\u06be\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u06a9\u0648\u0688 createTodoServer \u0641\u0646\u06a9\u0634\u0646 \u0628\u0644\u0627\u06a9 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0644\u06a9\u06be\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-javascript\">server.registerTool(\n  'list_todos',\n  {\n    title: 'List todos',\n    description: 'Lists all todo items.',\n    _meta: {\n      'openai\/toolInvocation\/invoking': 'Listing todos',\n      'openai\/toolInvocation\/invoked': 'Listed todos',\n    },\n  },\n  async () => {\n    return replyWithTodos();\n  },\n);\n<\/code><\/pre>\n<h3 id=\"heading-step-5-add-todo-complete-functions\">\u0645\u0631\u062d\u0644\u06c1 5: \u0679\u0648\u0688\u0648 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u0633\u06cc \u06a9\u0627\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u0627\u0633 \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0679\u0648\u0644 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0679\u0648 \u0688\u0648 ID \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u062f\u06c1 \u06a9\u0627\u0645 \u06a9\u0648 \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 createTodoServer \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u062f\u062f\u06af\u0627\u0631 \u0641\u0646\u06a9\u0634\u0646 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-javascript\">const completeTodoInputSchema = {\n    id: z.string().min(1),\n};\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e createTodoServer \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">server.registerTool(\n    'complete_todo',\n\n    {\n        title: 'Complete todo',\n        description: 'Marks a todo as done by id.',\n        inputSchema: completeTodoInputSchema,\n        _meta: {\n            'openai\/toolInvocation\/invoking': 'Completing todo',\n            'openai\/toolInvocation\/invoked': 'Completed todo',\n        },\n    },\n\n    async (args) => {\n        const id = args?.id;\n        if (!id) return replyWithTodos('Missing todo id.');\n        const todo = todos.find((task) => task.id === id);\n        if (!todo) {\n            return replyWithTodos(`Todo ${id} was not found.`);\n        }\n        todos = todos.map((task) =>\n            task.id === id ? { ...task, completed: true } : task,\n        );\n        return replyWithTodos(`Completed \"${todo.title}\".`);\n    },\n);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0679\u0648\u0644 \u0648\u06c1\u06cc \u0641\u0646\u06a9\u0634\u0646 \u0688\u06cc\u0641\u06cc\u0646\u06cc\u0634\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0679\u0648 \u0688\u0648 \u0644\u0633\u0679 \u06c1\u06d2\u060c \u062c\u0628\u06a9\u06c1 \u0627\u0636\u0627\u0641\u06cc \u06af\u0627\u0631\u0688\u0632 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 LLM \u0646\u06d2 \u0627\u06cc\u06a9 ID \u0648\u0627\u067e\u0633 \u06a9\u06cc \u06c1\u06d2 \u0627\u0648\u0631 ID \u062f\u0631\u0633\u062a \u06c1\u06d2\u06d4 \u0686\u0648\u0646\u06a9\u06c1 LLM hallucinatory \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u062f\u0627\u0646\u0648\u06ba \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0686\u06cc\u06a9 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0627\u0628 \u0622\u067e \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u06af\u0679 \u0645\u06cc\u06ba \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u062f\u0631\u062e\u062a \u0645\u06cc\u06ba \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-6-connect-your-mcp-server-with-the-nodejs-server\">\u0645\u0631\u062d\u0644\u06c1 6: MCP \u0633\u0631\u0648\u0631 \u06a9\u0648 Node.js \u0633\u0631\u0648\u0631 \u0633\u06d2 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u0628 \u062c\u0628 \u06a9\u06c1 \u06c1\u0645 \u0646\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc \u0645\u0631\u06a9\u0632\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u0644\u06a9\u06be \u062f\u06cc \u06c1\u06d2\u060c \u06c1\u0645\u06cc\u06ba MCP \u0633\u0631\u0648\u0631 \u06a9\u0648 Node.js HTTP \u0633\u0631\u0648\u0631 \u0633\u06d2 \u062c\u0648\u0691\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0633\u0679\u0631\u06cc\u0645 \u0627\u06cc\u0628\u0644 \u0641\u0646\u06a9\u0634\u0646\u0632 \u0627\u0648\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0648\u0688 \u0645\u06cc\u06ba MCP \u0633\u0631\u0648\u0631\u0632 \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0632\u06cc\u062f \u0641\u0639\u0627\u0644\u06cc\u062a \u0634\u0627\u0645\u0644 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0627\u0633\u06d2 \u0645\u0631\u062d\u0644\u06c1 1 \u0645\u06cc\u06ba \u0633\u0631\u0648\u0631 \u06a9\u0648\u0688 \u06a9\u06d2 \u0645\u062a\u0628\u0627\u062f\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c StreamableHTTPServerTransport \u0641\u0646\u06a9\u0634\u0646 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">import { StreamableHTTPServerTransport } from \"@modelcontextprotocol\/sdk\/server\/streamableHttp.js\";\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06a9\u0648\u0688 \u06a9\u0648 \u06a9\u0627\u067e\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0633\u0631\u0648\u0631 \u06a9\u0648\u0688 \u0633\u06d2 \u0628\u062f\u0644 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u0645\u06cc\u06ba \u0622\u067e \u06a9\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u06d2 \u0633\u0631\u0648\u0631 \u06a9\u06cc \u0633\u0627\u062e\u062a \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-javascript\">const port = Number(process.env.PORT ?? 8787);\nconst MCP_PATH = '\/mcp';\n\nconst httpServer = createServer(async (req, res) => {\n    if (!req.url) {\n        res.writeHead(400).end('Missing URL');\n        return;\n    }\n\n    const url = new URL(req.url, `http:\/\/${req.headers.host ?? 'localhost'}`);\n\n    \/\/ handle the options call for the endpoint\n    if (req.method === 'OPTIONS' && url.pathname === MCP_PATH) {\n        res.writeHead(204, {\n            'Access-Control-Allow-Origin': '*',\n            'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',\n            'Access-Control-Allow-Headers': 'content-type, mcp-session-id',\n            'Access-Control-Expose-Headers': 'Mcp-Session-Id',\n        });\n        res.end();\n        return;\n    }\n\n    \/\/ handles normal get method for the main link\n    if (req.method === 'GET' && url.pathname === '\/') {\n        res.writeHead(200, { 'content-type': 'text\/plain' }).end('Todo MCP server');\n        return;\n    }\n    \/\/ here you are handling your MCP calls with streamable HTTP\n    const MCP_METHODS = new Set(['POST', 'GET', 'DELETE']);\n    if (url.pathname === MCP_PATH && req.method && MCP_METHODS.has(req.method)) {\n        res.setHeader('Access-Control-Allow-Origin', '*');\n        res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id');\n        const server = createTodoServer();\n        const transport = new StreamableHTTPServerTransport({\n            sessionIdGenerator: undefined, \/\/ stateless mode\n            enableJsonResponse: true,\n        });\n        res.on('close', () => {\n            transport.close();\n            server.close();\n        });\n        try {\n            await server.connect(transport);\n            await transport.handleRequest(req, res);\n        } catch (error) {\n            console.error('Error handling MCP request:', error);\n            if (!res.headersSent) {\n                res.writeHead(500).end('Internal server error');\n            }\n        }\n        return;\n    }\n    res.writeHead(404).end('Not Found');\n});\n\nhttpServer.listen(port, () => {\n    console.log(\n        `Todo MCP server listening on http:\/\/localhost:${port}${MCP_PATH}`,\n    );\n});\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0648\u0688 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0628\u0646\u06cc\u0627\u062f\u06cc HTTP \u0633\u0631\u0648\u0631 \u0686\u0644\u0627 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0633\u0631\u0648\u0631 \/mcp \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u06a9\u0648 MCP \u06a9\u0644\u0627\u0626\u0646\u0679\u0633 \u06a9\u06d2 \u0633\u0627\u0645\u0646\u06d2 \u0644\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06c1\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0627\u0633\u0679\u06cc\u0679 \u0644\u06cc\u0633 MCP \u0633\u0631\u0648\u0631 \u0633\u06d2 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 Streamable HTTP \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0628 \u0622\u067e \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u06af\u0679 \u0645\u06cc\u06ba \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633\u06d2 \u062f\u0631\u062e\u062a \u0645\u06cc\u06ba \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-how-to-test-your-mcp-server\">\u0627\u067e\u0646\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u0628 \u0622\u067e \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648\u0688 \u06a9\u0648 \u0686\u0644\u0627 \u06a9\u0631 \u0627\u067e\u0646\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0633\u0627\u062e\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-shell\">node server.js\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0645\u0627\u0646\u0688 \u067e\u0686\u06be\u0644\u06d2 \u0645\u0631\u062d\u0644\u06d2 \u0645\u06cc\u06ba \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0633\u0631\u0648\u0631 \u06a9\u0648 \u0686\u0644\u0627\u0626\u06d2 \u06af\u06cc\u06d4 \u06cc\u06c1 \u0627\u0633\u06d2 \u0686\u0627\u0644\u0648 \u06a9\u0631 \u062f\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u0633\u0646\u0627\u0626\u06cc \u062f\u06cc\u06ba \u06af\u06cc\u06d4 <code>http:\/\/localhost:8787\/mcp<\/code>. server.js \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u06a9\u0648 \u0627\u0646\u0633\u067e\u06a9\u0679\u0631 \u06a9\u0648 \u06a9\u06be\u0648\u0644\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0679\u0648\u0644 \u062c\u0648 \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0631\u062c\u0633\u0679\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u06a9\u06d2 \u0622\u062e\u0631\u06cc \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u0627\u0648\u0631 \u0679\u0648\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">npx @modelcontextprotocol\/inspector@latest --server-url http:\/\/localhost:8787\/mcp --transport http\n<\/code><\/pre>\n<p>\u067e\u0686\u06be\u0644\u06cc \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u0633\u06d2 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc \u06a9\u06c1 \u0622\u067e MCP \u0633\u06d2 \u062c\u0691\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u0627\u0633\u06d2 \u0686\u0644\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0646\u0633\u067e\u06a9\u0679\u0631 UI \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4 Validator UI \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 MCP \u0633\u0631\u0648\u0631 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0633\u0631\u0648\u0633 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0646 \u067e\u0679 \u0627\u0648\u0631 \u0622\u0624\u0679 \u067e\u0679\u0633 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0633\u06cc \u0679\u0648\u0644 \u06a9\u0648 \u062c\u0627\u0646\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u067e\u06c1\u0644\u06d2 \u0633\u0631\u0648\u0631 \u0633\u06d2 \u062c\u0691 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u067e\u06be\u0631 \u0679\u0648\u0644 \u06a9\u0648 \u062f\u06cc\u06a9\u06be \u0627\u0648\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u0648\u0688 \u06a9\u0648 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0622\u067e \u0633\u0648\u0686 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba \u06af\u06d2 \u06a9\u06c1 \u0622\u067e LLM \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e\u0646\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u06a9\u0633 \u0642\u0633\u0645 \u06a9\u0627 UI \u062f\u06a9\u06be\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u0628\u06be\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u0635\u0631\u0641 LLM \u0686\u06cc\u0679 \u062c\u0648\u0627\u0628\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0679\u06cc\u06a9\u0633\u0679 \u0646\u062a\u0627\u0626\u062c \u0645\u0644\u06cc\u06ba \u06af\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c UI \u0628\u0646\u0627\u0646\u0627 \u0622\u067e \u06a9\u06d2 LLM \u06a9\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0645 \u0627\u06af\u0644\u06d2 \u062d\u0635\u06d2 \u0645\u06cc\u06ba \u0627\u0633 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h2 id=\"heading-level-2-how-to-build-the-ui\">\u0644\u06cc\u0648\u0644 2: \u0627\u067e\u0646\u0627 UI \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u067e\u0686\u06be\u0644\u06d2 \u06a9\u0648\u0688 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2\u060c \u0645\u06cc\u06ba \u0646\u06d2 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 MCP \u0633\u0631\u0648\u0631 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0648 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0627\u06cc\u067e \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0634\u0627\u0646 \u0632\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0628 \u0622\u0626\u06cc\u06d2 RegisterResource \u0679\u0648\u0644 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06d2 UI \u0648\u0633\u0627\u0626\u0644 \u06a9\u0648 \u0631\u062c\u0633\u0679\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 ChatGPT \u0627\u0646\u06c1\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<p>\u0648\u0633\u0627\u0626\u0644 MCP \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062f\u06c1 LLM \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0688\u06cc\u0679\u0627 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e LLM \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e\u0646\u06d2 UI \u06a9\u0627 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0627\u0633\u06d2 \u0627\u067e\u0646\u06cc \u0686\u06cc\u0679 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06cc \u0688\u06cc\u0679\u0627 \u0627\u0648\u0631 \u0648\u06cc\u062c\u0679\u0633 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>UI \u06a9\u0648 \u0634\u06cc\u0626\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 HTML \u0641\u0627\u0626\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0648 MCP \u0633\u0631\u0648\u0631 \u0688\u06cc\u0679\u0627 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u0648\u0631 MCP \u0633\u0631\u0648\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u06cc\u06a9 \u0646\u0626\u06cc HTML \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-1-create-the-html-file-to-show-the-ui\">\u0645\u0631\u062d\u0644\u06c1 1: UI \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 HTML \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u067e\u06c1\u0644\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062f\u06c1 TodoHTML \u0627\u06cc\u06a9 HTML \u0641\u0627\u0626\u0644 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2 \u062c\u0648 \u0633\u0631\u0648\u0631 \u0627\u0648\u0631 ChatGPT UI \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631 \u0633\u06a9\u06d2\u06d4 UI \u06a9\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/07\/1783716680_863_Supabase-Auth-\u0627\u0648\u0631-DigitalOcean-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u0631\u062a\u06d2-\u06c1\u0648\u0626\u06d2-\u0627\u067e\u0646\u0627-MCP.png\" alt=\"ChatGPT \u06a9\u06d2 \u0627\u0646\u062f\u0631 UI \u0627\u0633\u0679\u0627\u0626\u0644\u0632\" style=\"display:block;margin:0 auto\" width=\"908\" height=\"702\" loading=\"lazy\" title=\"\"><\/p>\n<p>\u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0622\u067e \u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u062f\u06cc\u06a9\u06be\u0627 \u062a\u06be\u0627 \u062c\u06cc\u0633\u0627 UI \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc: <code>public\/todo-widget.html<\/code> \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0633\u0679\u0631\u06a9\u0686\u0631\u0688 \u06a9\u0648\u0688 \u0627\u0633 \u0637\u0631\u062d \u0644\u06a9\u06be\u06cc\u06ba:<\/p>\n<pre><code class=\"language-html\"><\/p>\n<p>    <meta charset=\"utf-8\"\/><br \/>\n    <title>\u0633\u0628 \u06a9\u0686\u06be \u062a\u06cc\u0627\u0631 \u06c1\u06d2\u06d4<\/title><\/p>\n<p>    <main><br \/>\n    <\/main><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LLM \u0627\u0648\u0631 AI \u0645\u0642\u0627\u0645\u06cc \u0627\u06cc\u067e\u0633 \u06a9\u06cc \u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c \u0627\u06cc\u067e \u06a9\u06cc \u0627\u06cc\u06a9 \u0646\u0626\u06cc \u0642\u0633\u0645 \u0627\u0628\u06be\u0631 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0642\u0627\u0645\u06cc \u0648\u06cc\u0628 \u06cc\u0627 \u0645\u0648\u0628\u0627\u0626\u0644 \u0627\u06cc\u067e \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 AI \u0686\u06cc\u0679 (\u062c\u06cc\u0633\u06d2 ChatGPT) \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2\u06d4 \u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0633\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0634\u0631\u0648\u0639 \u0633\u06d2 \u0645\u0627\u0688\u0644 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u067e\u0631\u0648\u0679\u0648\u06a9\u0648\u0644 (MCP) \u0633\u0631\u0648\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u062c\u0633 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":26546,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-26545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/26545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=26545"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/26545\/revisions"}],"predecessor-version":[{"id":26547,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/26545\/revisions\/26547"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media\/26546"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=26545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=26545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=26545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}