vibes-plug 2.5.0 → 2.11.0

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 (177) hide show
  1. package/.claude/rules/vibes-plug-core.md +32 -0
  2. package/.cursor/rules/vibes-plug-core.mdc +51 -0
  3. package/.cursorrules +42 -0
  4. package/AGENTS.md +37 -7
  5. package/BLUEPRINT.md +309 -217
  6. package/CHANGELOG.md +133 -1
  7. package/CLAUDE.md +70 -0
  8. package/LICENSE +1 -1
  9. package/README.md +641 -415
  10. package/index.js +19 -0
  11. package/package.json +44 -8
  12. package/plugin.json +24 -7
  13. package/scripts/generate_swarm_gif.py +295 -0
  14. package/scripts/install.js +201 -0
  15. package/skills/accessibility-testing-expert/SKILL.md +116 -0
  16. package/skills/ai-cost-token-optimizer/SKILL.md +82 -52
  17. package/skills/ai-evals-benchmark-expert/SKILL.md +188 -0
  18. package/skills/ai-llm-integration-expert/SKILL.md +185 -178
  19. package/skills/ai-media-generation-expert/SKILL.md +172 -0
  20. package/skills/ai-prompt-engineering-expert/SKILL.md +84 -0
  21. package/skills/angular-expert/SKILL.md +148 -0
  22. package/skills/api-design-expert/SKILL.md +6 -3
  23. package/skills/api-gateway-proxy-expert/SKILL.md +81 -0
  24. package/skills/app-analyzer-optimizer/SKILL.md +6 -3
  25. package/skills/apple-ecosystem-expert/SKILL.md +144 -141
  26. package/skills/{asisten_ramah → asisten-ramah}/SKILL.md +7 -1
  27. package/skills/astro-framework-expert/SKILL.md +200 -0
  28. package/skills/async-queue-temporal-expert/SKILL.md +210 -24
  29. package/skills/authentication-identity-expert/SKILL.md +278 -275
  30. package/skills/auto-doc-updater/SKILL.md +7 -1
  31. package/skills/autonomous-chaos-monkey/SKILL.md +63 -63
  32. package/skills/autonomous-red-teamer/SKILL.md +172 -28
  33. package/skills/autonomous-tdd-debugger/SKILL.md +70 -64
  34. package/skills/background-jobs-queue-expert/SKILL.md +235 -0
  35. package/skills/biome-linter-formatter-expert/SKILL.md +89 -0
  36. package/skills/blockchain-web3-expert/SKILL.md +115 -0
  37. package/skills/bootstrap-to-modern/SKILL.md +9 -6
  38. package/skills/brainstorming/SKILL.md +58 -50
  39. package/skills/browser-automation-expert/SKILL.md +197 -21
  40. package/skills/bun-runtime-expert/SKILL.md +7 -1
  41. package/skills/chatbot-messaging-expert/SKILL.md +114 -0
  42. package/skills/ci-cd-devops-architect/SKILL.md +45 -36
  43. package/skills/cloud-hosting-expert/SKILL.md +7 -1
  44. package/skills/coderabbit/SKILL.md +7 -1
  45. package/skills/compliance-gdpr-privacy-expert/SKILL.md +85 -0
  46. package/skills/cron-scheduler-expert/SKILL.md +303 -297
  47. package/skills/data-pipeline-etl-expert/SKILL.md +84 -0
  48. package/skills/data-telemetry-expert/SKILL.md +7 -1
  49. package/skills/data-visualization-expert/SKILL.md +154 -0
  50. package/skills/database-migration-versioning-expert/SKILL.md +90 -0
  51. package/skills/database-orm-expert/SKILL.md +13 -3
  52. package/skills/dependency-upgrade-migrator/SKILL.md +300 -294
  53. package/skills/design-system-architect/SKILL.md +278 -259
  54. package/skills/desktop-electron-expert/SKILL.md +128 -0
  55. package/skills/documentation-site-expert/SKILL.md +59 -0
  56. package/skills/doku-mcp-server/SKILL.md +7 -1
  57. package/skills/doku-payment-gateway/SKILL.md +7 -1
  58. package/skills/domain-driven-design-expert/SKILL.md +82 -0
  59. package/skills/e2e-testing-expert/SKILL.md +7 -1
  60. package/skills/ecommerce-expert/SKILL.md +87 -0
  61. package/skills/edge-serverless-db-expert/SKILL.md +98 -42
  62. package/skills/email-notification-expert/SKILL.md +367 -361
  63. package/skills/error-resilience-expert/SKILL.md +485 -479
  64. package/skills/event-driven-architect/SKILL.md +7 -1
  65. package/skills/feature-flag-analytics-expert/SKILL.md +65 -45
  66. package/skills/file-upload-media-expert/SKILL.md +436 -430
  67. package/skills/firebase-security-expert/SKILL.md +7 -1
  68. package/skills/form-validation-expert/SKILL.md +406 -400
  69. package/skills/fullstack-expert/SKILL.md +60 -1
  70. package/skills/gemini-agent-booster/SKILL.md +173 -135
  71. package/skills/geospatial-maps-expert/SKILL.md +80 -0
  72. package/skills/global-a11y-i18n-expert/SKILL.md +7 -1
  73. package/skills/glsl-shader-expert/SKILL.md +106 -100
  74. package/skills/go-programming-expert/SKILL.md +21 -15
  75. package/skills/graph-rag-knowledge-expert/SKILL.md +159 -0
  76. package/skills/graphql-apollo-expert/SKILL.md +113 -107
  77. package/skills/headless-cms-expert/SKILL.md +181 -0
  78. package/skills/hig/SKILL.md +7 -1
  79. package/skills/js-backend-expert/SKILL.md +218 -216
  80. package/skills/legacy-code-translator/SKILL.md +70 -64
  81. package/skills/local-slm-edge-ai-expert/SKILL.md +167 -0
  82. package/skills/logging-error-tracking-expert/SKILL.md +343 -337
  83. package/skills/mcp-client-orchestrator/SKILL.md +75 -69
  84. package/skills/mcp-server-architect/SKILL.md +294 -194
  85. package/skills/micro-frontend-architect/SKILL.md +111 -105
  86. package/skills/mobile-expo-expert/SKILL.md +8 -2
  87. package/skills/mobile-push-notification-expert/SKILL.md +70 -50
  88. package/skills/modern-css-native-expert/SKILL.md +189 -0
  89. package/skills/monday-design-aesthetic/SKILL.md +7 -1
  90. package/skills/monorepo-architect/SKILL.md +7 -1
  91. package/skills/mpa-orchestrator/SKILL.md +20 -1
  92. package/skills/multi-agent-orchestration/SKILL.md +254 -234
  93. package/skills/multiple-entry-points/SKILL.md +37 -1
  94. package/skills/mvc-expert/SKILL.md +7 -1
  95. package/skills/n8n-automation-expert/SKILL.md +89 -0
  96. package/skills/nextjs-app-router-expert/SKILL.md +148 -0
  97. package/skills/openapi-swagger-codegen-expert/SKILL.md +67 -0
  98. package/skills/payment-gateway-expert/SKILL.md +85 -1
  99. package/skills/pdf-document-generation-expert/SKILL.md +91 -0
  100. package/skills/performance-web-vitals/SKILL.md +7 -1
  101. package/skills/post-quantum-crypto-migrator/SKILL.md +57 -57
  102. package/skills/prd-architect/SKILL.md +7 -1
  103. package/skills/proactive-background-watcher/SKILL.md +67 -61
  104. package/skills/production-ready-hardener/SKILL.md +461 -455
  105. package/skills/project-context-mapper/SKILL.md +84 -78
  106. package/skills/pwa-offline-first-expert/SKILL.md +185 -0
  107. package/skills/python-programming-expert/SKILL.md +407 -401
  108. package/skills/rate-limit-abuse-prevention/SKILL.md +376 -370
  109. package/skills/realtime-collaboration-expert/SKILL.md +55 -1
  110. package/skills/rich-text-editor-expert/SKILL.md +177 -0
  111. package/skills/rust-programming-expert/SKILL.md +7 -1
  112. package/skills/saas-billing/SKILL.md +7 -1
  113. package/skills/saas-multi-tenant/SKILL.md +7 -1
  114. package/skills/saas-mvp-launcher/SKILL.md +20 -1
  115. package/skills/saas-transformer/SKILL.md +499 -488
  116. package/skills/scalability-clean-code/SKILL.md +7 -1
  117. package/skills/search-engine-expert/SKILL.md +89 -0
  118. package/skills/secure-fuzz-testing/SKILL.md +7 -1
  119. package/skills/self-evolving-memory-graph/SKILL.md +90 -74
  120. package/skills/self-healing-cloud-orchestrator/SKILL.md +57 -57
  121. package/skills/senior-frontend/SKILL.md +141 -161
  122. package/skills/seo/SKILL.md +41 -17
  123. package/skills/session-context-loader/SKILL.md +82 -76
  124. package/skills/session-handoff-resume/SKILL.md +7 -1
  125. package/skills/{skill_baru → skill-baru}/SKILL.md +8 -2
  126. package/skills/solidjs-expert/SKILL.md +80 -0
  127. package/skills/spa-orchestrator/SKILL.md +20 -1
  128. package/skills/sse-websocket-streaming-expert/SKILL.md +93 -0
  129. package/skills/state-management-expert/SKILL.md +7 -1
  130. package/skills/supabase-migration/SKILL.md +47 -1
  131. package/skills/supabase-security-expert/SKILL.md +7 -1
  132. package/skills/svelte-sveltekit-expert/SKILL.md +91 -0
  133. package/skills/svg-animation-motion-expert/SKILL.md +115 -0
  134. package/skills/tailwind-expert/SKILL.md +88 -136
  135. package/skills/tanstack-query-expert/SKILL.md +7 -1
  136. package/skills/tauri-expert/SKILL.md +7 -1
  137. package/skills/token-saver/SKILL.md +1 -1
  138. package/skills/typescript-expert/SKILL.md +12 -6
  139. package/skills/ui-components-expert/SKILL.md +165 -279
  140. package/skills/ui-ux-pro-max/SKILL.md +23 -3
  141. package/skills/vector-db-rag-expert/SKILL.md +175 -19
  142. package/skills/vibe-code-gardener/SKILL.md +1 -1
  143. package/skills/visual-qa-vision-agent/SKILL.md +70 -64
  144. package/skills/voice-ai-realtime-agent/SKILL.md +202 -0
  145. package/skills/vue-frontend-expert/SKILL.md +131 -125
  146. package/skills/wasm-edge-computing-expert/SKILL.md +97 -0
  147. package/skills/web-3d-graphics-expert/SKILL.md +136 -130
  148. package/skills/web-game-engine-expert/SKILL.md +101 -95
  149. package/skills/web-scraper/SKILL.md +157 -207
  150. package/skills/website-design-cloner/SKILL.md +179 -173
  151. package/skills/webxr-ar-vr-expert/SKILL.md +122 -116
  152. package/skills/wordpress-headless-expert/SKILL.md +144 -0
  153. package/skills/zero-to-prod-orchestrator/SKILL.md +52 -27
  154. package/skills/zero-trust-secret-vault/SKILL.md +87 -39
  155. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  156. package/.github/workflows/publish.yml +0 -20
  157. package/CONTRIBUTING.md +0 -199
  158. package/SECURITY.md +0 -21
  159. package/banner.png +0 -0
  160. package/skills/autonomous-swarm-director/SKILL.md +0 -69
  161. package/skills/hyper-context-synthesizer/SKILL.md +0 -55
  162. package/skills/llm-cost-arbitrage-router/SKILL.md +0 -59
  163. package/skills/senior-fullstack/SKILL.md +0 -167
  164. package/skills/senior-fullstack/references/architecture_patterns.md +0 -160
  165. package/skills/senior-fullstack/references/development_workflows.md +0 -222
  166. package/skills/senior-fullstack/references/tech_stack_guide.md +0 -190
  167. package/skills/senior-fullstack/scripts/code_quality_analyzer.py +0 -114
  168. package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +0 -114
  169. package/skills/senior-fullstack/scripts/project_scaffolder.py +0 -114
  170. package/skills/seo-aeo-landing-page-writer/SKILL.md +0 -97
  171. package/skills/seo-geo/SKILL.md +0 -188
  172. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
  173. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  174. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
  175. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  176. package/skills/ui_ux_expert/SKILL.md +0 -125
  177. package/vibes-swarm-demo.gif +0 -0
@@ -1,194 +1,294 @@
1
- ---
2
- name: mcp-server-architect
3
- description: "Expert guide for designing, building, and security-hardening Model Context Protocol (MCP) servers and tool integrations in TypeScript, Python, and Go / Panduan ahli merancang, membangun, dan mengamankan server Model Context Protocol (MCP) dan integrasi tool dalam TypeScript, Python, dan Go."
4
- author: "Roedy Rustam"
5
- ---
6
-
7
- # MCP Server Architect (v1.9+ Edition)
8
-
9
- [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
-
11
- ---
12
-
13
- <a name="english"></a>
14
- ## English
15
-
16
- ### Description
17
- Expert guide for designing, building, and security-hardening **Model Context Protocol (MCP)** servers and client integrations. Covers MCP v1.9+ specification (including the new Streamable HTTP transport), tool/resource/prompt design, Zod validation, OAuth 2.1 authorization, and multi-server orchestration patterns for production AI applications.
18
-
19
- ### Trigger Conditions
20
- - Building an MCP server to expose tools, resources, or prompt templates to AI agents.
21
- - Integrating third-party APIs or databases as MCP tools for LLM consumption.
22
- - Implementing MCP client logic in an AI agent or chatbot.
23
- - Securing MCP servers with OAuth 2.1 and permission scoping.
24
- - Deploying MCP servers to edge/serverless environments.
25
-
26
- ### MCP v1.9+ Specification Overview
27
-
28
- MCP standardizes how AI models interact with external tools and data. The 2026 specification (v1.9) introduces:
29
-
30
- | Feature | Description |
31
- |---|---|
32
- | **Streamable HTTP** | New bidirectional transport via HTTP streaming replaces SSE for cloud deployments |
33
- | **stdio** | Original transport for local/CLI tools — still recommended for local MCP |
34
- | **OAuth 2.1** | Standard authorization flow for MCP servers requiring user consent |
35
- | **Tool Annotations** | `readOnlyHint`, `destructiveHint`, `idempotentHint` for safer agent decisions |
36
- | **Audio Content** | Support for audio data in tool responses |
37
- | **Resource Links** | Resources can now link to external URIs |
38
-
39
- ### Core MCP Concepts
40
-
41
- | Primitive | What It Is | Example |
42
- |---|---|---|
43
- | **Tool** | Executable function the LLM can call | `search_database`, `send_email` |
44
- | **Resource** | Read-only data the LLM can read | File contents, DB records |
45
- | **Prompt** | Reusable prompt templates | `code_review_prompt` |
46
- | **Sampling** | Server requests LLM completion | Agent asks LLM to classify |
47
-
48
- ### Building an MCP Server (TypeScript)
49
-
50
- #### 1. Setup with `@modelcontextprotocol/sdk`
51
- ```typescript
52
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
53
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
54
- import { z } from 'zod';
55
-
56
- const server = new McpServer({
57
- name: 'my-api-server',
58
- version: '1.0.0',
59
- });
60
- ```
61
-
62
- #### 2. Define Tools with Zod Validation
63
- ```typescript
64
- server.tool(
65
- 'search_products',
66
- 'Search the product catalog by query and category',
67
- {
68
- query: z.string().min(1).describe('Search query string'),
69
- category: z.enum(['electronics', 'clothing', 'books']).optional(),
70
- limit: z.number().int().min(1).max(50).default(10),
71
- },
72
- {
73
- readOnlyHint: true, // v1.9 annotation: this tool does not modify state
74
- idempotentHint: true, // safe to call multiple times
75
- },
76
- async ({ query, category, limit }) => {
77
- const results = await productDB.search({ query, category, limit });
78
- return {
79
- content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
80
- };
81
- }
82
- );
83
- ```
84
-
85
- #### 3. Expose Resources
86
- ```typescript
87
- server.resource(
88
- 'company-docs',
89
- 'docs://{path}',
90
- { mimeType: 'text/markdown' },
91
- async (uri) => {
92
- const path = uri.pathname;
93
- const content = await fs.readFile(`./docs${path}`, 'utf-8');
94
- return { contents: [{ uri: uri.href, mimeType: 'text/markdown', text: content }] };
95
- }
96
- );
97
- ```
98
-
99
- #### 4. Streamable HTTP Transport (v1.9 — Production Deployment)
100
- ```typescript
101
- import express from 'express';
102
-
103
- const app = express();
104
- app.use(express.json());
105
-
106
- app.all('/mcp', async (req, res) => {
107
- const transport = new StreamableHTTPServerTransport({
108
- sessionIdGenerator: () => crypto.randomUUID(),
109
- });
110
- await server.connect(transport);
111
- await transport.handleRequest(req, res, req.body);
112
- });
113
-
114
- app.listen(3000, () => console.log('MCP Server running on :3000'));
115
- ```
116
-
117
- #### 5. OAuth 2.1 Authorization (Secure MCP)
118
- For MCP servers requiring user consent (e.g., accessing user's GitHub repos):
119
- ```typescript
120
- import { ProxyOAuthServerProvider } from '@modelcontextprotocol/sdk/server/auth/providers/proxyOAuth.js';
121
-
122
- const authProvider = new ProxyOAuthServerProvider({
123
- endpoints: {
124
- authorizationUrl: 'https://github.com/login/oauth/authorize',
125
- tokenUrl: 'https://github.com/login/oauth/access_token',
126
- },
127
- clientId: process.env.GITHUB_CLIENT_ID!,
128
- clientSecret: process.env.GITHUB_CLIENT_SECRET!,
129
- scopes: ['repo', 'read:user'],
130
- });
131
-
132
- server.setAuthProvider(authProvider);
133
- ```
134
-
135
- ### Security Hardening
136
-
137
- - **Validate ALL inputs**: Every tool parameter must be validated with Zod before execution. Never trust LLM-generated inputs directly.
138
- - **Principle of Least Privilege**: Each tool should only request the minimum permissions needed.
139
- - **Rate Limiting**: Implement per-session rate limits to prevent prompt injection loops.
140
- - **Sanitize Outputs**: Never return raw database records with sensitive fields (passwords, API keys). Always filter/select only what's needed.
141
- - **Audit Logging**: Log every tool call with session ID, tool name, parameters, and result status.
142
- - **Tool Annotations**: Use `destructiveHint: true` for tools that modify or delete data — agents should ask for human confirmation before calling these.
143
-
144
- ### Multi-Server Orchestration
145
- When building AI apps with multiple MCP servers:
146
- ```typescript
147
- // Client connecting to multiple MCP servers
148
- const client = new McpClient({ name: 'my-agent', version: '1.0.0' });
149
-
150
- // Connect to multiple specialized servers
151
- await client.connect(new StdioTransport({ command: 'node', args: ['file-server.js'] }));
152
- await client.connect(new StreamableHTTPTransport({ url: 'https://api.mydb.com/mcp' }));
153
-
154
- // List all available tools across servers
155
- const { tools } = await client.listTools();
156
- ```
157
-
158
- ---
159
-
160
- <a name="bahasa-indonesia"></a>
161
- ## Bahasa Indonesia
162
-
163
- ### Deskripsi
164
- Panduan ahli untuk merancang, membangun, dan mengamankan server **Model Context Protocol (MCP)** dan integrasi klien. Mencakup spesifikasi MCP v1.9+ (termasuk transport Streamable HTTP baru), desain tool/resource/prompt, validasi Zod, otorisasi OAuth 2.1, dan pola orkestrasi multi-server untuk aplikasi AI produksi.
165
-
166
- ### Kondisi Pemicu
167
- - Membangun MCP server untuk mengekspos tool, resource, atau prompt template ke agen AI.
168
- - Mengintegrasikan API pihak ketiga atau database sebagai MCP tool untuk konsumsi LLM.
169
- - Mengimplementasikan logika klien MCP dalam agen AI atau chatbot.
170
- - Mengamankan MCP server dengan OAuth 2.1 dan pembatasan izin.
171
- - Men-deploy MCP server ke lingkungan edge/serverless.
172
-
173
- ### Ringkasan Spesifikasi MCP v1.9+
174
-
175
- MCP menstandarisasi cara model AI berinteraksi dengan tool dan data eksternal. Spesifikasi 2026 (v1.9) memperkenalkan:
176
- - **Streamable HTTP**: Transport dua arah baru via HTTP streaming — menggantikan SSE untuk deployment cloud.
177
- - **Tool Annotations**: `readOnlyHint`, `destructiveHint`, `idempotentHint` untuk keputusan agen yang lebih aman.
178
- - **OAuth 2.1**: Alur otorisasi standar untuk MCP server yang memerlukan izin pengguna.
179
-
180
- ### Membangun MCP Server (TypeScript)
181
-
182
- Gunakan `@modelcontextprotocol/sdk` untuk TypeScript. Definisikan tool dengan validasi Zod yang ketat, tambahkan anotasi v1.9 (`readOnlyHint`, `destructiveHint`), dan gunakan Streamable HTTP transport untuk deployment cloud produksi.
183
-
184
- ### Keamanan MCP
185
-
186
- - **Validasi SEMUA input**: Setiap parameter tool harus divalidasi dengan Zod sebelum eksekusi.
187
- - **Prinsip Least Privilege**: Setiap tool hanya boleh meminta izin minimum yang diperlukan.
188
- - **Rate Limiting**: Batasi panggilan per sesi untuk mencegah loop prompt injection.
189
- - **Sanitasi Output**: Jangan pernah mengembalikan field sensitif (password, API key).
190
- - **Audit Logging**: Catat setiap panggilan tool dengan session ID, nama tool, parameter, dan status hasil.
191
- - **Anotasi Tool**: Gunakan `destructiveHint: true` untuk tool yang memodifikasi/menghapus data — agen harus meminta konfirmasi manusia sebelum memanggilnya.
192
-
193
- ### Orkestrasi Multi-Server
194
- Klien MCP dapat terhubung ke beberapa server sekaligus, menyatukan semua tool dari server yang berbeda menjadi satu daftar yang tersedia untuk agen.
1
+ ---
2
+ name: mcp-server-architect
3
+ description: "Ultimate guide for designing, building, and security-hardening modern AI Tools/Bots via Model Context Protocol (MCP v1.x) in TypeScript and Python / Panduan utama merancang, membangun, dan mengamankan AI Tools/Bots modern melalui Model Context Protocol (MCP) dalam TypeScript dan Python."
4
+ author: "Roedy Rustam"
5
+ ---
6
+
7
+ # MCP Server Architect (Modern AI Tools & Agentic Protocol)
8
+
9
+ [English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
10
+
11
+ ---
12
+
13
+ <a name="english"></a>
14
+ ## English
15
+
16
+ ### Orchestration & Integration
17
+ Connects and orchestrates with relevant domain skills: `ai-llm-integration-expert` for core LLM routing and RAG pipelines, `mcp-client-orchestrator` for agent client consumption, and `doku-mcp-server` for payments integration examples. Ensure cohesive execution when spawning subagents.
18
+
19
+ ### Description
20
+ Ultimate architectural guide for engineering high-performance, production-ready AI Tools/Bots via the **Model Context Protocol (MCP v1.x)**. Enforces the use of `FastMCP` (Python) and `@modelcontextprotocol/sdk` (TypeScript). Mandates strict security guardrails, schema validation, stateful resource streaming, and support for both Standard Stdio and Streamable HTTP / Server-Sent Events (SSE) transports.
21
+
22
+ ### Trigger Conditions
23
+ - Building an MCP server to expose tools, resources, or prompt templates to AI agents.
24
+ - Integrating backend APIs, file systems, or databases as MCP agent tools.
25
+ - Implementing stateful, real-time MCP servers (resource subscriptions, log tailing, live metrics).
26
+ - Securing and auditing MCP servers exposing sensitive financial or production data.
27
+
28
+ ---
29
+
30
+ ### SDK Selection (Mandatory Standard)
31
+ 1. **Python**: `FastMCP` (FastAPI-like high-level DX for MCP tools, resources, and prompt templates).
32
+ 2. **TypeScript**: `@modelcontextprotocol/sdk` (official SDK using the `McpServer` high-level abstraction with `zod`).
33
+
34
+ ---
35
+
36
+ ### Production Implementation Recipes
37
+
38
+ #### Recipe 1: Production TypeScript MCP Server (Streamable HTTP / SSE)
39
+ ```typescript
40
+ import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
41
+ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
42
+ import express from 'express';
43
+ import { z } from 'zod';
44
+
45
+ // Initialize the high-level MCP Server
46
+ const server = new McpServer({
47
+ name: 'enterprise-analytics-mcp',
48
+ version: '1.0.0',
49
+ });
50
+
51
+ // Register a type-safe Tool with Zod validation
52
+ server.tool(
53
+ 'calculate_metrics',
54
+ 'Calculates business analytics metrics across timeframes',
55
+ {
56
+ metricName: z.enum(['arr', 'churn', 'cac', 'ltv']).describe('The metric to compute'),
57
+ quarter: z.string().regex(/^Q[1-4]-202[0-9]$/).describe('Target quarter, e.g., Q1-2026'),
58
+ },
59
+ async ({ metricName, quarter }) => {
60
+ // Implement business logic with database access
61
+ const mockData = { arr: '$2.4M', churn: '1.2%', cac: '$450', ltv: '$9,200' };
62
+ return {
63
+ content: [
64
+ {
65
+ type: 'text',
66
+ text: JSON.stringify({ metric: metricName, quarter, value: mockData[metricName] }),
67
+ },
68
+ ],
69
+ };
70
+ }
71
+ );
72
+
73
+ // Register a Resource Template with dynamic URI
74
+ server.resource(
75
+ 'system_health',
76
+ new ResourceTemplate('system://health/{service}', { list: undefined }),
77
+ async (uri, { service }) => {
78
+ return {
79
+ contents: [
80
+ {
81
+ uri: uri.href,
82
+ text: JSON.stringify({ service, status: 'HEALTHY', latencyMs: 14, timestamp: new Date().toISOString() }),
83
+ },
84
+ ],
85
+ };
86
+ }
87
+ );
88
+
89
+ // Expose via Express with SSE Transport
90
+ const app = express();
91
+ let transport: SSEServerTransport | null = null;
92
+
93
+ app.get('/sse', async (req, res) => {
94
+ transport = new SSEServerTransport('/messages', res);
95
+ await server.connect(transport);
96
+ });
97
+
98
+ app.post('/messages', async (req, res) => {
99
+ if (transport) {
100
+ await transport.handlePostMessage(req, res);
101
+ } else {
102
+ res.status(400).send('Transport not established');
103
+ }
104
+ });
105
+
106
+ app.listen(3001, () => {
107
+ console.log('MCP Server listening on http://localhost:3001/sse');
108
+ });
109
+ ```
110
+
111
+ #### Recipe 2: Production FastMCP Server (Python)
112
+ ```python
113
+ from fastmcp import FastMCP, Context
114
+ from pydantic import BaseModel, Field
115
+ from typing import Literal
116
+
117
+ mcp = FastMCP("enterprise-vault-mcp", dependencies=["pydantic"])
118
+
119
+ class QueryParams(BaseModel):
120
+ account_id: str = Field(..., description="UUID of customer account")
121
+ status_filter: Literal["active", "suspended", "all"] = Field("active", description="Status filter")
122
+
123
+ @mcp.tool(name="fetch_account_summary", description="Retrieves account telemetry and balance")
124
+ async def fetch_account_summary(params: QueryParams, ctx: Context) -> str:
125
+ ctx.info(f"Auditing request for account: {params.account_id}")
126
+
127
+ # Secure business logic with RLS validation
128
+ result = {
129
+ "account_id": params.account_id,
130
+ "balance_usd": 125430.50,
131
+ "tier": "enterprise",
132
+ "status": params.status_filter
133
+ }
134
+ return str(result)
135
+
136
+ @mcp.resource("config://app-settings")
137
+ def get_app_settings() -> str:
138
+ """Provides application configuration context to the agent."""
139
+ return '{"environment": "production", "rate_limit_rpm": 600, "region": "ap-southeast-1"}'
140
+
141
+ if __name__ == "__main__":
142
+ # Runs standard Stdio transport or streamable HTTP
143
+ mcp.run(transport="stdio")
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Security & Operational Guardrails
149
+ 1. **OAuth 2.1 & Bearer Authentication**: Bind session tokens to transport connections. Validate claims before executing any tool logic.
150
+ 2. **Schema Strictness**: Never use untyped payloads. Every argument must have explicit types, range constraints, and descriptions to guide LLM tool-calling accuracy.
151
+ 3. **Row-Level Security (RLS)**: Enforce tenant and user context propagation to the database layer.
152
+ 4. **Circuit Breakers & Rate Limits**: Cap consecutive tool executions per agent turn to prevent endless agentic recursive loops.
153
+ 5. **Idempotency**: All destructive or state-mutating tools must require an `idempotency_key` argument.
154
+
155
+ ---
156
+
157
+ <a name="bahasa-indonesia"></a>
158
+ ## Bahasa Indonesia
159
+
160
+ ### Integrasi Orkestrasi
161
+ Terhubung dan mengorkestrasi dengan skill domain relevan: `ai-llm-integration-expert` untuk perutean LLM inti dan pipeline RAG, `mcp-client-orchestrator` untuk konsumsi klien agen, serta `doku-mcp-server` untuk contoh integrasi pembayaran.
162
+
163
+ ### Deskripsi
164
+ Panduan arsitektur utama untuk membangun AI Tools/Bots modern dan siap produksi via **Model Context Protocol (MCP v1.x)**. Mewajibkan penggunaan `FastMCP` (Python) dan `@modelcontextprotocol/sdk` (TypeScript). Menerapkan pengamanan ketat, validasi skema, streaming resource stateful, serta dukungan transport Standar Stdio maupun Streamable HTTP / SSE.
165
+
166
+ ### Kondisi Pemicu
167
+ - Membangun server MCP untuk mengekspos alat (*tools*), resource, atau template prompt ke agen AI.
168
+ - Mengintegrasikan API backend, sistem file, atau database sebagai alat agen AI.
169
+ - Mengimplementasikan server MCP stateful dan real-time (langganan resource, tailing log, metrik langsung).
170
+ - Mengamankan server MCP yang mengekspos data finansial atau produksi yang sensitif.
171
+
172
+ ---
173
+
174
+ ### Standar Pemilihan SDK (Wajib)
175
+ 1. **Python**: `FastMCP` (pengalaman developer tingkat tinggi ala FastAPI untuk tools, resource, dan template prompt).
176
+ 2. **TypeScript**: `@modelcontextprotocol/sdk` (SDK resmi menggunakan abstraksi `McpServer` dengan `zod`).
177
+
178
+ ---
179
+
180
+ ### Resep Implementasi Produksi
181
+
182
+ #### Resep 1: Server MCP TypeScript Produksi (Streamable HTTP / SSE)
183
+ ```typescript
184
+ import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
185
+ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
186
+ import express from 'express';
187
+ import { z } from 'zod';
188
+
189
+ const server = new McpServer({
190
+ name: 'enterprise-analytics-mcp',
191
+ version: '1.0.0',
192
+ });
193
+
194
+ // Pendaftaran Tool dengan validasi ketat Zod
195
+ server.tool(
196
+ 'calculate_metrics',
197
+ 'Menghitung metrik analitik bisnis untuk kuartal tertentu',
198
+ {
199
+ metricName: z.enum(['arr', 'churn', 'cac', 'ltv']).describe('Metrik yang ingin dihitung'),
200
+ quarter: z.string().regex(/^Q[1-4]-202[0-9]$/).describe('Target kuartal, misal: Q1-2026'),
201
+ },
202
+ async ({ metricName, quarter }) => {
203
+ const data = { arr: '$2.4M', churn: '1.2%', cac: '$450', ltv: '$9,200' };
204
+ return {
205
+ content: [
206
+ {
207
+ type: 'text',
208
+ text: JSON.stringify({ metrik: metricName, kuartal: quarter, nilai: data[metricName] }),
209
+ },
210
+ ],
211
+ };
212
+ }
213
+ );
214
+
215
+ // Pendaftaran Template Resource dengan URI Dinamis
216
+ server.resource(
217
+ 'system_health',
218
+ new ResourceTemplate('system://health/{service}', { list: undefined }),
219
+ async (uri, { service }) => {
220
+ return {
221
+ contents: [
222
+ {
223
+ uri: uri.href,
224
+ text: JSON.stringify({ layanan: service, status: 'HEALTHY', latensiMs: 14, waktu: new Date().toISOString() }),
225
+ },
226
+ ],
227
+ };
228
+ }
229
+ );
230
+
231
+ const app = express();
232
+ let transport: SSEServerTransport | null = null;
233
+
234
+ app.get('/sse', async (req, res) => {
235
+ transport = new SSEServerTransport('/messages', res);
236
+ await server.connect(transport);
237
+ });
238
+
239
+ app.post('/messages', async (req, res) => {
240
+ if (transport) {
241
+ await transport.handlePostMessage(req, res);
242
+ } else {
243
+ res.status(400).send('Transport belum terhubung');
244
+ }
245
+ });
246
+
247
+ app.listen(3001, () => {
248
+ console.log('Server MCP berjalan pada http://localhost:3001/sse');
249
+ });
250
+ ```
251
+
252
+ #### Resep 2: Server FastMCP Produksi (Python)
253
+ ```python
254
+ from fastmcp import FastMCP, Context
255
+ from pydantic import BaseModel, Field
256
+ from typing import Literal
257
+
258
+ mcp = FastMCP("enterprise-vault-mcp", dependencies=["pydantic"])
259
+
260
+ class ParameterAkun(BaseModel):
261
+ account_id: str = Field(..., description="UUID akun pengguna")
262
+ status_filter: Literal["active", "suspended", "all"] = Field("active", description="Filter status")
263
+
264
+ @mcp.tool(name="ambil_ringkasan_akun", description="Mengambil telemetri dan saldo akun")
265
+ async def ambil_ringkasan_akun(params: ParameterAkun, ctx: Context) -> str:
266
+ ctx.info(f"Memproses permintaan untuk akun: {params.account_id}")
267
+ hasil = {
268
+ "account_id": params.account_id,
269
+ "saldo_usd": 125430.50,
270
+ "tier": "enterprise",
271
+ "status": params.status_filter
272
+ }
273
+ return str(hasil)
274
+
275
+ @mcp.resource("config://app-settings")
276
+ def ambil_pengaturan_aplikasi() -> str:
277
+ """Menyediakan konteks konfigurasi aplikasi ke agen AI."""
278
+ return '{"environment": "production", "rate_limit_rpm": 600, "region": "ap-southeast-1"}'
279
+
280
+ if __name__ == "__main__":
281
+ mcp.run(transport="stdio")
282
+ ```
283
+
284
+ ---
285
+
286
+ ### Keamanan & Batasan Operasional
287
+ 1. **Otentikasi OAuth 2.1 & Bearer**: Ikat token sesi ke koneksi transport. Validasi hak akses sebelum mengeksekusi logika alat.
288
+ 2. **Validasi Skema Ketat**: Hindari penggunaan parameter tanpa tipe data yang jelas. Setiap argumen wajib memiliki tipe data, batas nilai, dan deskripsi.
289
+ 3. **Row-Level Security (RLS)**: Teruskan identitas pengguna dan penyewa (tenant) ke lapisan database driver.
290
+ 4. **Circuit Breakers & Rate Limits**: Batasi pemanggilan tool berulang dalam satu giliran respon untuk mencegah perulangan tak terkontrol (*infinite loops*).
291
+ 5. **Idempotency**: Semua tool yang memodifikasi data wajib mendukung argumen `idempotency_key`.
292
+
293
+ ## Integrasi Orkestrasi
294
+ - Terintegrasi dengan: `ai-llm-integration-expert`, `mcp-client-orchestrator`, `doku-mcp-server`, `zero-trust-secret-vault`.