forgecraft-mcp 0.2.0 → 0.2.1
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.
- package/README.md +25 -5
- package/dist/index.js +1 -1
- package/dist/registry/loader.d.ts.map +1 -1
- package/dist/registry/loader.js +26 -1
- package/dist/registry/loader.js.map +1 -1
- package/dist/registry/mcp-discovery.d.ts +82 -0
- package/dist/registry/mcp-discovery.d.ts.map +1 -0
- package/dist/registry/mcp-discovery.js +202 -0
- package/dist/registry/mcp-discovery.js.map +1 -0
- package/dist/shared/errors/index.d.ts +4 -0
- package/dist/shared/errors/index.d.ts.map +1 -1
- package/dist/shared/errors/index.js +6 -0
- package/dist/shared/errors/index.js.map +1 -1
- package/dist/shared/types.d.ts +44 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +6 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/tools/configure-mcp.d.ts +21 -0
- package/dist/tools/configure-mcp.d.ts.map +1 -1
- package/dist/tools/configure-mcp.js +86 -24
- package/dist/tools/configure-mcp.js.map +1 -1
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/list.js +24 -0
- package/dist/tools/list.js.map +1 -1
- package/package.json +7 -3
- package/templates/analytics/mcp-servers.yaml +10 -0
- package/templates/api/mcp-servers.yaml +12 -0
- package/templates/cli/mcp-servers.yaml +10 -0
- package/templates/data-lineage/instructions.yaml +28 -0
- package/templates/data-lineage/mcp-servers.yaml +20 -0
- package/templates/data-pipeline/mcp-servers.yaml +12 -0
- package/templates/fintech/mcp-servers.yaml +12 -0
- package/templates/game/mcp-servers.yaml +10 -0
- package/templates/healthcare/mcp-servers.yaml +12 -0
- package/templates/hipaa/instructions.yaml +41 -0
- package/templates/hipaa/mcp-servers.yaml +12 -0
- package/templates/infra/mcp-servers.yaml +18 -0
- package/templates/library/mcp-servers.yaml +18 -0
- package/templates/medallion-architecture/instructions.yaml +41 -0
- package/templates/medallion-architecture/mcp-servers.yaml +20 -0
- package/templates/ml/mcp-servers.yaml +10 -0
- package/templates/mobile/mcp-servers.yaml +10 -0
- package/templates/observability-xray/instructions.yaml +40 -0
- package/templates/observability-xray/mcp-servers.yaml +14 -0
- package/templates/realtime/mcp-servers.yaml +12 -0
- package/templates/soc2/instructions.yaml +41 -0
- package/templates/soc2/mcp-servers.yaml +22 -0
- package/templates/social/mcp-servers.yaml +22 -0
- package/templates/state-machine/mcp-servers.yaml +10 -0
- package/templates/universal/mcp-servers.yaml +26 -0
- package/templates/web-react/mcp-servers.yaml +18 -0
- package/templates/web-static/mcp-servers.yaml +18 -0
- package/templates/web3/mcp-servers.yaml +10 -0
- package/templates/zero-trust/instructions.yaml +41 -0
- package/templates/zero-trust/mcp-servers.yaml +14 -0
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW;IACX,WAAW;IACX,YAAY;IACZ,KAAK;IACL,eAAe;IACf,IAAI;IACJ,YAAY;IACZ,SAAS;IACT,MAAM;IACN,UAAU;IACV,eAAe;IACf,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,OAAO;IACP,QAAQ;IACR,WAAW;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW;IACX,WAAW;IACX,YAAY;IACZ,KAAK;IACL,eAAe;IACf,IAAI;IACJ,YAAY;IACZ,SAAS;IACT,MAAM;IACN,UAAU;IACV,eAAe;IACf,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,OAAO;IACP,QAAQ;IACR,WAAW;IACX,OAAO;IACP,MAAM;IACN,cAAc;IACd,oBAAoB;IACpB,wBAAwB;IACxB,YAAY;CACJ,CAAC;AA4EX,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAElG,wEAAwE;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,OAAO;CACC,CAAC;AAoBX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAA6C;IAC7E,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,aAAa;KAC3B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,uBAAuB;QACjC,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,IAAI;KACtB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,gBAAgB;KAC9B;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,UAAU;KACxB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO;KACrB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,OAAO;KACrB;CACF,CAAC;AAEF,iDAAiD;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAiB,QAAQ,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAoB;IACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
* configure_mcp tool handler.
|
|
3
3
|
*
|
|
4
4
|
* Generates .claude/settings.json with recommended MCP servers based on tags.
|
|
5
|
+
* Uses the McpDiscoveryService to load curated servers from YAML templates
|
|
6
|
+
* and optionally fetch from a remote registry at setup time.
|
|
5
7
|
*/
|
|
6
8
|
import { z } from "zod";
|
|
9
|
+
import type { McpDiscoveryService } from "../registry/mcp-discovery.js";
|
|
7
10
|
export declare const configureMcpSchema: z.ZodObject<{
|
|
8
11
|
tags: z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">;
|
|
9
12
|
project_dir: z.ZodString;
|
|
@@ -21,15 +24,19 @@ export declare const configureMcpSchema: z.ZodObject<{
|
|
|
21
24
|
env?: Record<string, string> | undefined;
|
|
22
25
|
}>>>;
|
|
23
26
|
auto_approve_tools: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
include_remote: z.ZodDefault<z.ZodBoolean>;
|
|
28
|
+
remote_registry_url: z.ZodOptional<z.ZodString>;
|
|
24
29
|
}, "strip", z.ZodTypeAny, {
|
|
25
30
|
tags: string[];
|
|
26
31
|
project_dir: string;
|
|
27
32
|
auto_approve_tools: boolean;
|
|
33
|
+
include_remote: boolean;
|
|
28
34
|
custom_servers?: Record<string, {
|
|
29
35
|
command: string;
|
|
30
36
|
args: string[];
|
|
31
37
|
env?: Record<string, string> | undefined;
|
|
32
38
|
}> | undefined;
|
|
39
|
+
remote_registry_url?: string | undefined;
|
|
33
40
|
}, {
|
|
34
41
|
tags: string[];
|
|
35
42
|
project_dir: string;
|
|
@@ -39,7 +46,21 @@ export declare const configureMcpSchema: z.ZodObject<{
|
|
|
39
46
|
env?: Record<string, string> | undefined;
|
|
40
47
|
}> | undefined;
|
|
41
48
|
auto_approve_tools?: boolean | undefined;
|
|
49
|
+
include_remote?: boolean | undefined;
|
|
50
|
+
remote_registry_url?: string | undefined;
|
|
42
51
|
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Inject a custom discovery service (for testing).
|
|
54
|
+
*
|
|
55
|
+
* @param service - Discovery service to use, or undefined to reset to default
|
|
56
|
+
*/
|
|
57
|
+
export declare function setDiscoveryService(service: McpDiscoveryService | undefined): void;
|
|
58
|
+
/**
|
|
59
|
+
* Generate .claude/settings.json with discovered MCP servers for active tags.
|
|
60
|
+
*
|
|
61
|
+
* @param args - Validated tool input
|
|
62
|
+
* @returns MCP tool response with configuration summary
|
|
63
|
+
*/
|
|
43
64
|
export declare function configureMcpHandler(args: z.infer<typeof configureMcpSchema>): Promise<{
|
|
44
65
|
content: Array<{
|
|
45
66
|
type: "text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/configure-mcp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"configure-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/configure-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAKxE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC7B,CAAC;AAOH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAElF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GACvC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAmH7D"}
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
* configure_mcp tool handler.
|
|
3
3
|
*
|
|
4
4
|
* Generates .claude/settings.json with recommended MCP servers based on tags.
|
|
5
|
+
* Uses the McpDiscoveryService to load curated servers from YAML templates
|
|
6
|
+
* and optionally fetch from a remote registry at setup time.
|
|
5
7
|
*/
|
|
6
8
|
import { z } from "zod";
|
|
7
9
|
import { mkdirSync, writeFileSync, existsSync, readFileSync } from "node:fs";
|
|
8
10
|
import { join } from "node:path";
|
|
9
11
|
import { ALL_TAGS } from "../shared/types.js";
|
|
12
|
+
import { DefaultMcpDiscoveryService } from "../registry/mcp-discovery.js";
|
|
10
13
|
// ── Schema ───────────────────────────────────────────────────────────
|
|
11
14
|
export const configureMcpSchema = z.object({
|
|
12
15
|
tags: z
|
|
@@ -29,36 +32,60 @@ export const configureMcpSchema = z.object({
|
|
|
29
32
|
.default(true)
|
|
30
33
|
.describe("If true, adds permissions.allow entries for all configured MCP servers " +
|
|
31
34
|
"so tool invocations are auto-approved without manual confirmation."),
|
|
35
|
+
include_remote: z
|
|
36
|
+
.boolean()
|
|
37
|
+
.default(false)
|
|
38
|
+
.describe("If true, also queries a remote MCP server registry for additional recommendations. " +
|
|
39
|
+
"Requires FORGECRAFT_MCP_REGISTRY_URL env var or remote_registry_url parameter."),
|
|
40
|
+
remote_registry_url: z
|
|
41
|
+
.string()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Override URL for the remote MCP server registry."),
|
|
32
44
|
});
|
|
33
|
-
// ── Recommended Servers per Tag ──────────────────────────────────────
|
|
34
|
-
const TAG_SERVERS = {
|
|
35
|
-
UNIVERSAL: {
|
|
36
|
-
forgecraft: {
|
|
37
|
-
command: "npx",
|
|
38
|
-
args: ["-y", "forgecraft-mcp"],
|
|
39
|
-
},
|
|
40
|
-
codeseeker: {
|
|
41
|
-
command: "npx",
|
|
42
|
-
args: ["-y", "codeseeker"],
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
45
|
// ── Handler ──────────────────────────────────────────────────────────
|
|
46
|
+
/** Injected discovery service for testing. Defaults to DefaultMcpDiscoveryService. */
|
|
47
|
+
let injectedDiscoveryService;
|
|
48
|
+
/**
|
|
49
|
+
* Inject a custom discovery service (for testing).
|
|
50
|
+
*
|
|
51
|
+
* @param service - Discovery service to use, or undefined to reset to default
|
|
52
|
+
*/
|
|
53
|
+
export function setDiscoveryService(service) {
|
|
54
|
+
injectedDiscoveryService = service;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate .claude/settings.json with discovered MCP servers for active tags.
|
|
58
|
+
*
|
|
59
|
+
* @param args - Validated tool input
|
|
60
|
+
* @returns MCP tool response with configuration summary
|
|
61
|
+
*/
|
|
47
62
|
export async function configureMcpHandler(args) {
|
|
48
63
|
const tags = args.tags;
|
|
49
|
-
|
|
64
|
+
const discovery = injectedDiscoveryService ?? new DefaultMcpDiscoveryService();
|
|
65
|
+
// ── Discover servers ─────────────────────────────────────────────
|
|
66
|
+
const discoveryOptions = {
|
|
67
|
+
includeRemote: args.include_remote,
|
|
68
|
+
remoteRegistryUrl: args.remote_registry_url,
|
|
69
|
+
};
|
|
70
|
+
const recommendations = await discovery.discoverServers(tags, discoveryOptions);
|
|
71
|
+
// Convert recommendations to server config map
|
|
50
72
|
const servers = {};
|
|
51
|
-
for (const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
73
|
+
for (const rec of recommendations) {
|
|
74
|
+
servers[rec.name] = {
|
|
75
|
+
command: rec.command,
|
|
76
|
+
args: rec.args,
|
|
77
|
+
...(rec.env ? { env: rec.env } : {}),
|
|
78
|
+
source: rec.source,
|
|
79
|
+
description: rec.description,
|
|
80
|
+
};
|
|
56
81
|
}
|
|
57
|
-
// Add custom servers
|
|
82
|
+
// Add custom servers (user-provided, highest priority)
|
|
58
83
|
if (args.custom_servers) {
|
|
59
|
-
Object.
|
|
84
|
+
for (const [name, config] of Object.entries(args.custom_servers)) {
|
|
85
|
+
servers[name] = { ...config, source: "custom" };
|
|
86
|
+
}
|
|
60
87
|
}
|
|
61
|
-
// Build settings.json
|
|
88
|
+
// ── Build settings.json ──────────────────────────────────────────
|
|
62
89
|
const mcpConfig = {};
|
|
63
90
|
for (const [name, config] of Object.entries(servers)) {
|
|
64
91
|
mcpConfig[name] = {
|
|
@@ -78,7 +105,7 @@ export async function configureMcpHandler(args) {
|
|
|
78
105
|
if (permissionRules.length > 0) {
|
|
79
106
|
settings["permissions"] = { allow: permissionRules };
|
|
80
107
|
}
|
|
81
|
-
// Handle existing settings
|
|
108
|
+
// ── Handle existing settings ─────────────────────────────────────
|
|
82
109
|
const settingsDir = join(args.project_dir, ".claude");
|
|
83
110
|
const settingsPath = join(settingsDir, "settings.json");
|
|
84
111
|
let merged = settings;
|
|
@@ -107,14 +134,19 @@ export async function configureMcpHandler(args) {
|
|
|
107
134
|
}
|
|
108
135
|
mkdirSync(settingsDir, { recursive: true });
|
|
109
136
|
writeFileSync(settingsPath, JSON.stringify(merged, null, 2) + "\n", "utf-8");
|
|
137
|
+
// ── Build response ───────────────────────────────────────────────
|
|
110
138
|
const serverNames = Object.keys(servers);
|
|
139
|
+
const bySource = groupBySource(servers);
|
|
111
140
|
return {
|
|
112
141
|
content: [
|
|
113
142
|
{
|
|
114
143
|
type: "text",
|
|
115
144
|
text: `MCP configuration written to \`.claude/settings.json\`.\n\n` +
|
|
116
145
|
`**Servers configured (${serverNames.length}):**\n` +
|
|
117
|
-
|
|
146
|
+
formatServerList(servers) +
|
|
147
|
+
(bySource["remote"] && bySource["remote"] > 0
|
|
148
|
+
? `\n\n📡 ${bySource["remote"]} server(s) discovered from remote registry.`
|
|
149
|
+
: "") +
|
|
118
150
|
(permissionRules.length > 0
|
|
119
151
|
? `\n\n**Auto-approved (${permissionRules.length}):**\n` +
|
|
120
152
|
permissionRules.map((r) => `- \`${r}\``).join("\n")
|
|
@@ -124,4 +156,34 @@ export async function configureMcpHandler(args) {
|
|
|
124
156
|
],
|
|
125
157
|
};
|
|
126
158
|
}
|
|
159
|
+
// ── Helpers ──────────────────────────────────────────────────────────
|
|
160
|
+
/**
|
|
161
|
+
* Format the server list for display, grouped by source.
|
|
162
|
+
*
|
|
163
|
+
* @param servers - Server config map with source metadata
|
|
164
|
+
* @returns Markdown-formatted server list
|
|
165
|
+
*/
|
|
166
|
+
function formatServerList(servers) {
|
|
167
|
+
return Object.entries(servers)
|
|
168
|
+
.map(([name, config]) => {
|
|
169
|
+
const sourceLabel = config.source ? ` [${config.source}]` : "";
|
|
170
|
+
const descLabel = config.description ? ` — ${config.description}` : "";
|
|
171
|
+
return `- \`${name}\`${sourceLabel}: \`${config.command} ${config.args.join(" ")}\`${descLabel}`;
|
|
172
|
+
})
|
|
173
|
+
.join("\n");
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Count servers by source.
|
|
177
|
+
*
|
|
178
|
+
* @param servers - Server config map with source metadata
|
|
179
|
+
* @returns Counts per source type
|
|
180
|
+
*/
|
|
181
|
+
function groupBySource(servers) {
|
|
182
|
+
const counts = {};
|
|
183
|
+
for (const config of Object.values(servers)) {
|
|
184
|
+
const source = config.source ?? "unknown";
|
|
185
|
+
counts[source] = (counts[source] ?? 0) + 1;
|
|
186
|
+
}
|
|
187
|
+
return counts;
|
|
188
|
+
}
|
|
127
189
|
//# sourceMappingURL=configure-mcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure-mcp.js","sourceRoot":"","sources":["../../src/tools/configure-mcp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"configure-mcp.js","sourceRoot":"","sources":["../../src/tools/configure-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/list.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,cAAc,gDAAe,CAAC;AAE3C,eAAO,MAAM,eAAe;;;;;;EAK1B,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,cAAc,gDAAe,CAAC;AAE3C,eAAO,MAAM,eAAe;;;;;;EAK1B,CAAC;AAyGH;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAAC,CAsBD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6C7D"}
|
package/dist/tools/list.js
CHANGED
|
@@ -88,6 +88,30 @@ const TAG_DESCRIPTIONS = {
|
|
|
88
88
|
description: "Analytics/reporting — event tracking, dashboards, data warehousing.",
|
|
89
89
|
appliesWhen: "Project includes analytics dashboards, reporting, or event tracking.",
|
|
90
90
|
},
|
|
91
|
+
HIPAA: {
|
|
92
|
+
description: "HIPAA compliance — PII masking templates, encryption checks, audit logging.",
|
|
93
|
+
appliesWhen: "Project handles Protected Health Information requiring HIPAA compliance.",
|
|
94
|
+
},
|
|
95
|
+
SOC2: {
|
|
96
|
+
description: "SOC2 compliance — access control validation, change management, incident response.",
|
|
97
|
+
appliesWhen: "Project requires SOC2 audit readiness (Type I or Type II).",
|
|
98
|
+
},
|
|
99
|
+
"DATA-LINEAGE": {
|
|
100
|
+
description: "Data lineage — enforce 100% field coverage, lineage tracking decorators.",
|
|
101
|
+
appliesWhen: "Project processes data that requires full field-level lineage tracking.",
|
|
102
|
+
},
|
|
103
|
+
"OBSERVABILITY-XRAY": {
|
|
104
|
+
description: "AWS X-Ray observability — auto-add X-Ray instrumentation to Lambdas.",
|
|
105
|
+
appliesWhen: "Project runs on AWS Lambda and requires distributed tracing with X-Ray.",
|
|
106
|
+
},
|
|
107
|
+
"MEDALLION-ARCHITECTURE": {
|
|
108
|
+
description: "Medallion architecture — enforce Bronze=immutable, Silver=validated, Gold=aggregated.",
|
|
109
|
+
appliesWhen: "Project uses a lakehouse/medallion data architecture (Bronze/Silver/Gold).",
|
|
110
|
+
},
|
|
111
|
+
"ZERO-TRUST": {
|
|
112
|
+
description: "Zero-trust security — deny-by-default IAM, explicit allow rules.",
|
|
113
|
+
appliesWhen: "Project requires zero-trust network/IAM policies with deny-by-default.",
|
|
114
|
+
},
|
|
91
115
|
};
|
|
92
116
|
// ── Handlers ─────────────────────────────────────────────────────────
|
|
93
117
|
/**
|
package/dist/tools/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,wEAAwE;AAExE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAA4C,CAAC,CAAC;SAC3D,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;CACtE,CAAC,CAAC;AAEH,wEAAwE;AAExE,MAAM,gBAAgB,GAA8D;IAClF,SAAS,EAAE;QACT,WAAW,EAAE,0FAA0F;QACvG,WAAW,EAAE,8CAA8C;KAC5D;IACD,WAAW,EAAE;QACX,WAAW,EAAE,wFAAwF;QACrG,WAAW,EAAE,uEAAuE;KACrF;IACD,YAAY,EAAE;QACZ,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,4DAA4D;KAC1E;IACD,GAAG,EAAE;QACH,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE,oFAAoF;KAClG;IACD,eAAe,EAAE;QACf,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE,gFAAgF;KAC9F;IACD,EAAE,EAAE;QACF,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE,0EAA0E;KACxF;IACD,UAAU,EAAE;QACV,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,qEAAqE;KACnF;IACD,OAAO,EAAE;QACP,WAAW,EAAE,mFAAmF;QAChG,WAAW,EAAE,6EAA6E;KAC3F;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,iFAAiF;QAC9F,WAAW,EAAE,+DAA+D;KAC7E;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,sEAAsE;KACpF;IACD,eAAe,EAAE;QACf,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,sEAAsE;KACpF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE,gEAAgE;KAC9E;IACD,MAAM,EAAE;QACN,WAAW,EAAE,wEAAwE;QACrF,WAAW,EAAE,wEAAwE;KACtF;IACD,GAAG,EAAE;QACH,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,2DAA2D;KACzE;IACD,OAAO,EAAE;QACP,WAAW,EAAE,8EAA8E;QAC3F,WAAW,EAAE,2EAA2E;KACzF;IACD,KAAK,EAAE;QACL,WAAW,EAAE,yEAAyE;QACtF,WAAW,EAAE,qEAAqE;KACnF;IACD,MAAM,EAAE;QACN,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE,kEAAkE;KAChF;IACD,SAAS,EAAE;QACT,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE,sEAAsE;KACpF;IACD,KAAK,EAAE;QACL,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE,0EAA0E;KACxF;IACD,IAAI,EAAE;QACJ,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE,4DAA4D;KAC1E;IACD,cAAc,EAAE;QACd,WAAW,EAAE,0EAA0E;QACvF,WAAW,EAAE,yEAAyE;KACvF;IACD,oBAAoB,EAAE;QACpB,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE,yEAAyE;KACvF;IACD,wBAAwB,EAAE;QACxB,WAAW,EAAE,uFAAuF;QACpG,WAAW,EAAE,4EAA4E;KAC1F;IACD,YAAY,EAAE;QACZ,WAAW,EAAE,kEAAkE;QAC/E,WAAW,EAAE,wEAAwE;KACtF;CACF,CAAC;AAEF,wEAAwE;AAExE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IAGnC,MAAM,QAAQ,GAAc,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjD,GAAG;QACH,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW;QAC9C,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW;KAC/C,CAAC,CAAC,CAAC;IAEJ,MAAM,SAAS,GAAG,QAAQ;SACvB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,WAAW,uBAAuB,CAAC,CAAC,WAAW,EAAE,CAC1E;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,qBAAqB,QAAQ,CAAC,MAAM,QAAQ,SAAS,EAAE;aAC9D;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAqC;IAErC,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE9C,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,YAAY,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,SAAS;QACX,CAAC;QAED,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,GAAG,EAAE,WAAW,CAAC,GAAG;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,EAAE;aACjE;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,KAAK;SACpB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,WAAW,eAAe,CAAC,CAAC,QAAQ,IAAI,CAC7F;SACA,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,sBAAsB,KAAK,CAAC,MAAM,QAAQ,SAAS,EAAE;aAC5D;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forgecraft-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"mcpName": "io.github.jghiringhelli/forgecraft",
|
|
5
5
|
"description": "MCP server that gives Claude Code production-grade engineering standards — SOLID, testing, architecture, CI/CD — automatically tailored to your stack",
|
|
6
6
|
"type": "module",
|
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
"model-context-protocol",
|
|
26
26
|
"claude",
|
|
27
27
|
"claude-code",
|
|
28
|
+
"github-copilot",
|
|
29
|
+
"copilot",
|
|
30
|
+
"cursor",
|
|
31
|
+
"windsurf",
|
|
32
|
+
"ai-coding",
|
|
28
33
|
"scaffolding",
|
|
29
34
|
"project-setup",
|
|
30
35
|
"developer-tools",
|
|
@@ -33,8 +38,7 @@
|
|
|
33
38
|
"solid-principles",
|
|
34
39
|
"testing",
|
|
35
40
|
"architecture",
|
|
36
|
-
"claude-md"
|
|
37
|
-
"ai-coding"
|
|
41
|
+
"claude-md"
|
|
38
42
|
],
|
|
39
43
|
"author": "JC",
|
|
40
44
|
"license": "MIT",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
tag: ANALYTICS
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: chrome-devtools
|
|
5
|
+
description: "Chrome DevTools integration for debugging, profiling, and network inspection"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@anthropic/chrome-devtools-mcp@latest"]
|
|
8
|
+
tags: [WEB-REACT, WEB-STATIC, ANALYTICS]
|
|
9
|
+
category: devtools
|
|
10
|
+
url: "https://github.com/anthropics/anthropic-quickstarts/tree/main/chrome-devtools-mcp"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
tag: API
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: postman
|
|
5
|
+
description: "API testing and collection management via Postman workspace"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@anthropic/mcp-server-postman"]
|
|
8
|
+
tags: [API]
|
|
9
|
+
category: testing
|
|
10
|
+
url: "https://github.com/anthropics/anthropic-quickstarts/tree/main/mcp-server-postman"
|
|
11
|
+
env:
|
|
12
|
+
POSTMAN_API_KEY: ""
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
tag: CLI
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: filesystem
|
|
5
|
+
description: "Secure file operations — read, write, search, and directory management with configurable access controls"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/"]
|
|
8
|
+
tags: [CLI, LIBRARY]
|
|
9
|
+
category: general
|
|
10
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
tag: DATA-LINEAGE
|
|
2
|
+
section: instructions
|
|
3
|
+
blocks:
|
|
4
|
+
- id: field-coverage
|
|
5
|
+
tier: recommended
|
|
6
|
+
title: "100% Field Coverage Enforcement"
|
|
7
|
+
content: |
|
|
8
|
+
## 100% Field Coverage Enforcement
|
|
9
|
+
|
|
10
|
+
- Every data field must have a documented origin (source system, table, column) and destination (target system, table, column).
|
|
11
|
+
- Maintain a field-level lineage registry: no field enters production without a lineage entry. Enforce this in CI.
|
|
12
|
+
- Track field transformations explicitly: document every rename, type cast, aggregation, join, and filter applied to each field.
|
|
13
|
+
- Implement automated coverage checks: compare the lineage registry against actual schema definitions. Flag any untracked fields as errors.
|
|
14
|
+
- Version lineage metadata alongside code: lineage definitions live in the repository, not in external wikis or spreadsheets.
|
|
15
|
+
- Generate lineage reports per pipeline run: which fields were read, transformed, and written, with row counts and data quality metrics.
|
|
16
|
+
|
|
17
|
+
- id: lineage-tracking-decorators
|
|
18
|
+
tier: recommended
|
|
19
|
+
title: "Lineage Tracking Decorators & Annotations"
|
|
20
|
+
content: |
|
|
21
|
+
## Lineage Tracking Decorators & Annotations
|
|
22
|
+
|
|
23
|
+
- Use decorators or annotations on transformation functions to declare input fields, output fields, and transformation type.
|
|
24
|
+
- Standardize lineage metadata format: source, transformation, destination, timestamp, pipeline_id, run_id.
|
|
25
|
+
- Emit lineage events at runtime: every transformation step publishes a lineage event to a centralized lineage store.
|
|
26
|
+
- Support both code-level lineage (decorators on functions) and config-level lineage (YAML/JSON transformation specs).
|
|
27
|
+
- Integrate lineage with data quality: when a quality check fails, trace back through lineage to identify the source of bad data.
|
|
28
|
+
- Visualize lineage graphs: generate dependency diagrams showing field-level flow from source to consumption.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
tag: DATA-LINEAGE
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: postgres
|
|
5
|
+
description: "PostgreSQL database inspection — query lineage metadata and schema definitions"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@modelcontextprotocol/server-postgres"]
|
|
8
|
+
tags: [DATA-LINEAGE, DATA-PIPELINE]
|
|
9
|
+
category: database
|
|
10
|
+
env:
|
|
11
|
+
POSTGRES_CONNECTION_STRING: ""
|
|
12
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/postgres"
|
|
13
|
+
|
|
14
|
+
- name: filesystem
|
|
15
|
+
description: "Filesystem access for lineage definition files and pipeline configurations"
|
|
16
|
+
command: npx
|
|
17
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem"]
|
|
18
|
+
tags: [DATA-LINEAGE, UNIVERSAL]
|
|
19
|
+
category: filesystem
|
|
20
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
tag: DATA-PIPELINE
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: postgres
|
|
5
|
+
description: "PostgreSQL database inspection, queries, and schema management"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@modelcontextprotocol/server-postgres"]
|
|
8
|
+
tags: [DATA-PIPELINE, API]
|
|
9
|
+
category: database
|
|
10
|
+
env:
|
|
11
|
+
POSTGRES_CONNECTION_STRING: ""
|
|
12
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/postgres"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
tag: FINTECH
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: stripe
|
|
5
|
+
description: "Stripe API integration — payments, subscriptions, invoices, and customer management"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@stripe/mcp-server"]
|
|
8
|
+
tags: [FINTECH]
|
|
9
|
+
category: general
|
|
10
|
+
env:
|
|
11
|
+
STRIPE_SECRET_KEY: ""
|
|
12
|
+
url: "https://github.com/stripe/agent-toolkit"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
tag: GAME
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: unity-mcp
|
|
5
|
+
description: "Unity Editor integration — scene management, asset control, code generation"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@anthropic/unity-mcp"]
|
|
8
|
+
tags: [GAME]
|
|
9
|
+
category: game-engine
|
|
10
|
+
url: "https://github.com/CoplayDev/unity-mcp"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
tag: HEALTHCARE
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: postgres
|
|
5
|
+
description: "PostgreSQL database inspection, queries, and schema management — common backend for EHR/clinical data"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@modelcontextprotocol/server-postgres"]
|
|
8
|
+
tags: [DATA-PIPELINE, API, HEALTHCARE]
|
|
9
|
+
category: database
|
|
10
|
+
env:
|
|
11
|
+
POSTGRES_CONNECTION_STRING: ""
|
|
12
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/postgres"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
tag: HIPAA
|
|
2
|
+
section: instructions
|
|
3
|
+
blocks:
|
|
4
|
+
- id: pii-masking
|
|
5
|
+
tier: recommended
|
|
6
|
+
title: "PII Masking & Data Protection"
|
|
7
|
+
content: |
|
|
8
|
+
## PII Masking & Data Protection
|
|
9
|
+
|
|
10
|
+
- Identify all Personally Identifiable Information (PII) fields at design time using the 18 HIPAA identifiers as a baseline.
|
|
11
|
+
- Implement masking templates for every PII field: full mask for display, partial mask for verification, tokenized for logging.
|
|
12
|
+
- Apply dynamic masking based on user role — clinicians see full data, billing sees partial, analytics sees only de-identified data.
|
|
13
|
+
- Never store raw PII in caches, message queues, or temporary files. Use tokenized references that resolve through a secure lookup service.
|
|
14
|
+
- Validate masking coverage with automated tests: no PII field should reach a log sink, error report, or analytics pipeline unmasked.
|
|
15
|
+
- Maintain a PII field registry as a living document — every new field must be classified before it enters the data model.
|
|
16
|
+
|
|
17
|
+
- id: encryption-checks
|
|
18
|
+
tier: recommended
|
|
19
|
+
title: "Encryption Verification & Key Management"
|
|
20
|
+
content: |
|
|
21
|
+
## Encryption Verification & Key Management
|
|
22
|
+
|
|
23
|
+
- Enforce AES-256 encryption at rest for all data stores containing PII. Verify encryption status in CI with infrastructure-as-code checks.
|
|
24
|
+
- Require TLS 1.2+ for all data in transit. Reject connections using older protocols at the load balancer level.
|
|
25
|
+
- Use envelope encryption with a managed KMS (AWS KMS, Azure Key Vault, GCP KMS). Never store encryption keys alongside encrypted data.
|
|
26
|
+
- Rotate encryption keys on a defined schedule (90 days minimum). Automate rotation and re-encryption of affected data.
|
|
27
|
+
- Include encryption verification in deployment checklists: database encryption enabled, TLS certificates valid, KMS policies correct.
|
|
28
|
+
- Test encryption boundaries: verify that data crossing service boundaries remains encrypted and that decryption only occurs in authorized services.
|
|
29
|
+
|
|
30
|
+
- id: audit-logging-hipaa
|
|
31
|
+
tier: recommended
|
|
32
|
+
title: "HIPAA Audit Logging"
|
|
33
|
+
content: |
|
|
34
|
+
## HIPAA Audit Logging
|
|
35
|
+
|
|
36
|
+
- Log every access to PII: who, when, what data, from where, and the business justification.
|
|
37
|
+
- Store audit logs in an append-only, tamper-evident store separate from application databases.
|
|
38
|
+
- Retain audit logs for a minimum of 6 years per HIPAA requirements.
|
|
39
|
+
- Generate automated audit reports: access frequency per user, unusual patterns, after-hours access.
|
|
40
|
+
- Implement real-time alerting for anomalous access: bulk record access, out-of-role access, VIP record access.
|
|
41
|
+
- Include a unique correlation ID in every request touching PII for end-to-end traceability across services.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
tag: HIPAA
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: postgres
|
|
5
|
+
description: "PostgreSQL database inspection and schema management — common backend for PHI/PII storage"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@modelcontextprotocol/server-postgres"]
|
|
8
|
+
tags: [HIPAA, HEALTHCARE, API]
|
|
9
|
+
category: database
|
|
10
|
+
env:
|
|
11
|
+
POSTGRES_CONNECTION_STRING: ""
|
|
12
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/postgres"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
tag: INFRA
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: docker
|
|
5
|
+
description: "Docker container and image management via MCP"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "mcp-server-docker"]
|
|
8
|
+
tags: [INFRA]
|
|
9
|
+
category: deployment
|
|
10
|
+
url: "https://github.com/ckreiling/mcp-server-docker"
|
|
11
|
+
|
|
12
|
+
- name: kubernetes
|
|
13
|
+
description: "Kubernetes cluster management — pods, deployments, services"
|
|
14
|
+
command: npx
|
|
15
|
+
args: ["-y", "mcp-server-kubernetes"]
|
|
16
|
+
tags: [INFRA]
|
|
17
|
+
category: deployment
|
|
18
|
+
url: "https://github.com/strowk/mcp-k8s-go"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
tag: LIBRARY
|
|
2
|
+
section: mcp-servers
|
|
3
|
+
servers:
|
|
4
|
+
- name: filesystem
|
|
5
|
+
description: "Secure file operations — read, write, search, and directory management with configurable access controls"
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/"]
|
|
8
|
+
tags: [CLI, LIBRARY]
|
|
9
|
+
category: general
|
|
10
|
+
url: "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem"
|
|
11
|
+
|
|
12
|
+
- name: npm-search
|
|
13
|
+
description: "Search npm registry for packages, check versions, and inspect dependencies"
|
|
14
|
+
command: npx
|
|
15
|
+
args: ["-y", "mcp-server-npm-search"]
|
|
16
|
+
tags: [LIBRARY]
|
|
17
|
+
category: documentation
|
|
18
|
+
url: "https://github.com/nicholasgriffintn/npm-search-mcp-server"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
tag: MEDALLION-ARCHITECTURE
|
|
2
|
+
section: instructions
|
|
3
|
+
blocks:
|
|
4
|
+
- id: bronze-layer
|
|
5
|
+
tier: recommended
|
|
6
|
+
title: "Bronze Layer — Immutable Raw Ingestion"
|
|
7
|
+
content: |
|
|
8
|
+
## Bronze Layer — Immutable Raw Ingestion
|
|
9
|
+
|
|
10
|
+
- Bronze is the landing zone. Data arrives exactly as received from source systems — no transformations, no filtering, no deduplication.
|
|
11
|
+
- Store Bronze data in append-only, immutable formats (Parquet, Delta Lake, Iceberg). Never overwrite or delete Bronze records.
|
|
12
|
+
- Include ingestion metadata on every record: source_system, ingested_at, batch_id, file_origin, raw_checksum.
|
|
13
|
+
- Partition Bronze tables by ingestion date for efficient reprocessing. Never partition by business keys at this layer.
|
|
14
|
+
- Implement schema-on-read: Bronze accepts any schema from source. Schema validation happens at the Silver promotion step.
|
|
15
|
+
- Retain Bronze data indefinitely (or per legal retention policy). Bronze is the recovery point for all downstream reprocessing.
|
|
16
|
+
|
|
17
|
+
- id: silver-layer
|
|
18
|
+
tier: recommended
|
|
19
|
+
title: "Silver Layer — Validated & Conformed"
|
|
20
|
+
content: |
|
|
21
|
+
## Silver Layer — Validated & Conformed
|
|
22
|
+
|
|
23
|
+
- Silver applies data quality rules: type validation, null checks, range constraints, referential integrity, deduplication.
|
|
24
|
+
- Every record in Silver must pass defined quality gates. Records failing validation are routed to a quarantine table, not dropped.
|
|
25
|
+
- Conform naming conventions: standardize column names, date formats, currency codes, and enum values across all Silver tables.
|
|
26
|
+
- Track record lineage: every Silver record links back to its Bronze source via source_record_id and bronze_batch_id.
|
|
27
|
+
- Apply slowly changing dimension (SCD) Type 2 for reference data: maintain history with effective_from and effective_to timestamps.
|
|
28
|
+
- Silver tables define explicit schemas enforced on write. Schema changes require a migration plan and backward compatibility check.
|
|
29
|
+
|
|
30
|
+
- id: gold-layer
|
|
31
|
+
tier: recommended
|
|
32
|
+
title: "Gold Layer — Aggregated & Business-Ready"
|
|
33
|
+
content: |
|
|
34
|
+
## Gold Layer — Aggregated & Business-Ready
|
|
35
|
+
|
|
36
|
+
- Gold tables are purpose-built for specific business use cases: dashboards, ML features, API responses, reports.
|
|
37
|
+
- Apply business logic at the Gold layer: aggregations, joins, calculated fields, business rules, KPI definitions.
|
|
38
|
+
- Optimize Gold tables for read performance: pre-aggregate, denormalize, partition by access patterns.
|
|
39
|
+
- Document every Gold table with its business purpose, refresh cadence, source Silver tables, and SLA.
|
|
40
|
+
- Version Gold table definitions: changes to aggregation logic or business rules are tracked, reviewed, and deployed like code.
|
|
41
|
+
- Implement data contracts for Gold consumers: define expected schema, update frequency, and quality guarantees.
|