Repository: ComposioHQ/composio
Pull request #1449: fix: remove modelcontextprotocol dependency and deprecate composio cli mcp commands
Author: login: utkarsh-dixit
Created: 2025-03-16T12:03:55Z | Merged: 2025-03-16T12:49:00Z



Diff:
diff --git a/js/package.dist.json b/js/package.dist.json
index 04ea00c4a5..66e404cb13 100644
--- a/js/package.dist.json
+++ b/js/package.dist.json
@@ -40,7 +40,7 @@
     "open": "^8.4.0",
     "@hey-api/client-axios": "^0.2.3",
     "resolve-package-path": "^4.0.0",
-    "composiohq-modelcontextprotocol-typescript-sdk": "^1.6.1"    
+    "@composio/mcp": "1.0.3-0"
   },
   "devDependencies": {},
   "publishConfig": {
diff --git a/js/package.json b/js/package.json
index e956771c25..f99978d934 100644
--- a/js/package.json
+++ b/js/package.json
@@ -43,7 +43,7 @@
     "openai": ">=4.50.0"
   },
   "dependencies": {
-    "composiohq-modelcontextprotocol-typescript-sdk": "^1.6.1",
+    "@composio/mcp": "1.0.3-0",
     "@types/body-parser": "^1.19.5",
     "axios": "^1.7.2",
     "body-parser": "^1.20.3",
@@ -108,5 +108,10 @@
   "engineStrict": true,
   "engines": {
     "node": ">=18.0.0"
+  },
+  "pnpm": {
+    "overrides": {
+      "@composio/mcp": "link:../mcp/dist"
+    }
   }
 }
diff --git a/js/pnpm-lock.yaml b/js/pnpm-lock.yaml
index 2c9ef22b58..b949e73a51 100644
--- a/js/pnpm-lock.yaml
+++ b/js/pnpm-lock.yaml
@@ -4,6 +4,9 @@ settings:
   autoInstallPeers: true
   excludeLinksFromLockfile: false
 
+overrides:
+  '@composio/mcp': link:../mcp/dist
+
 importers:
 
   .:
@@ -14,6 +17,9 @@ importers:
       '@cloudflare/workers-types':
         specifier: '>=4.20240718.0'
         version: 4.20240806.0
+      '@composio/mcp':
+        specifier: link:../mcp/dist
+        version: link:../mcp/dist
       '@langchain/core':
         specifier: '>=0.2.18'
         version: 0.2.21(langchain@0.2.13(axios@1.7.2)(handlebars@4.7.8)(ignore@5.3.2)(openai@4.55.1(zod@3.23.8))(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4)))(openai@4.55.1(zod@3.23.8))
@@ -41,9 +47,6 @@ importers:
       commander:
         specifier: ^12.1.0
         version: 12.1.0
-      composiohq-modelcontextprotocol-typescript-sdk:
-        specifier: ^1.6.1
-        version: 1.6.1
       express:
         specifier: ^4.21.2
         version: 4.21.2
@@ -1269,10 +1272,6 @@ packages:
     resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
     engines: {node: '>= 0.6'}
 
-  accepts@2.0.0:
-    resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
-    engines: {node: '>= 0.6'}
-
   acorn-import-attributes@1.9.5:
     resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
     peerDependencies:
@@ -1429,10 +1428,6 @@ packages:
     resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
     engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
 
-  body-parser@2.1.0:
-    resolution: {integrity: sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==}
-    engines: {node: '>=18'}
-
   brace-expansion@1.1.11:
     resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
 
@@ -1611,10 +1606,6 @@ packages:
   commondir@1.0.1:
     resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
 
-  composiohq-modelcontextprotocol-typescript-sdk@1.6.1:
-    resolution: {integrity: sha512-YUxbfdsXcboeBM/2eF7qlFQ9b+njQRSWbeRC7yLtLs/TsBd/F9aWgRHOpTO4eLUs53HYmLfDEmqEWw/vHajpWQ==}
-    engines: {node: '>=18'}
-
   concat-map@0.0.1:
     resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
 
@@ -1629,10 +1620,6 @@ packages:
     resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
     engines: {node: '>= 0.6'}
 
-  content-disposition@1.0.0:
-    resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
-    engines: {node: '>= 0.6'}
-
   content-type@1.0.5:
     resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
     engines: {node: '>= 0.6'}
@@ -1643,18 +1630,10 @@ packages:
   cookie-signature@1.0.6:
     resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
 
-  cookie-signature@1.2.2:
-    resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
-    engines: {node: '>=6.6.0'}
-
   cookie@0.7.1:
     resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
     engines: {node: '>= 0.6'}
 
-  cors@2.8.5:
-    resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
-    engines: {node: '>= 0.10'}
-
   create-jest@29.7.0:
     resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -1663,9 +1642,6 @@ packages:
   create-require@1.1.1:
     resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
 
-  cross-fetch@4.1.0:
-    resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
-
   cross-spawn@7.0.3:
     resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
     engines: {node: '>= 8'}
@@ -1698,24 +1674,6 @@ packages:
       supports-color:
         optional: true
 
-  debug@4.3.6:
-    resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
-    engines: {node: '>=6.0'}
-    peerDependencies:
-      supports-color: '*'
-    peerDependenciesMeta:
-      supports-color:
-        optional: true
-
-  debug@4.4.0:
-    resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
-    engines: {node: '>=6.0'}
-    peerDependencies:
-      supports-color: '*'
-    peerDependenciesMeta:
-      supports-color:
-        optional: true
-
   decamelize@1.2.0:
     resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
     engines: {node: '>=0.10.0'}
@@ -1941,19 +1899,6 @@ packages:
     resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==}
     engines: {node: '>=14.18'}
 
-  eventsource-parser@3.0.0:
-    resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==}
-    engines: {node: '>=18.0.0'}
-
-  eventsource@3.0.5:
-    resolution: {integrity: sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==}
-    engines: {node: '>=18.0.0'}
-
-  eventsource@https://codeload.github.com/EventSource/eventsource/tar.gz/db562b82fffb58b77cd6bb817a835db5c97a2398:
-    resolution: {tarball: https://codeload.github.com/EventSource/eventsource/tar.gz/db562b82fffb58b77cd6bb817a835db5c97a2398}
-    version: 2.0.2
-    engines: {node: '>=12.0.0'}
-
   execa@5.1.1:
     resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
     engines: {node: '>=10'}
@@ -1970,20 +1915,10 @@ packages:
     resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
 
-  express-rate-limit@7.5.0:
-    resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
-    engines: {node: '>= 16'}
-    peerDependencies:
-      express: ^4.11 || 5 || ^5.0.0-beta.1
-
   express@4.21.2:
     resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
     engines: {node: '>= 0.10.0'}
 
-  express@5.0.1:
-    resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==}
-    engines: {node: '>= 18'}
-
   external-editor@3.1.0:
     resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
     engines: {node: '>=4'}
@@ -2025,10 +1960,6 @@ packages:
     resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
     engines: {node: '>= 0.8'}
 
-  finalhandler@2.0.0:
-    resolution: {integrity: sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==}
-    engines: {node: '>= 0.8'}
-
   find-up@4.1.0:
     resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
     engines: {node: '>=8'}
@@ -2075,10 +2006,6 @@ packages:
     resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
     engines: {node: '>= 0.6'}
 
-  fresh@2.0.0:
-    resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
-    engines: {node: '>= 0.8'}
-
   fs-extra@10.1.0:
     resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
     engines: {node: '>=12'}
@@ -2215,14 +2142,6 @@ packages:
     resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
     engines: {node: '>=0.10.0'}
 
-  iconv-lite@0.5.2:
-    resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==}
-    engines: {node: '>=0.10.0'}
-
-  iconv-lite@0.6.3:
-    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
-    engines: {node: '>=0.10.0'}
-
   ignore@5.3.2:
     resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
     engines: {node: '>= 4'}
@@ -2300,9 +2219,6 @@ packages:
     resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
     engines: {node: '>=0.12.0'}
 
-  is-promise@4.0.0:
-    resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
-
   is-reference@1.2.1:
     resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
 
@@ -2833,17 +2749,9 @@ packages:
     resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
     engines: {node: '>= 0.6'}
 
-  media-typer@1.1.0:
-    resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
-    engines: {node: '>= 0.8'}
-
   merge-descriptors@1.0.3:
     resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
 
-  merge-descriptors@2.0.0:
-    resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
-    engines: {node: '>=18'}
-
   merge-stream@2.0.0:
     resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
 
@@ -2863,18 +2771,10 @@ packages:
     resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
     engines: {node: '>= 0.6'}
 
-  mime-db@1.53.0:
-    resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==}
-    engines: {node: '>= 0.6'}
-
   mime-types@2.1.35:
     resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
     engines: {node: '>= 0.6'}
 
-  mime-types@3.0.0:
-    resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==}
-    engines: {node: '>= 0.6'}
-
   mime@1.6.0:
     resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
     engines: {node: '>=4'}
@@ -2956,10 +2856,6 @@ packages:
     resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
     engines: {node: '>= 0.6'}
 
-  negotiator@1.0.0:
-    resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
-    engines: {node: '>= 0.6'}
-
   neo-async@2.6.2:
     resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
 
@@ -3006,10 +2902,6 @@ packages:
     engines: {node: ^14.16.0 || >=16.10.0}
     hasBin: true
 
-  object-assign@4.1.1:
-    resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
-    engines: {node: '>=0.10.0'}
-
   object-inspect@1.13.4:
     resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
     engines: {node: '>= 0.4'}
@@ -3137,10 +3029,6 @@ packages:
   path-to-regexp@0.1.12:
     resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
 
-  path-to-regexp@8.2.0:
-    resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
-    engines: {node: '>=16'}
-
   pathe@1.1.2:
     resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
 
@@ -3165,10 +3053,6 @@ packages:
     resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
     engines: {node: '>= 6'}
 
-  pkce-challenge@4.1.0:
-    resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==}
-    engines: {node: '>=16.20.0'}
-
   pkg-dir@4.2.0:
     resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
     engines: {node: '>=8'}
@@ -3228,10 +3112,6 @@ packages:
     resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
     engines: {node: '>=0.6'}
 
-  qs@6.14.0:
-    resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
-    engines: {node: '>=0.6'}
-
   queue-microtask@1.2.3:
     resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
 
@@ -3246,10 +3126,6 @@ packages:
     resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
     engines: {node: '>= 0.8'}
 
-  raw-body@3.0.0:
-    resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
-    engines: {node: '>= 0.8'}
-
   rc9@2.1.2:
     resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
 
@@ -3341,10 +3217,6 @@ packages:
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
-  router@2.1.0:
-    resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==}
-    engines: {node: '>= 18'}
-
   run-async@3.0.0:
     resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
     engines: {node: '>=0.12.0'}
@@ -3390,10 +3262,6 @@ packages:
     resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
     engines: {node: '>= 0.8.0'}
 
-  send@1.1.0:
-    resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==}
-    engines: {node: '>= 18'}
-
   serialize-javascript@4.0.0:
     resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
 
@@ -3404,10 +3272,6 @@ packages:
     resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
     engines: {node: '>= 0.8.0'}
 
-  serve-static@2.1.0:
-    resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==}
-    engines: {node: '>= 18'}
-
   setprototypeof@1.2.0:
     resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
 
@@ -3691,10 +3555,6 @@ packages:
     resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
     engines: {node: '>= 0.6'}
 
-  type-is@2.0.0:
-    resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==}
-    engines: {node: '>= 0.6'}
-
   typedoc@0.25.13:
     resolution: {integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==}
     engines: {node: '>= 16'}
@@ -3920,11 +3780,6 @@ packages:
     peerDependencies:
       zod: ^3.23.3
 
-  zod-to-json-schema@3.24.3:
-    resolution: {integrity: sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==}
-    peerDependencies:
-      zod: ^3.24.1
-
   zod@3.23.8:
     resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
 
@@ -5228,11 +5083,6 @@ snapshots:
       mime-types: 2.1.35
       negotiator: 0.6.3
 
-  accepts@2.0.0:
-    dependencies:
-      mime-types: 3.0.0
-      negotiator: 1.0.0
-
   acorn-import-attributes@1.9.5(acorn@8.14.0):
     dependencies:
       acorn: 8.14.0
@@ -5425,20 +5275,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  body-parser@2.1.0:
-    dependencies:
-      bytes: 3.1.2
-      content-type: 1.0.5
-      debug: 4.4.0
-      http-errors: 2.0.0
-      iconv-lite: 0.5.2
-      on-finished: 2.4.1
-      qs: 6.14.0
-      raw-body: 3.0.0
-      type-is: 2.0.0
-    transitivePeerDependencies:
-      - supports-color
-
   brace-expansion@1.1.11:
     dependencies:
       balanced-match: 1.0.2
@@ -5619,23 +5455,6 @@ snapshots:
 
   commondir@1.0.1: {}
 
-  composiohq-modelcontextprotocol-typescript-sdk@1.6.1:
-    dependencies:
-      content-type: 1.0.5
-      cors: 2.8.5
-      cross-fetch: 4.1.0
-      eventsource: 3.0.5
-      eventsource-old: eventsource@https://codeload.github.com/EventSource/eventsource/tar.gz/db562b82fffb58b77cd6bb817a835db5c97a2398
-      express: 5.0.1
-      express-rate-limit: 7.5.0(express@5.0.1)
-      pkce-challenge: 4.1.0
-      raw-body: 3.0.0
-      zod: 3.23.8
-      zod-to-json-schema: 3.24.3(zod@3.23.8)
-    transitivePeerDependencies:
-      - encoding
-      - supports-color
-
   concat-map@0.0.1: {}
 
   confbox@0.1.7: {}
@@ -5646,25 +5465,14 @@ snapshots:
     dependencies:
       safe-buffer: 5.2.1
 
-  content-disposition@1.0.0:
-    dependencies:
-      safe-buffer: 5.2.1
-
   content-type@1.0.5: {}
 
   convert-source-map@2.0.0: {}
 
   cookie-signature@1.0.6: {}
 
-  cookie-signature@1.2.2: {}
-
   cookie@0.7.1: {}
 
-  cors@2.8.5:
-    dependencies:
-      object-assign: 4.1.1
-      vary: 1.1.2
-
   create-jest@29.7.0(@types/node@20.14.2)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@20.14.2)(typescript@5.4.5)):
     dependencies:
       '@jest/types': 29.6.3
@@ -5682,12 +5490,6 @@ snapshots:
 
   create-require@1.1.1: {}
 
-  cross-fetch@4.1.0:
-    dependencies:
-      node-fetch: 2.7.0
-    transitivePeerDependencies:
-      - encoding
-
   cross-spawn@7.0.3:
     dependencies:
       path-key: 3.1.1
@@ -5715,14 +5517,6 @@ snapshots:
     dependencies:
       ms: 2.1.2
 
-  debug@4.3.6:
-    dependencies:
-      ms: 2.1.2
-
-  debug@4.4.0:
-    dependencies:
-      ms: 2.1.3
-
   decamelize@1.2.0: {}
 
   dedent@1.5.3: {}
@@ -5905,14 +5699,6 @@ snapshots:
 
   eventsource-parser@1.1.2: {}
 
-  eventsource-parser@3.0.0: {}
-
-  eventsource@3.0.5:
-    dependencies:
-      eventsource-parser: 3.0.0
-
-  eventsource@https://codeload.github.com/EventSource/eventsource/tar.gz/db562b82fffb58b77cd6bb817a835db5c97a2398: {}
-
   execa@5.1.1:
     dependencies:
       cross-spawn: 7.0.3
@@ -5947,10 +5733,6 @@ snapshots:
       jest-message-util: 29.7.0
       jest-util: 29.7.0
 
-  express-rate-limit@7.5.0(express@5.0.1):
-    dependencies:
-      express: 5.0.1
-
   express@4.21.2:
     dependencies:
       accepts: 1.3.8
@@ -5987,43 +5769,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  express@5.0.1:
-    dependencies:
-      accepts: 2.0.0
-      body-parser: 2.1.0
-      content-disposition: 1.0.0
-      content-type: 1.0.5
-      cookie: 0.7.1
-      cookie-signature: 1.2.2
-      debug: 4.3.6
-      depd: 2.0.0
-      encodeurl: 2.0.0
-      escape-html: 1.0.3
-      etag: 1.8.1
-      finalhandler: 2.0.0
-      fresh: 2.0.0
-      http-errors: 2.0.0
-      merge-descriptors: 2.0.0
-      methods: 1.1.2
-      mime-types: 3.0.0
-      on-finished: 2.4.1
-      once: 1.4.0
-      parseurl: 1.3.3
-      proxy-addr: 2.0.7
-      qs: 6.13.0
-      range-parser: 1.2.1
-      router: 2.1.0
-      safe-buffer: 5.2.1
-      send: 1.1.0
-      serve-static: 2.1.0
-      setprototypeof: 1.2.0
-      statuses: 2.0.1
-      type-is: 2.0.0
-      utils-merge: 1.0.1
-      vary: 1.1.2
-    transitivePeerDependencies:
-      - supports-color
-
   external-editor@3.1.0:
     dependencies:
       chardet: 0.7.0
@@ -6078,18 +5823,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  finalhandler@2.0.0:
-    dependencies:
-      debug: 2.6.9
-      encodeurl: 1.0.2
-      escape-html: 1.0.3
-      on-finished: 2.4.1
-      parseurl: 1.3.3
-      statuses: 2.0.1
-      unpipe: 1.0.0
-    transitivePeerDependencies:
-      - supports-color
-
   find-up@4.1.0:
     dependencies:
       locate-path: 5.0.0
@@ -6128,8 +5861,6 @@ snapshots:
 
   fresh@0.5.2: {}
 
-  fresh@2.0.0: {}
-
   fs-extra@10.1.0:
     dependencies:
       graceful-fs: 4.2.11
@@ -6266,14 +5997,6 @@ snapshots:
     dependencies:
       safer-buffer: 2.1.2
 
-  iconv-lite@0.5.2:
-    dependencies:
-      safer-buffer: 2.1.2
-
-  iconv-lite@0.6.3:
-    dependencies:
-      safer-buffer: 2.1.2
-
   ignore@5.3.2: {}
 
   import-fresh@3.3.0:
@@ -6338,8 +6061,6 @@ snapshots:
 
   is-number@7.0.0: {}
 
-  is-promise@4.0.0: {}
-
   is-reference@1.2.1:
     dependencies:
       '@types/estree': 1.0.6
@@ -6891,12 +6612,8 @@ snapshots:
 
   media-typer@0.3.0: {}
 
-  media-typer@1.1.0: {}
-
   merge-descriptors@1.0.3: {}
 
-  merge-descriptors@2.0.0: {}
-
   merge-stream@2.0.0: {}
 
   merge2@1.4.1: {}
@@ -6910,16 +6627,10 @@ snapshots:
 
   mime-db@1.52.0: {}
 
-  mime-db@1.53.0: {}
-
   mime-types@2.1.35:
     dependencies:
       mime-db: 1.52.0
 
-  mime-types@3.0.0:
-    dependencies:
-      mime-db: 1.53.0
-
   mime@1.6.0: {}
 
   mimic-fn@2.1.0: {}
@@ -6978,8 +6689,6 @@ snapshots:
 
   negotiator@0.6.3: {}
 
-  negotiator@1.0.0: {}
-
   neo-async@2.6.2: {}
 
   node-domexception@1.0.0: {}
@@ -7015,8 +6724,6 @@ snapshots:
       pathe: 1.1.2
       ufo: 1.5.3
 
-  object-assign@4.1.1: {}
-
   object-inspect@1.13.4: {}
 
   ohash@1.1.3: {}
@@ -7139,8 +6846,6 @@ snapshots:
 
   path-to-regexp@0.1.12: {}
 
-  path-to-regexp@8.2.0: {}
-
   pathe@1.1.2: {}
 
   perfect-debounce@1.0.0: {}
@@ -7159,8 +6864,6 @@ snapshots:
 
   pirates@4.0.6: {}
 
-  pkce-challenge@4.1.0: {}
-
   pkg-dir@4.2.0:
     dependencies:
       find-up: 4.1.0
@@ -7216,10 +6919,6 @@ snapshots:
     dependencies:
       side-channel: 1.1.0
 
-  qs@6.14.0:
-    dependencies:
-      side-channel: 1.1.0
-
   queue-microtask@1.2.3: {}
 
   randombytes@2.1.0:
@@ -7235,13 +6934,6 @@ snapshots:
       iconv-lite: 0.4.24
       unpipe: 1.0.0
 
-  raw-body@3.0.0:
-    dependencies:
-      bytes: 3.1.2
-      http-errors: 2.0.0
-      iconv-lite: 0.6.3
-      unpipe: 1.0.0
-
   rc9@2.1.2:
     dependencies:
       defu: 6.1.4
@@ -7343,12 +7035,6 @@ snapshots:
       '@rollup/rollup-win32-x64-msvc': 4.28.1
       fsevents: 2.3.3
 
-  router@2.1.0:
-    dependencies:
-      is-promise: 4.0.0
-      parseurl: 1.3.3
-      path-to-regexp: 8.2.0
-
   run-async@3.0.0: {}
 
   run-parallel@1.2.0:
@@ -7397,23 +7083,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  send@1.1.0:
-    dependencies:
-      debug: 4.4.0
-      destroy: 1.2.0
-      encodeurl: 2.0.0
-      escape-html: 1.0.3
-      etag: 1.8.1
-      fresh: 0.5.2
-      http-errors: 2.0.0
-      mime-types: 2.1.35
-      ms: 2.1.3
-      on-finished: 2.4.1
-      range-parser: 1.2.1
-      statuses: 2.0.1
-    transitivePeerDependencies:
-      - supports-color
-
   serialize-javascript@4.0.0:
     dependencies:
       randombytes: 2.1.0
@@ -7431,15 +7100,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  serve-static@2.1.0:
-    dependencies:
-      encodeurl: 2.0.0
-      escape-html: 1.0.3
-      parseurl: 1.3.3
-      send: 1.1.0
-    transitivePeerDependencies:
-      - supports-color
-
   setprototypeof@1.2.0: {}
 
   shebang-command@2.0.0:
@@ -7721,12 +7381,6 @@ snapshots:
       media-typer: 0.3.0
       mime-types: 2.1.35
 
-  type-is@2.0.0:
-    dependencies:
-      content-type: 1.0.5
-      media-typer: 1.1.0
-      mime-types: 3.0.0
-
   typedoc@0.25.13(typescript@5.4.5):
     dependencies:
       lunr: 2.3.9
@@ -7950,8 +7604,4 @@ snapshots:
     dependencies:
       zod: 3.23.8
 
-  zod-to-json-schema@3.24.3(zod@3.23.8):
-    dependencies:
-      zod: 3.23.8
-
   zod@3.23.8: {}
diff --git a/js/src/cli/mcp.ts b/js/src/cli/mcp.ts
index f67729a129..3cfeb395c8 100644
--- a/js/src/cli/mcp.ts
+++ b/js/src/cli/mcp.ts
@@ -1,32 +1,6 @@
 /* eslint-disable no-console */
 import chalk from "chalk";
 import { Command } from "commander";
-import fs from "fs";
-import os from "os";
-import path from "path";
-
-import { getOpenAPIClient } from "../sdk/utils/config";
-
-type ErrorWithMessage = {
-  message: string;
-};
-
-interface MCPConfig {
-  command: string;
-  args: string[];
-}
-
-interface WindsurfConfig {
-  mcpServers: {
-    [key: string]: MCPConfig;
-  };
-}
-
-interface ClaudeConfig {
-  mcpServers: {
-    [key: string]: MCPConfig;
-  };
-}
 
 export default class MCPCommand {
   private program: Command;
@@ -43,153 +17,10 @@ export default class MCPCommand {
     command.action(this.handleAction.bind(this));
   }
 
-  private async handleAction(
-    url: string,
-    options: { client: string }
-  ): Promise<void> {
-    getOpenAPIClient();
-    const clientType = options.client;
-
-    // Validate client type
-    if (!["claude", "windsurf"].includes(clientType)) {
-      console.log(chalk.red("❌ Error: Invalid client type specified"));
-      console.log(chalk.yellow("Please use one of these supported clients:"));
-      console.log(chalk.yellow("- claude"));
-      console.log(chalk.yellow("- windsurf"));
-      return;
-    }
-
-    try {
-      console.log(chalk.cyan("📝 Configuration Details:"));
-      console.log(`   URL: ${chalk.green(url)}`);
-      console.log(`   Client: ${chalk.green(clientType)}\n`);
-
-      const mcpUrl = url;
-      const command = `composio --sse "${mcpUrl}"`;
-
-      console.log(chalk.cyan("💾 Saving configurations..."));
-
-      this.saveMcpConfig(url, clientType, mcpUrl, command);
-
-      console.log(
-        chalk.cyan(
-          `\n🚀 All done! Please restart ${clientType} for changes to take effect\n`
-        )
-      );
-    } catch (error) {
-      console.log(chalk.red("\n❌ Error occurred while setting up MCP:"));
-      console.log(chalk.red(`   ${(error as ErrorWithMessage).message}`));
-      console.log(
-        chalk.yellow(
-          "\nPlease try again or contact support if the issue persists.\n"
-        )
-      );
-      return;
-    }
-  }
-
-  private saveMcpConfig(
-    url: string,
-    clientType: string,
-    mcpUrl: string,
-    command: string
-  ): void {
-    const config: MCPConfig = {
-      command: "npx",
-      args: ["-y", "composio-core@rc", "transport", "--sse", mcpUrl],
-    };
-
-    const homeDir = os.homedir();
-
-    const platformPaths = {
-      win32: {
-        baseDir:
-          process.env.APPDATA || path.join(homeDir, "AppData", "Roaming"),
-        vscodePath: path.join("Code", "User", "globalStorage"),
-      },
-      darwin: {
-        baseDir: path.join(homeDir, "Library", "Application Support"),
-        vscodePath: path.join("Code", "User", "globalStorage"),
-      },
-      linux: {
-        baseDir: process.env.XDG_CONFIG_HOME || path.join(homeDir, ".config"),
-        vscodePath: path.join("Code/User/globalStorage"),
-      },
-    };
-
-    const platform = process.platform as keyof typeof platformPaths;
-
-    // Check if platform is supported
-    if (!platformPaths[platform]) {
-      console.log(chalk.yellow(`\n⚠️ Platform ${platform} is not supported.`));
-      return;
-    }
-
-    const { baseDir } = platformPaths[platform];
-
-    // Define client paths using the platform-specific base directories
-    const clientPaths: {
-      [key: string]: { configDir: string; configPath: string };
-    } = {
-      claude: {
-        configDir: path.join(baseDir, "Claude"),
-        configPath: path.join(baseDir, "Claude", "claude_desktop_config.json"),
-      },
-      windsurf: {
-        configDir: path.join(homeDir, ".codeium", "windsurf"),
-        configPath: path.join(
-          homeDir,
-          ".codeium",
-          "windsurf",
-          "mcp_config.json"
-        ),
-      },
-    };
-
-    if (!clientPaths[clientType]) {
-      console.log(chalk.yellow(`\n⚠️ Client ${clientType} is not supported.`));
-      return;
-    }
-
-    const { configDir, configPath } = clientPaths[clientType];
-
-    if (!fs.existsSync(configDir)) {
-      fs.mkdirSync(configDir, { recursive: true });
-    }
-
-    if (clientType === "claude") {
-      let claudeConfig: ClaudeConfig = { mcpServers: {} };
-      if (fs.existsSync(configPath)) {
-        try {
-          claudeConfig = JSON.parse(fs.readFileSync(configPath, "utf8"));
-        } catch (error) {
-          console.log(chalk.yellow("⚠️  Creating new config file"));
-        }
-      }
-
-      // Ensure mcpServers exists
-      if (!claudeConfig.mcpServers) claudeConfig.mcpServers = {};
-
-      // Update only the mcpServers entry
-      claudeConfig.mcpServers[url] = config;
-
-      fs.writeFileSync(configPath, JSON.stringify(claudeConfig, null, 2));
-
-      console.log(chalk.green(`✅ Configuration saved to: ${configPath}`));
-    } else if (clientType === "windsurf") {
-      let windsurfConfig: WindsurfConfig = { mcpServers: {} };
-      if (fs.existsSync(configPath)) {
-        try {
-          windsurfConfig = JSON.parse(fs.readFileSync(configPath, "utf8"));
-          if (!windsurfConfig.mcpServers) windsurfConfig.mcpServers = {};
-        } catch (error) {
-          console.log(chalk.yellow("⚠️  Creating new config file"));
-        }
-      }
-
-      windsurfConfig.mcpServers[url] = config;
-      fs.writeFileSync(configPath, JSON.stringify(windsurfConfig, null, 2));
-      console.log(chalk.green(`✅ Configuration saved to: ${configPath}`));
-    }
+  private async handleAction(): Promise<void> {
+    console.log(chalk.red("❌ Error: The 'mcp' command is deprecated"));
+    console.log(chalk.yellow("Please use @composio/mcp instead:"));
+    console.log(chalk.cyan("npx @composio/mcp --help"));
+    return;
   }
 }
diff --git a/js/src/cli/src/sseTransport.ts b/js/src/cli/src/sseTransport.ts
deleted file mode 100644
index 1281d415bc..0000000000
--- a/js/src/cli/src/sseTransport.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-import { JSONRPCRequest } from "composiohq-modelcontextprotocol-typescript-sdk/types";
-import { z } from "zod";
-
-export async function getSSEClient(
-  sseUrl: string,
-  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-  logStderr: (...args: any[]) => void
-) {
-  const { SSEClientTransport } = await import(
-    "composiohq-modelcontextprotocol-typescript-sdk/client/sse.js"
-  );
-  // Lazy import Client and StdioServerTransport to avoid ESM issues
-  const { Client } = await import(
-    "composiohq-modelcontextprotocol-typescript-sdk/client/index.js"
-  );
-  let sseTransport = new SSEClientTransport(new URL(sseUrl));
-
-  const sseClient = new Client(
-    { name: "mcp-transport", version: "1.0.0" },
-    {
-      capabilities: {
-        tools: {},
-      },
-    }
-  );
-  const originalRequest = sseClient.request;
-  let isConnecting = false;
-  let connectionPromise: Promise<void> | null = null;
-
-  const connect = async () => {
-    if (isConnecting) {
-      return connectionPromise;
-    }
-
-    isConnecting = true;
-    connectionPromise = (async () => {
-      const maxRetries = 5;
-      let retryCount = 0;
-
-      while (retryCount < maxRetries) {
-        try {
-          try {
-            await sseClient.close();
-            await sseTransport.close();
-          } catch (error) {
-            // Ignore close errors
-          }
-          sseTransport = new SSEClientTransport(new URL(sseUrl));
-
-          sseTransport.onerror = async (err: Error) => {
-            logStderr("SSE error:", err);
-          };
-
-          sseTransport.onclose = async () => {
-            logStderr("SSE connection closed");
-            try {
-              await connect();
-            } catch (error) {
-              logStderr("Failed to reconnect after connection close:", error);
-              process.exit(1);
-            }
-          };
-
-          await sseClient.connect(sseTransport);
-          return; // Success - exit the retry loop
-        } catch (error) {
-          retryCount++;
-          logStderr(
-            `SSE connection error (attempt ${retryCount}/${maxRetries}):`,
-            error
-          );
-
-          if (retryCount === maxRetries) {
-            throw error;
-          }
-
-          // Exponential backoff before retry
-          const backoffMs = Math.min(Math.pow(2, retryCount) * 1000, 30000); // Cap at 30 seconds
-          logStderr(`Retrying in ${backoffMs / 1000} seconds...`);
-          await new Promise((resolve) => setTimeout(resolve, backoffMs));
-        }
-      }
-    })().finally(() => {
-      isConnecting = false;
-      connectionPromise = null;
-    });
-
-    return connectionPromise;
-  };
-
-  sseClient.request = async (request: JSONRPCRequest, schema: z.ZodSchema) => {
-    const maxRequestRetries = 3;
-    let requestRetryCount = 0;
-
-    while (requestRetryCount < maxRequestRetries) {
-      try {
-        const output = await originalRequest.call(sseClient, request, schema);
-        return output;
-      } catch (error) {
-        // Only retry for network-related errors
-        const isNetworkError =
-          error instanceof Error &&
-          (error.message.includes("network") ||
-            error.message.includes("connection") ||
-            error.message.includes("timeout") ||
-            error.message.includes("ECONNREFUSED") ||
-            error.message.includes("ECONNRESET") ||
-            error.message.includes("ETIMEDOUT"));
-
-        if (!isNetworkError) {
-          throw error; // Don't retry for non-network errors
-        }
-
-        requestRetryCount++;
-        logStderr(
-          `Network request error (attempt ${requestRetryCount}/${maxRequestRetries}):`,
-          error
-        );
-
-        if (requestRetryCount === maxRequestRetries) {
-          throw error;
-        }
-
-        // Try to reconnect before retrying the request
-        try {
-          await connect();
-        } catch (connectError) {
-          logStderr("Failed to reconnect:", connectError);
-          throw error; // Throw original error if reconnect fails
-        }
-
-        // Add small delay before retry
-        await new Promise((resolve) => setTimeout(resolve, 1000));
-      }
-    }
-
-    throw new Error("Request failed after all retries");
-  };
-
-  await connect();
-
-  return { sseClient, originalRequest, sseTransport };
-}
diff --git a/js/src/cli/sseTransport.ts b/js/src/cli/sseTransport.ts
index eaf0741df6..07ecd34604 100644
--- a/js/src/cli/sseTransport.ts
+++ b/js/src/cli/sseTransport.ts
@@ -11,109 +11,7 @@
 
 /* eslint-disable no-console */
 import { Command } from "commander";
-import { z } from "zod";
-// Use dynamic import for SSEClientTransport to avoid ESM issues
-import {
-  JSONRPCMessage,
-  JSONRPCRequest,
-} from "composiohq-modelcontextprotocol-typescript-sdk/types.js";
-import { getSSEClient } from "./src/sseTransport";
-
-/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-const log = (...args: any[]) => console.log("[composio-transport]", ...args);
-/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-const logStderr = (...args: any[]) =>
-  console.error("[composio-transport]", ...args);
-
-// If needed, adjust this logic to fetch version from package.json or a default
-function getVersion(): string {
-  return "1.0.0";
-}
-
-async function sseToStdio(sseUrl: string): Promise<void> {
-  logStderr("Starting...");
-  logStderr("MCP Transport utility");
-  logStderr(`  - sse: ${sseUrl}`);
-  logStderr("Connecting to SSE...");
-
-  const { StdioServerTransport } = await import(
-    "composiohq-modelcontextprotocol-typescript-sdk/server/stdio.js"
-  );
-  const { Server } = await import(
-    "composiohq-modelcontextprotocol-typescript-sdk/server/index.js"
-  );
-  const { sseClient, originalRequest, sseTransport } = await getSSEClient(
-    sseUrl,
-    logStderr
-  );
-
-  logStderr("SSE connected");
-  logStderr(
-    "getServerCapabilities " + JSON.stringify(sseClient.getServerCapabilities())
-  );
-  const stdioServer = new Server(
-    sseClient.getServerVersion() ?? {
-      name: "mcp-transport",
-      version: getVersion(),
-    }
-  );
-  const stdioTransport = new StdioServerTransport();
-  await stdioServer.connect(stdioTransport);
-
-  const wrapResponse = (req: JSONRPCRequest, payload: object) => ({
-    jsonrpc: req.jsonrpc || "2.0",
-    id: req.id,
-    ...payload,
-  });
-
-  stdioServer.transport!.onmessage = async (message: JSONRPCMessage) => {
-    if ("method" in message && "id" in message) {
-      logStderr("Stdio → SSE:", message);
-      const req = message as JSONRPCRequest;
-      let result;
-      try {
-        result = await sseClient.request(req, z.any());
-      } catch (err) {
-        logStderr("Request error:", err);
-        const errorCode =
-          err && typeof err === "object" && "code" in err
-            ? /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-              (err as any).code
-            : -32000;
-        let errorMsg =
-          err && typeof err === "object" && "message" in err
-            ? /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-              (err as any).message
-            : "Internal error";
-        const prefix = `MCP error ${errorCode}:`;
-        if (errorMsg.startsWith(prefix)) {
-          errorMsg = errorMsg.slice(prefix.length).trim();
-        }
-        const errorResp = wrapResponse(req, {
-          error: {
-            code: errorCode,
-            message: errorMsg,
-          },
-        });
-        process.stdout.write(JSON.stringify(errorResp) + "\n");
-        return;
-      }
-      const response = wrapResponse(
-        req,
-        result.hasOwnProperty("error")
-          ? { error: { ...result.error } }
-          : { result: { ...result } }
-      );
-      logStderr("Response:", response);
-      process.stdout.write(JSON.stringify(response) + "\n");
-    } else {
-      logStderr("SSE → Stdio:", message);
-      process.stdout.write(JSON.stringify(message) + "\n");
-    }
-  };
-
-  logStderr("Stdio server listening");
-}
+/* eslint-disable no-console */
 
 export default class SSETransportCommand {
   private program: Command;
@@ -137,6 +35,22 @@ export default class SSETransportCommand {
   }
 
   private async handleSseToStdio(sseUrl: string): Promise<void> {
-    await sseToStdio(sseUrl);
+    try {
+      // The symlink in node_modules points to mcp/dist, so we need to use cli/commands
+      const commands = require("@composio/mcp/cli/commands/index.js");
+      const startCommand =
+        commands.startCommand || commands.default?.startCommand;
+
+      if (!startCommand || !startCommand.handler) {
+        throw new Error("Start command or handler not found");
+      }
+
+      // Use the handler from start.ts
+      /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
+      await startCommand.handler({ url: sseUrl, _: [], $0: "" } as any);
+    } catch (error) {
+      console.error("Error importing MCP commands:", error);
+      process.exit(1);
+    }
   }
 }
diff --git a/mcp/README.md b/mcp/README.md
new file mode 100644
index 0000000000..7138f30271
--- /dev/null
+++ b/mcp/README.md
@@ -0,0 +1,26 @@
+<p align="center">
+  <picture width="200">
+    <source media="(prefers-color-scheme: dark)" width="172" srcset="https://github.com/ComposioHQ/composio/blob/fix/docs-images/js/docs/assets/Composio-Logo-dark.svg">
+    <source media="(prefers-color-scheme: light)" width="172" srcset="https://github.com/ComposioHQ/composio/blob/fix/docs-images/js/docs/assets/Composio-Logo-light.svg">
+    <img alt="Composio Logo" width="172" src="https://github.com/ComposioHQ/composio/blob/fix/docs-images/js/docs/assets/Composio-Logo-dark.svg"/>
+  </picture>
+  <h3 align="center">MCP CLI: Model Context Protocol Command Line Interface</h3>
+  <p align="center">Supercharge your AI workflows with powerful context management</p>
+  <hr/>
+</p>
+
+# MCP CLI
+
+MCP CLI is a powerful command-line interface tool for interacting with the Model Context Protocol. It provides a seamless and efficient way to work with AI models and context management, enabling developers to build more intelligent and context-aware applications.
+
+## ✨ Features
+
+- **🔌 Easy Integration**: Seamlessly integrate with your existing AI workflows
+- **💻 Intuitive CLI**: Simple, powerful commands for managing model contexts
+- **🛡️ TypeScript Support**: Built with TypeScript for type safety and better developer experience
+- **🌐 Cross-platform**: Works flawlessly on Windows, macOS, and Linux
+- **🤖 Broad Model Support**: Compatible with Anthropic Claude, Cursor, Windsurf, and more
+
+## 🚀 Installation
+
+### Using npm
diff --git a/mcp/package.dist.json b/mcp/package.dist.json
index eff94d66a0..1ff172a829 100644
--- a/mcp/package.dist.json
+++ b/mcp/package.dist.json
@@ -1,11 +1,14 @@
 {
     "name": "@composio/mcp",
-    "version": "1.0.2",
+    "version": "1.0.3-0",
     "description": "MCP CLI tool",
     "main": "index.js",
     "bin": {
       "mcp": "./index"
     },
+    "exports": {
+      "./*": "./*"
+    },
     "scripts": {
       "build": "webpack --config webpack.config.js",
       "build:dev": "webpack --config webpack.config.js --mode development",
diff --git a/mcp/package.json b/mcp/package.json
index 38c97a61e4..6e9dab0f5d 100644
--- a/mcp/package.json
+++ b/mcp/package.json
@@ -1,10 +1,13 @@
 {
   "name": "@composio/mcp",
-  "version": "1.0.2",
+  "version": "1.0.3-0",
   "description": "MCP CLI tool",
   "main": "dist/index.js",
   "bin": {
-    "mcp": "dist/cli/index"
+    "mcp": "dist/index"
+  },
+  "exports": {
+    "./*": "./dist/*"
   },
   "scripts": {
     "build": "webpack --config webpack.config.js",
@@ -24,7 +27,6 @@
     "abortcontroller-polyfill": "^1.7.8",
     "chalk": "^4.1.2",
     "commander": "^13.1.0",
-    "composiohq-modelcontextprotocol-typescript-sdk": "1.6.1-1",
     "event-source-polyfill": "^1.0.31",
     "event-target-polyfill": "^0.0.4",
     "rollup-plugin-node-polyfills": "^0.2.1",
@@ -60,10 +62,5 @@
     "util": "^0.12.5",
     "webpack": "^5.98.0",
     "webpack-cli": "^6.0.1"
-  },
-  "pnpm": {
-    "overrides": {
-      "composiohq-modelcontextprotocol-typescript-sdk": "link:../../mcp-typescript-sdk"
-    }
   }
 }
diff --git a/mcp/src/cli/commands/index.ts b/mcp/src/cli/commands/index.ts
new file mode 100644
index 0000000000..660e99a8ae
--- /dev/null
+++ b/mcp/src/cli/commands/index.ts
@@ -0,0 +1,4 @@
+import startCommand from './start';
+import setupCommand from './setup';
+
+export { startCommand, setupCommand };
diff --git a/mcp/src/cli/commands/start.ts b/mcp/src/cli/commands/start.ts
index bc80888ca8..c8a1a52f00 100644
--- a/mcp/src/cli/commands/start.ts
+++ b/mcp/src/cli/commands/start.ts
@@ -32,13 +32,13 @@ async function sseToStdio(sseUrl: string): Promise<void> {
   const stdioServer = new Server(
     sseClient.getServerVersion()
       ? {
-        name: 'mcp-transport',
-        version: getVersion(),
-      }
+          name: 'mcp-transport',
+          version: getVersion(),
+        }
       : {
-        name: 'mcp-transport',
-        version: getVersion(),
-      }
+          name: 'mcp-transport',
+          version: getVersion(),
+        }
   );
   const stdioTransport = new StdioServerTransport();
   await stdioServer.connect(stdioTransport);
@@ -61,12 +61,12 @@ async function sseToStdio(sseUrl: string): Promise<void> {
         const errorCode =
           err && typeof err === 'object' && 'code' in err
             ? /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-            (err as any).code
+              (err as any).code
             : -32000;
         let errorMsg =
           err && typeof err === 'object' && 'message' in err
             ? /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
-            (err as any).message
+              (err as any).message
             : 'Internal error';
         const prefix = `MCP error ${errorCode}:`;
         if (errorMsg.startsWith(prefix)) {
diff --git a/mcp/webpack.config.js b/mcp/webpack.config.js
index ad115b435d..0e603218cd 100644
--- a/mcp/webpack.config.js
+++ b/mcp/webpack.config.js
@@ -2,8 +2,8 @@ const path = require('path');
 const webpack = require('webpack');
 const fs = require('fs');
 
-module.exports = {
-  entry: './src/cli/index.ts',
+// Common configuration for both bundles
+const commonConfig = {
   target: 'node',
   mode: 'production',
   module: {
@@ -38,6 +38,18 @@ module.exports = {
       'crypto': false
     }
   },
+  optimization: {
+    minimize: false
+  },
+  externals: {
+    'process/browser': 'commonjs process/browser'
+  }
+};
+
+// Main CLI bundle
+const mainConfig = {
+  ...commonConfig,
+  entry: './src/cli/index.ts',
   output: {
     filename: 'index',
     path: path.resolve(__dirname, 'dist'),
@@ -63,11 +75,29 @@ module.exports = {
         });
       }
     }
-  ],
-  optimization: {
-    minimize: false
+  ]
+};
+
+// Commands bundle for export
+const commandsConfig = {
+  ...commonConfig,
+  entry: './src/cli/commands/index.ts',
+  output: {
+    filename: 'index.js',
+    path: path.resolve(__dirname, 'dist/cli/commands'),
+    library: {
+      type: 'umd',
+      name: 'commands'
+    },
+    libraryTarget: 'umd',
+    globalObject: 'this'
   },
-  externals: {
-    'process/browser': 'commonjs process/browser'
-  }
-}; 
\ No newline at end of file
+  target: 'node',
+  plugins: [
+    new webpack.ProvidePlugin({
+      process: 'process'
+    })
+  ]
+};
+
+module.exports = [mainConfig, commandsConfig];
\ No newline at end of file


Reviews:
user: login: entelligence-ai-pr-reviews[bot]
state: COMMENTED
author_association: NONE
submitted_at: 2025-03-16T12:05:02Z
user: login: entelligence-ai-pr-reviews[bot]
state: COMMENTED
author_association: NONE
submitted_at: 2025-03-16T12:05:03Z
user: login: himanshu-dixit
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-16T12:45:47Z

Review comments:
diff_hunk: @@ -43,153 +17,10 @@ export default class MCPCommand {
     command.action(this.handleAction.bind(this));
   }
 
-  private async handleAction(
-    url: string,
-    options: { client: string }
-  ): Promise<void> {
-    getOpenAPIClient();
-    const clientType = options.client;
-
-    // Validate client type
-    if (!["claude", "windsurf"].includes(clientType)) {
-      console.log(chalk.red("❌ Error: Invalid client type specified"));
-      console.log(chalk.yellow("Please use one of these supported clients:"));
-      console.log(chalk.yellow("- claude"));
-      console.log(chalk.yellow("- windsurf"));
-      return;
-    }
-
-    try {
-      console.log(chalk.cyan("📝 Configuration Details:"));
-      console.log(`   URL: ${chalk.green(url)}`);
-      console.log(`   Client: ${chalk.green(clientType)}\n`);
-
-      const mcpUrl = url;
-      const command = `composio --sse "${mcpUrl}"`;
-
-      console.log(chalk.cyan("💾 Saving configurations..."));
-
-      this.saveMcpConfig(url, clientType, mcpUrl, command);
-
-      console.log(
-        chalk.cyan(
-          `\n🚀 All done! Please restart ${clientType} for changes to take effect\n`
-        )
-      );
-    } catch (error) {
-      console.log(chalk.red("\n❌ Error occurred while setting up MCP:"));
-      console.log(chalk.red(`   ${(error as ErrorWithMessage).message}`));
-      console.log(
-        chalk.yellow(
-          "\nPlease try again or contact support if the issue persists.\n"
-        )
-      );
-      return;
-    }
-  }
-
-  private saveMcpConfig(
-    url: string,
-    clientType: string,
-    mcpUrl: string,
-    command: string
-  ): void {
-    const config: MCPConfig = {
-      command: "npx",
-      args: ["-y", "composio-core@rc", "transport", "--sse", mcpUrl],
-    };
-
-    const homeDir = os.homedir();
-
-    const platformPaths = {
-      win32: {
-        baseDir:
-          process.env.APPDATA || path.join(homeDir, "AppData", "Roaming"),
-        vscodePath: path.join("Code", "User", "globalStorage"),
-      },
-      darwin: {
-        baseDir: path.join(homeDir, "Library", "Application Support"),
-        vscodePath: path.join("Code", "User", "globalStorage"),
-      },
-      linux: {
-        baseDir: process.env.XDG_CONFIG_HOME || path.join(homeDir, ".config"),
-        vscodePath: path.join("Code/User/globalStorage"),
-      },
-    };
-
-    const platform = process.platform as keyof typeof platformPaths;
-
-    // Check if platform is supported
-    if (!platformPaths[platform]) {
-      console.log(chalk.yellow(`\n⚠️ Platform ${platform} is not supported.`));
-      return;
-    }
-
-    const { baseDir } = platformPaths[platform];
-
-    // Define client paths using the platform-specific base directories
-    const clientPaths: {
-      [key: string]: { configDir: string; configPath: string };
-    } = {
-      claude: {
-        configDir: path.join(baseDir, "Claude"),
-        configPath: path.join(baseDir, "Claude", "claude_desktop_config.json"),
-      },
-      windsurf: {
-        configDir: path.join(homeDir, ".codeium", "windsurf"),
-        configPath: path.join(
-          homeDir,
-          ".codeium",
-          "windsurf",
-          "mcp_config.json"
-        ),
-      },
-    };
-
-    if (!clientPaths[clientType]) {
-      console.log(chalk.yellow(`\n⚠️ Client ${clientType} is not supported.`));
-      return;
-    }
-
-    const { configDir, configPath } = clientPaths[clientType];
-
-    if (!fs.existsSync(configDir)) {
-      fs.mkdirSync(configDir, { recursive: true });
-    }
-
-    if (clientType === "claude") {
-      let claudeConfig: ClaudeConfig = { mcpServers: {} };
-      if (fs.existsSync(configPath)) {
-        try {
-          claudeConfig = JSON.parse(fs.readFileSync(configPath, "utf8"));
-        } catch (error) {
-          console.log(chalk.yellow("⚠️  Creating new config file"));
-        }
-      }
-
-      // Ensure mcpServers exists
-      if (!claudeConfig.mcpServers) claudeConfig.mcpServers = {};
-
-      // Update only the mcpServers entry
-      claudeConfig.mcpServers[url] = config;
-
-      fs.writeFileSync(configPath, JSON.stringify(claudeConfig, null, 2));
-
-      console.log(chalk.green(`✅ Configuration saved to: ${configPath}`));
-    } else if (clientType === "windsurf") {
-      let windsurfConfig: WindsurfConfig = { mcpServers: {} };
-      if (fs.existsSync(configPath)) {
-        try {
-          windsurfConfig = JSON.parse(fs.readFileSync(configPath, "utf8"));
-          if (!windsurfConfig.mcpServers) windsurfConfig.mcpServers = {};
-        } catch (error) {
-          console.log(chalk.yellow("⚠️  Creating new config file"));
-        }
-      }
-
-      windsurfConfig.mcpServers[url] = config;
-      fs.writeFileSync(configPath, JSON.stringify(windsurfConfig, null, 2));
-      console.log(chalk.green(`✅ Configuration saved to: ${configPath}`));
-    }
+  private async handleAction(): Promise<void> {
+    console.log(chalk.red("❌ Error: The 'mcp' command is deprecated"));
+    console.log(chalk.yellow("Please use @composio/mcp instead:"));
+    console.log(chalk.cyan("npx @composio/mcp --help"));
+    return;
path: js/src/cli/mcp.ts
user: login: entelligence-ai-pr-reviews[bot]
body: The `handleAction` method signature was changed to remove parameters `url` and `options`, but the command still defines them as arguments which will be ignored, breaking the MCP URL configuration.
<!-- suggestion_start -->

<details>
<summary><strong>📝 Committable Code Suggestion</strong></summary>

> ‼️ Ensure you review the code suggestion before committing it to the branch. Make sure it replaces the highlighted code, contains no missing lines, and has no issues with indentation. 


```suggestion
    const command = this.program
      .command("mcp")
      .description("MCP command for app integration");

    command.action(this.handleAction.bind(this));
  }

  private async handleAction(): Promise<void> {
    console.log(chalk.red("❌ Error: The 'mcp' command is deprecated"));
    console.log(chalk.yellow("Please use @composio/mcp instead:"));
    console.log(chalk.cyan("npx @composio/mcp --help"));
    return;
  }
```
</details>
<!-- suggestion_end -->

created_at: 2025-03-16T12:05:02Z
author_association: NONE
diff_hunk: @@ -137,6 +35,22 @@ export default class SSETransportCommand {
   }
 
   private async handleSseToStdio(sseUrl: string): Promise<void> {
-    await sseToStdio(sseUrl);
+    try {
+      // The symlink in node_modules points to mcp/dist, so we need to use cli/commands
+      const commands = require("@composio/mcp/cli/commands/index.js");
+      const startCommand =
+        commands.startCommand || commands.default?.startCommand;
+
+      if (!startCommand || !startCommand.handler) {
+        throw new Error("Start command or handler not found");
+      }
+
+      // Use the handler from start.ts
+      /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
+      await startCommand.handler({ url: sseUrl, _: [], $0: "" } as any);
+    } catch (error) {
+      console.error("Error importing MCP commands:", error);
+      process.exit(1);
+    }
   }
path: js/src/cli/sseTransport.ts
user: login: entelligence-ai-pr-reviews[bot]
body: Using `require()` for dynamic imports can fail in ESM contexts. Should use dynamic `import()` for better compatibility.
<!-- suggestion_start -->

<details>
<summary><strong>📝 Committable Code Suggestion</strong></summary>

> ‼️ Ensure you review the code suggestion before committing it to the branch. Make sure it replaces the highlighted code, contains no missing lines, and has no issues with indentation. 


```suggestion
  private async handleSseToStdio(sseUrl: string): Promise<void> {
    try {
      // The symlink in node_modules points to mcp/dist, so we need to use cli/commands
      const commands = await import("@composio/mcp/cli/commands/index.js");
      const startCommand =
        commands.startCommand || commands.default?.startCommand;

      if (!startCommand || !startCommand.handler) {
        throw new Error("Start command or handler not found");
      }

      // Use the handler from start.ts
      /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
      await startCommand.handler({ url: sseUrl, _: [], $0: "" } as any);
    } catch (error) {
      console.error("Error importing MCP commands:", error);
      process.exit(1);
    }
  }
```
</details>
<!-- suggestion_end -->

created_at: 2025-03-16T12:05:03Z
author_association: NONE

PR comments:
user: login: vercel[bot]
created_at: 2025-03-16T12:03:59Z
body: [vc]: #/VRe6k10ALcoN10uajI0S7a+bhhyyWUDNfUOakyAV7o=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJjb21wb3NpbyIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiJjb21wb3Npby1naXQtZnQtbWNwLWNvbW1hbmQtZGVwcmVhY3RlLWNvbXBvc2lvLnZlcmNlbC5hcHAifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL2NvbXBvc2lvL2NvbXBvc2lvL0JZRkxjbzNGTFpvOFNUdExudktxYVdoQUdxYjgiLCJwcmV2aWV3VXJsIjoiY29tcG9zaW8tZ2l0LWZ0LW1jcC1jb21tYW5kLWRlcHJlYWN0ZS1jb21wb3Npby52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIn1dfQ==
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Comments | Updated (UTC) |
| :--- | :----- | :------ | :------- | :------ |
| **composio** | ✅ Ready ([Inspect](https://vercel.com/composio/composio/BYFLco3FLZo8STtLnvKqaWhAGqb8)) | [Visit Preview](https://composio-git-ft-mcp-command-depreacte-composio.vercel.app) | 💬 [**Add feedback**](https://vercel.live/open-feedback/composio-git-ft-mcp-command-depreacte-composio.vercel.app?via=pr-comment-feedback-link) | Mar 16, 2025 0:03am |


author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-16T12:06:00Z
body: This comment was generated by github-actions[bot]!
## JS SDK Coverage Report

📊 Coverage report for JS SDK can be found at the following URL:
https://pub-92e668239ab84bfd80ee07d61e9d2f40.r2.dev/coverage-13883126128/coverage/index.html

📁 Test report folder can be found at the following URL:
https://pub-92e668239ab84bfd80ee07d61e9d2f40.r2.dev/html-report-13883126128/html-report/report.html
author_association: CONTRIBUTOR