@amsterdamdatalabs/enact-extensions 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/README.md +96 -21
  2. package/dist/index.d.ts +5 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/install.d.ts +171 -1
  7. package/dist/install.d.ts.map +1 -1
  8. package/dist/install.js +402 -49
  9. package/dist/install.js.map +1 -1
  10. package/dist/internal/codex.d.ts.map +1 -1
  11. package/dist/internal/codex.js +7 -1
  12. package/dist/internal/codex.js.map +1 -1
  13. package/dist/internal/platform.d.ts +8 -0
  14. package/dist/internal/platform.d.ts.map +1 -1
  15. package/dist/internal/platform.js +46 -2
  16. package/dist/internal/platform.js.map +1 -1
  17. package/dist/provision.d.ts +30 -0
  18. package/dist/provision.d.ts.map +1 -0
  19. package/dist/provision.js +202 -0
  20. package/dist/provision.js.map +1 -0
  21. package/dist/validate/index.d.ts +44 -0
  22. package/dist/validate/index.d.ts.map +1 -1
  23. package/dist/validate/index.js +157 -0
  24. package/dist/validate/index.js.map +1 -1
  25. package/extensions/cmux/.agents/plugin.json +37 -0
  26. package/extensions/cmux/skills/cmux/SKILL.md +82 -0
  27. package/extensions/cmux/skills/cmux/agents/openai.yaml +4 -0
  28. package/extensions/cmux/skills/cmux/references/handles-and-identify.md +35 -0
  29. package/extensions/cmux/skills/cmux/references/panes-surfaces.md +37 -0
  30. package/extensions/cmux/skills/cmux/references/trigger-flash-and-health.md +23 -0
  31. package/extensions/cmux/skills/cmux/references/windows-workspaces.md +31 -0
  32. package/extensions/cmux/skills/cmux-vm-monitor/SKILL.md +122 -0
  33. package/extensions/cmux/skills/cmux-vm-monitor/agents/openai.yaml +4 -0
  34. package/extensions/cmux/skills/cmux-vm-monitor/references/cmux-commands.md +66 -0
  35. package/extensions/cmux/skills/cmux-vm-monitor/scripts/codex_vm_monitor.sh +45 -0
  36. package/extensions/cmux/skills/cmux-workspace/SKILL.md +93 -0
  37. package/extensions/dev-state/.agents/plugin.json +35 -0
  38. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +194 -0
  39. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +4 -0
  40. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +130 -0
  41. package/extensions/devops/.agents/plugin.json +36 -0
  42. package/extensions/devops/skills/azure-devops-cli/SKILL.md +431 -0
  43. package/extensions/devops/skills/azure-devops-cli/agents/openai.yaml +4 -0
  44. package/extensions/devops/skills/ci-pipeline-strategy/SKILL.md +217 -0
  45. package/extensions/devops/skills/ci-pipeline-strategy/agents/openai.yaml +4 -0
  46. package/extensions/enact-context/.agents/plugin.json +40 -0
  47. package/extensions/enact-context/.mcp.json +8 -0
  48. package/extensions/enact-context/README.md +25 -0
  49. package/extensions/enact-context/assets/icon.png +0 -0
  50. package/extensions/enact-context/assets/logo.png +0 -0
  51. package/extensions/enact-context/hooks/hooks.json +115 -0
  52. package/extensions/enact-context/skills/enact-context/SKILL.md +149 -0
  53. package/extensions/enact-context/skills/enact-context/scripts/install.sh +69 -0
  54. package/extensions/enact-factory/.agents/plugin.json +42 -0
  55. package/extensions/enact-factory/.mcp.json +8 -0
  56. package/extensions/enact-factory/assets/icon.png +0 -0
  57. package/extensions/enact-factory/assets/logo.png +0 -0
  58. package/extensions/enact-factory/hooks/user-prompt-submit.mjs +67 -0
  59. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +167 -0
  60. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +22 -0
  61. package/extensions/enact-operator/.agents/plugin.json +57 -0
  62. package/extensions/enact-operator/.app.json +3 -0
  63. package/extensions/enact-operator/.mcp.json +10 -0
  64. package/extensions/enact-operator/_taxonomy.md +86 -0
  65. package/extensions/enact-operator/agents/README.md +5 -0
  66. package/extensions/enact-operator/agents/architect.toml +25 -0
  67. package/extensions/enact-operator/agents/code-reviewer.toml +24 -0
  68. package/extensions/enact-operator/agents/critic.toml +30 -0
  69. package/extensions/enact-operator/agents/executor.toml +24 -0
  70. package/extensions/enact-operator/agents/explore.toml +23 -0
  71. package/extensions/enact-operator/agents/planner.toml +24 -0
  72. package/extensions/enact-operator/agents/verifier.toml +24 -0
  73. package/extensions/enact-operator/assets/icon.png +0 -0
  74. package/extensions/enact-operator/assets/logo.png +0 -0
  75. package/extensions/enact-operator/commands/doctor.md +39 -0
  76. package/extensions/enact-operator/commands/setup.md +51 -0
  77. package/extensions/enact-operator/hooks/hooks.json +146 -0
  78. package/extensions/enact-operator/skills/_variants.md +44 -0
  79. package/extensions/enact-operator/skills/ai-slop-cleaner/SKILL.md +50 -0
  80. package/extensions/enact-operator/skills/analyze/SKILL.md +91 -0
  81. package/extensions/enact-operator/skills/ask/SKILL.md +47 -0
  82. package/extensions/enact-operator/skills/autopilot/SKILL.md +170 -0
  83. package/extensions/enact-operator/skills/autoresearch-goal/SKILL.md +79 -0
  84. package/extensions/enact-operator/skills/cancel/SKILL.md +99 -0
  85. package/extensions/enact-operator/skills/configure-notifications/SKILL.md +77 -0
  86. package/extensions/enact-operator/skills/deep-interview/SKILL.md +80 -0
  87. package/extensions/enact-operator/skills/doctor/SKILL.md +48 -0
  88. package/extensions/enact-operator/skills/hud/SKILL.md +49 -0
  89. package/extensions/enact-operator/skills/hyperplan/SKILL.md +47 -0
  90. package/extensions/enact-operator/skills/plan/SKILL.md +78 -0
  91. package/extensions/enact-operator/skills/ralph/SKILL.md +201 -0
  92. package/extensions/enact-operator/skills/ralph/gemini.md +18 -0
  93. package/extensions/enact-operator/skills/ralplan/SKILL.md +151 -0
  94. package/extensions/enact-operator/skills/remove-deadcode/SKILL.md +45 -0
  95. package/extensions/enact-operator/skills/research/SKILL.md +74 -0
  96. package/extensions/enact-operator/skills/review/SKILL.md +58 -0
  97. package/extensions/enact-operator/skills/security-research/SKILL.md +54 -0
  98. package/extensions/enact-operator/skills/setup/SKILL.md +91 -0
  99. package/extensions/enact-operator/skills/setup/scripts/install.sh +50 -0
  100. package/extensions/enact-operator/skills/skill/SKILL.md +82 -0
  101. package/extensions/enact-operator/skills/tdd/SKILL.md +59 -0
  102. package/extensions/enact-operator/skills/team/SKILL.md +199 -0
  103. package/extensions/enact-operator/skills/trace/SKILL.md +41 -0
  104. package/extensions/enact-operator/skills/ultragoal/SKILL.md +99 -0
  105. package/extensions/enact-operator/skills/ultraqa/SKILL.md +113 -0
  106. package/extensions/enact-operator/skills/ultrawork/SKILL.md +145 -0
  107. package/extensions/enact-operator/skills/ultrawork/planner.md +28 -0
  108. package/extensions/enact-operator/skills/wiki/SKILL.md +41 -0
  109. package/extensions/enact-operator/skills/work-with-workitem/SKILL.md +51 -0
  110. package/extensions/enact-wiki/.agents/plugin.json +42 -0
  111. package/extensions/enact-wiki/.mcp.json +15 -0
  112. package/extensions/enact-wiki/README.md +44 -0
  113. package/extensions/enact-wiki/assets/icon.png +0 -0
  114. package/extensions/enact-wiki/assets/logo.png +0 -0
  115. package/extensions/enact-wiki/skills/document-parser/SKILL.md +17 -0
  116. package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +60 -0
  117. package/extensions/enact-wiki/skills/document-parser/skill.json +9 -0
  118. package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +30 -0
  119. package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +62 -0
  120. package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +34 -0
  121. package/extensions/enact-wiki/skills/enact-wiki/references/query.md +59 -0
  122. package/extensions/enact-wiki/skills/search-lab/SKILL.md +57 -0
  123. package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +23 -0
  124. package/{plugins/net-revenue-management/.codex-plugin → extensions/net-revenue-management/.agents}/plugin.json +10 -6
  125. package/extensions/plugin-dev/.agents/plugin.json +42 -0
  126. package/extensions/plugin-dev/.mcp.json +3 -0
  127. package/extensions/plugin-dev/agents/agent-creator.md +199 -0
  128. package/extensions/plugin-dev/agents/plugin-validator.md +91 -0
  129. package/extensions/plugin-dev/agents/skill-reviewer.md +212 -0
  130. package/extensions/plugin-dev/commands/_archive/create-marketplace.md +427 -0
  131. package/extensions/plugin-dev/commands/_archive/plugin-dev-guide.md +12 -0
  132. package/extensions/plugin-dev/commands/create-plugin.md +498 -0
  133. package/extensions/plugin-dev/commands/start.md +81 -0
  134. package/extensions/plugin-dev/hooks/hooks.json +3 -0
  135. package/extensions/plugin-dev/skills/agent-development/SKILL.md +641 -0
  136. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +250 -0
  137. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +461 -0
  138. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +246 -0
  139. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +216 -0
  140. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +226 -0
  141. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +464 -0
  142. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +474 -0
  143. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +176 -0
  144. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +227 -0
  145. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +227 -0
  146. package/extensions/plugin-dev/skills/command-development/SKILL.md +763 -0
  147. package/extensions/plugin-dev/skills/command-development/examples/plugin-commands.md +612 -0
  148. package/extensions/plugin-dev/skills/command-development/examples/simple-commands.md +527 -0
  149. package/extensions/plugin-dev/skills/command-development/references/advanced-workflows.md +762 -0
  150. package/extensions/plugin-dev/skills/command-development/references/documentation-patterns.md +769 -0
  151. package/extensions/plugin-dev/skills/command-development/references/frontmatter-reference.md +508 -0
  152. package/extensions/plugin-dev/skills/command-development/references/interactive-commands.md +966 -0
  153. package/extensions/plugin-dev/skills/command-development/references/marketplace-considerations.md +943 -0
  154. package/extensions/plugin-dev/skills/command-development/references/plugin-features-reference.md +637 -0
  155. package/extensions/plugin-dev/skills/command-development/references/plugin-integration.md +191 -0
  156. package/extensions/plugin-dev/skills/command-development/references/skill-tool.md +447 -0
  157. package/extensions/plugin-dev/skills/command-development/references/testing-strategies.md +723 -0
  158. package/extensions/plugin-dev/skills/command-development/scripts/check-frontmatter.sh +234 -0
  159. package/extensions/plugin-dev/skills/command-development/scripts/validate-command.sh +160 -0
  160. package/extensions/plugin-dev/skills/hook-development/SKILL.md +861 -0
  161. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +55 -0
  162. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +57 -0
  163. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +48 -0
  164. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +871 -0
  165. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +145 -0
  166. package/extensions/plugin-dev/skills/hook-development/references/migration.md +392 -0
  167. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +430 -0
  168. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +181 -0
  169. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +153 -0
  170. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +276 -0
  171. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +159 -0
  172. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +775 -0
  173. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +20 -0
  174. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +19 -0
  175. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +38 -0
  176. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +26 -0
  177. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +601 -0
  178. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +190 -0
  179. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +572 -0
  180. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +623 -0
  181. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +222 -0
  182. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +705 -0
  183. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +774 -0
  184. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +83 -0
  185. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +611 -0
  186. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +289 -0
  187. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +592 -0
  188. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +233 -0
  189. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +193 -0
  190. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +625 -0
  191. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +116 -0
  192. package/extensions/plugin-dev/skills/skill-development/SKILL.md +564 -0
  193. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +465 -0
  194. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +167 -0
  195. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +111 -0
  196. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +225 -0
  197. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +39 -0
  198. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +379 -0
  199. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +210 -0
  200. package/package.json +8 -11
  201. package/scripts/enact-extensions.mjs +823 -21
  202. package/scripts/hooks/session-start-drift-check.mjs +58 -0
  203. package/scripts/lib/build-index.mjs +50 -0
  204. package/scripts/lib/bundle-hash.mjs +137 -0
  205. package/scripts/lib/hooks.mjs +741 -0
  206. package/scripts/lib/ledger.mjs +163 -0
  207. package/scripts/lib/list-bundles.mjs +70 -0
  208. package/scripts/lib/outdated.mjs +144 -0
  209. package/scripts/lib/provision-mcp.mjs +16 -0
  210. package/scripts/lib/resolve-bundle.mjs +121 -0
  211. package/scripts/lib/run-install.mjs +402 -38
  212. package/scripts/lib/run-prune.mjs +73 -0
  213. package/scripts/lib/run-sync.mjs +9 -1
  214. package/scripts/lib/run-uninstall.mjs +244 -0
  215. package/scripts/lib/run-update.mjs +152 -0
  216. package/scripts/lib/run-validate.mjs +21 -18
  217. package/scripts/lib/serve.mjs +472 -0
  218. package/scripts/postinstall.mjs +63 -0
  219. package/scripts/setup-enact-context.sh +2 -2
  220. package/scripts/version-bump.sh +463 -0
  221. package/spec/codex.json +1 -11
  222. package/spec/index.json +59 -0
  223. package/web/assets/README.md +111 -0
  224. package/web/assets/logo-full.png +0 -0
  225. package/web/assets/logo-slim.png +0 -0
  226. package/web/assets/tokens/base.css +45 -0
  227. package/web/assets/tokens/colors.css +248 -0
  228. package/web/assets/tokens/effects.css +24 -0
  229. package/web/assets/tokens/fonts.css +8 -0
  230. package/web/assets/tokens/index.css +18 -0
  231. package/web/assets/tokens/spacing.css +50 -0
  232. package/web/index.html +1188 -0
  233. package/.agents/plugins/marketplace.json +0 -20
  234. package/catalog/enact-context.json +0 -9
  235. package/catalog/enact-factory.json +0 -7
  236. package/catalog/enact-operator.json +0 -7
  237. package/catalog/enact-wiki.json +0 -7
  238. package/catalog/net-revenue-management.json +0 -8
  239. package/scripts/rename-supervisor-to-operator.pl +0 -66
  240. package/scripts/sync-manifests.mjs +0 -23
  241. package/scripts/validate-catalog.mjs +0 -37
  242. package/scripts/validate-plugin.mjs +0 -10
  243. /package/{plugins → extensions}/net-revenue-management/.mcp.json +0 -0
  244. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -0
  245. /package/{plugins → extensions}/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -0
@@ -0,0 +1,572 @@
1
+ # MCP Server Types: Deep Dive
2
+
3
+ Complete reference for all MCP server types supported in Claude Code plugins.
4
+
5
+ ## stdio (Standard Input/Output)
6
+
7
+ ### Overview
8
+
9
+ Execute local MCP servers as child processes with communication via stdin/stdout. Best choice for local tools, custom servers, and NPM packages.
10
+
11
+ ### Configuration
12
+
13
+ **Basic:**
14
+
15
+ ```json
16
+ {
17
+ "my-server": {
18
+ "command": "npx",
19
+ "args": ["-y", "my-mcp-server"]
20
+ }
21
+ }
22
+ ```
23
+
24
+ **With environment:**
25
+
26
+ ```json
27
+ {
28
+ "my-server": {
29
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/custom-server",
30
+ "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
31
+ "env": {
32
+ "API_KEY": "${MY_API_KEY}",
33
+ "LOG_LEVEL": "debug",
34
+ "DATABASE_URL": "${DB_URL}"
35
+ }
36
+ }
37
+ }
38
+ ```
39
+
40
+ ### Process Lifecycle
41
+
42
+ 1. **Startup**: Claude Code spawns process with `command` and `args`
43
+ 2. **Communication**: JSON-RPC messages via stdin/stdout
44
+ 3. **Lifecycle**: Process runs for entire Claude Code session
45
+ 4. **Shutdown**: Process terminated when Claude Code exits
46
+
47
+ ### Use Cases
48
+
49
+ **NPM Packages:**
50
+
51
+ ```json
52
+ {
53
+ "filesystem": {
54
+ "command": "npx",
55
+ "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
56
+ }
57
+ }
58
+ ```
59
+
60
+ **Custom Scripts:**
61
+
62
+ ```json
63
+ {
64
+ "custom": {
65
+ "command": "${CLAUDE_PLUGIN_ROOT}/servers/my-server.js",
66
+ "args": ["--verbose"]
67
+ }
68
+ }
69
+ ```
70
+
71
+ **Python Servers:**
72
+
73
+ ```json
74
+ {
75
+ "python-server": {
76
+ "command": "python",
77
+ "args": ["-m", "my_mcp_server"],
78
+ "env": {
79
+ "PYTHONUNBUFFERED": "1"
80
+ }
81
+ }
82
+ }
83
+ ```
84
+
85
+ ### Best Practices
86
+
87
+ 1. **Use absolute paths or ${CLAUDE_PLUGIN_ROOT}**
88
+ 2. **Set PYTHONUNBUFFERED for Python servers**
89
+ 3. **Pass configuration via args or env, not stdin**
90
+ 4. **Handle server crashes gracefully**
91
+ 5. **Log to stderr, not stdout (stdout is for MCP protocol)**
92
+
93
+ ### Troubleshooting
94
+
95
+ **Server won't start:**
96
+
97
+ - Check command exists and is executable
98
+ - Verify file paths are correct
99
+ - Check permissions
100
+ - Review `claude --debug` logs
101
+
102
+ **Communication fails:**
103
+
104
+ - Ensure server uses stdin/stdout correctly
105
+ - Check for stray print/console.log statements
106
+ - Verify JSON-RPC format
107
+
108
+ ## SSE (Server-Sent Events)
109
+
110
+ ### Overview
111
+
112
+ Connect to hosted MCP servers via HTTP with server-sent events for streaming. Best for cloud services and OAuth authentication.
113
+
114
+ ### Configuration
115
+
116
+ **Basic:**
117
+
118
+ ```json
119
+ {
120
+ "hosted-service": {
121
+ "type": "sse",
122
+ "url": "https://mcp.example.com/sse"
123
+ }
124
+ }
125
+ ```
126
+
127
+ **With headers:**
128
+
129
+ ```json
130
+ {
131
+ "service": {
132
+ "type": "sse",
133
+ "url": "https://mcp.example.com/sse",
134
+ "headers": {
135
+ "X-API-Version": "v1",
136
+ "X-Client-ID": "${CLIENT_ID}"
137
+ }
138
+ }
139
+ }
140
+ ```
141
+
142
+ ### Connection Lifecycle
143
+
144
+ 1. **Initialization**: HTTP connection established to URL
145
+ 2. **Handshake**: MCP protocol negotiation
146
+ 3. **Streaming**: Server sends events via SSE
147
+ 4. **Requests**: Client sends HTTP POST for tool calls
148
+ 5. **Reconnection**: Automatic reconnection on disconnect
149
+
150
+ ### Authentication
151
+
152
+ **OAuth (Automatic):**
153
+
154
+ ```json
155
+ {
156
+ "asana": {
157
+ "type": "sse",
158
+ "url": "https://mcp.asana.com/sse"
159
+ }
160
+ }
161
+ ```
162
+
163
+ Claude Code handles OAuth flow:
164
+
165
+ 1. User prompted to authenticate on first use
166
+ 2. Opens browser for OAuth flow
167
+ 3. Tokens stored securely
168
+ 4. Automatic token refresh
169
+
170
+ **Custom Headers:**
171
+
172
+ ```json
173
+ {
174
+ "service": {
175
+ "type": "sse",
176
+ "url": "https://mcp.example.com/sse",
177
+ "headers": {
178
+ "Authorization": "Bearer ${API_TOKEN}"
179
+ }
180
+ }
181
+ }
182
+ ```
183
+
184
+ ### Use Cases
185
+
186
+ **Official Services:**
187
+
188
+ - Asana: `https://mcp.asana.com/sse`
189
+ - GitHub: `https://mcp.github.com/sse`
190
+ - Other hosted MCP servers
191
+
192
+ **Custom Hosted Servers:**
193
+ Deploy your own MCP server and expose via HTTPS + SSE.
194
+
195
+ ### Best Practices
196
+
197
+ 1. **Always use HTTPS, never HTTP**
198
+ 2. **Let OAuth handle authentication when available**
199
+ 3. **Use environment variables for tokens**
200
+ 4. **Handle connection failures gracefully**
201
+ 5. **Document OAuth scopes required**
202
+
203
+ ### Troubleshooting
204
+
205
+ **Connection refused:**
206
+
207
+ - Check URL is correct and accessible
208
+ - Verify HTTPS certificate is valid
209
+ - Check network connectivity
210
+ - Review firewall settings
211
+
212
+ **OAuth fails:**
213
+
214
+ - Clear cached tokens
215
+ - Check OAuth scopes
216
+ - Verify redirect URLs
217
+ - Re-authenticate
218
+
219
+ ## HTTP (REST API)
220
+
221
+ ### Overview
222
+
223
+ Connect to RESTful MCP servers via standard HTTP requests. Best for token-based auth and stateless interactions.
224
+
225
+ ### Configuration
226
+
227
+ **Basic:**
228
+
229
+ ```json
230
+ {
231
+ "api": {
232
+ "type": "http",
233
+ "url": "https://api.example.com/mcp"
234
+ }
235
+ }
236
+ ```
237
+
238
+ **With authentication:**
239
+
240
+ ```json
241
+ {
242
+ "api": {
243
+ "type": "http",
244
+ "url": "https://api.example.com/mcp",
245
+ "headers": {
246
+ "Authorization": "Bearer ${API_TOKEN}",
247
+ "Content-Type": "application/json",
248
+ "X-API-Version": "2024-01-01"
249
+ }
250
+ }
251
+ }
252
+ ```
253
+
254
+ ### Request/Response Flow
255
+
256
+ 1. **Tool Discovery**: GET to discover available tools
257
+ 2. **Tool Invocation**: POST with tool name and parameters
258
+ 3. **Response**: JSON response with results or errors
259
+ 4. **Stateless**: Each request independent
260
+
261
+ ### Authentication
262
+
263
+ **Token-Based:**
264
+
265
+ ```json
266
+ {
267
+ "headers": {
268
+ "Authorization": "Bearer ${API_TOKEN}"
269
+ }
270
+ }
271
+ ```
272
+
273
+ **API Key:**
274
+
275
+ ```json
276
+ {
277
+ "headers": {
278
+ "X-API-Key": "${API_KEY}"
279
+ }
280
+ }
281
+ ```
282
+
283
+ **Custom Auth:**
284
+
285
+ ```json
286
+ {
287
+ "headers": {
288
+ "X-Auth-Token": "${AUTH_TOKEN}",
289
+ "X-User-ID": "${USER_ID}"
290
+ }
291
+ }
292
+ ```
293
+
294
+ ### Use Cases
295
+
296
+ - REST API backends
297
+ - Internal services
298
+ - Microservices
299
+ - Serverless functions
300
+
301
+ ### Best Practices
302
+
303
+ 1. **Use HTTPS for all connections**
304
+ 2. **Store tokens in environment variables**
305
+ 3. **Implement retry logic for transient failures**
306
+ 4. **Handle rate limiting**
307
+ 5. **Set appropriate timeouts**
308
+
309
+ ### Troubleshooting
310
+
311
+ **HTTP errors:**
312
+
313
+ - 401: Check authentication headers
314
+ - 403: Verify permissions
315
+ - 429: Implement rate limiting
316
+ - 500: Check server logs
317
+
318
+ **Timeout issues:**
319
+
320
+ - Increase timeout if needed
321
+ - Check server performance
322
+ - Optimize tool implementations
323
+
324
+ ## WebSocket (Real-time)
325
+
326
+ ### Overview
327
+
328
+ Connect to MCP servers via WebSocket for real-time bidirectional communication. Best for streaming and low-latency applications.
329
+
330
+ ### Configuration
331
+
332
+ **Basic:**
333
+
334
+ ```json
335
+ {
336
+ "realtime": {
337
+ "type": "ws",
338
+ "url": "wss://mcp.example.com/ws"
339
+ }
340
+ }
341
+ ```
342
+
343
+ **With authentication:**
344
+
345
+ ```json
346
+ {
347
+ "realtime": {
348
+ "type": "ws",
349
+ "url": "wss://mcp.example.com/ws",
350
+ "headers": {
351
+ "Authorization": "Bearer ${TOKEN}",
352
+ "X-Client-ID": "${CLIENT_ID}"
353
+ }
354
+ }
355
+ }
356
+ ```
357
+
358
+ ### Connection Lifecycle
359
+
360
+ 1. **Handshake**: WebSocket upgrade request
361
+ 2. **Connection**: Persistent bidirectional channel
362
+ 3. **Messages**: JSON-RPC over WebSocket
363
+ 4. **Heartbeat**: Keep-alive messages
364
+ 5. **Reconnection**: Automatic on disconnect
365
+
366
+ ### Use Cases
367
+
368
+ - Real-time data streaming
369
+ - Live updates and notifications
370
+ - Collaborative editing
371
+ - Low-latency tool calls
372
+ - Push notifications from server
373
+
374
+ ### Best Practices
375
+
376
+ 1. **Use WSS (secure WebSocket), never WS**
377
+ 2. **Implement heartbeat/ping-pong**
378
+ 3. **Handle reconnection logic**
379
+ 4. **Buffer messages during disconnection**
380
+ 5. **Set connection timeouts**
381
+
382
+ ### Troubleshooting
383
+
384
+ **Connection drops:**
385
+
386
+ - Implement reconnection logic
387
+ - Check network stability
388
+ - Verify server supports WebSocket
389
+ - Review firewall settings
390
+
391
+ **Message delivery:**
392
+
393
+ - Implement message acknowledgment
394
+ - Handle out-of-order messages
395
+ - Buffer during disconnection
396
+
397
+ ## Comparison Matrix
398
+
399
+ | Feature | stdio | SSE | HTTP | WebSocket |
400
+ | ------------- | --------------- | -------------- | ---------------- | ------------- |
401
+ | **Transport** | Process | HTTP/SSE | HTTP | WebSocket |
402
+ | **Direction** | Bidirectional | Server→Client | Request/Response | Bidirectional |
403
+ | **State** | Stateful | Stateful | Stateless | Stateful |
404
+ | **Auth** | Env vars | OAuth/Headers | Headers | Headers |
405
+ | **Use Case** | Local tools | Cloud services | REST APIs | Real-time |
406
+ | **Latency** | Lowest | Medium | Medium | Low |
407
+ | **Setup** | Easy | Medium | Easy | Medium |
408
+ | **Reconnect** | Process respawn | Automatic | N/A | Automatic |
409
+
410
+ ## Choosing the Right Type
411
+
412
+ **Use stdio when:**
413
+
414
+ - Running local tools or custom servers
415
+ - Need lowest latency
416
+ - Working with file systems or local databases
417
+ - Distributing server with plugin
418
+
419
+ **Use SSE when:**
420
+
421
+ - Connecting to hosted services
422
+ - Need OAuth authentication
423
+ - Using official MCP servers (Asana, GitHub)
424
+ - Want automatic reconnection
425
+
426
+ **Use HTTP when:**
427
+
428
+ - Integrating with REST APIs
429
+ - Need stateless interactions
430
+ - Using token-based auth
431
+ - Simple request/response pattern
432
+
433
+ **Use WebSocket when:**
434
+
435
+ - Need real-time updates
436
+ - Building collaborative features
437
+ - Low-latency critical
438
+ - Bi-directional streaming required
439
+
440
+ ## Migration Between Types
441
+
442
+ ### From stdio to SSE
443
+
444
+ **Before (stdio):**
445
+
446
+ ```json
447
+ {
448
+ "local-server": {
449
+ "command": "node",
450
+ "args": ["server.js"]
451
+ }
452
+ }
453
+ ```
454
+
455
+ **After (SSE - deploy server):**
456
+
457
+ ```json
458
+ {
459
+ "hosted-server": {
460
+ "type": "sse",
461
+ "url": "https://mcp.example.com/sse"
462
+ }
463
+ }
464
+ ```
465
+
466
+ ### From HTTP to WebSocket
467
+
468
+ **Before (HTTP):**
469
+
470
+ ```json
471
+ {
472
+ "api": {
473
+ "type": "http",
474
+ "url": "https://api.example.com/mcp"
475
+ }
476
+ }
477
+ ```
478
+
479
+ **After (WebSocket):**
480
+
481
+ ```json
482
+ {
483
+ "realtime": {
484
+ "type": "ws",
485
+ "url": "wss://api.example.com/ws"
486
+ }
487
+ }
488
+ ```
489
+
490
+ Benefits: Real-time updates, lower latency, bi-directional communication.
491
+
492
+ ## Advanced Configuration
493
+
494
+ ### Multiple Servers
495
+
496
+ Combine different types:
497
+
498
+ ```json
499
+ {
500
+ "local-db": {
501
+ "command": "npx",
502
+ "args": ["-y", "mcp-server-sqlite", "./data.db"]
503
+ },
504
+ "cloud-api": {
505
+ "type": "sse",
506
+ "url": "https://mcp.example.com/sse"
507
+ },
508
+ "internal-service": {
509
+ "type": "http",
510
+ "url": "https://api.example.com/mcp",
511
+ "headers": {
512
+ "Authorization": "Bearer ${API_TOKEN}"
513
+ }
514
+ }
515
+ }
516
+ ```
517
+
518
+ ### Conditional Configuration
519
+
520
+ Use environment variables to switch servers:
521
+
522
+ ```json
523
+ {
524
+ "api": {
525
+ "type": "http",
526
+ "url": "${API_URL}",
527
+ "headers": {
528
+ "Authorization": "Bearer ${API_TOKEN}"
529
+ }
530
+ }
531
+ }
532
+ ```
533
+
534
+ Set different values for dev/prod:
535
+
536
+ - Dev: `API_URL=http://localhost:8080/mcp`
537
+ - Prod: `API_URL=https://api.production.com/mcp`
538
+
539
+ ## Security Considerations
540
+
541
+ ### Stdio Security
542
+
543
+ - Validate command paths
544
+ - Don't execute user-provided commands
545
+ - Limit environment variable access
546
+ - Restrict file system access
547
+
548
+ ### Network Security
549
+
550
+ - Always use HTTPS/WSS
551
+ - Validate SSL certificates
552
+ - Don't skip certificate verification
553
+ - Use secure token storage
554
+
555
+ ### Token Management
556
+
557
+ - Never hardcode tokens
558
+ - Use environment variables
559
+ - Rotate tokens regularly
560
+ - Implement token refresh
561
+ - Document scopes required
562
+
563
+ ## Conclusion
564
+
565
+ Choose the MCP server type based on your use case:
566
+
567
+ - **stdio** for local, custom, or NPM-packaged servers
568
+ - **SSE** for hosted services with OAuth
569
+ - **HTTP** for REST APIs with token auth
570
+ - **WebSocket** for real-time bidirectional communication
571
+
572
+ Test thoroughly and handle errors gracefully for robust MCP integration.