@yumdee/mcp-studio-registry 0.1.0 → 0.2.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.
- package/dist/__tests__/registry.test.js +59 -11
- package/dist/__tests__/registry.test.js.map +1 -1
- package/dist/cli.d.ts +9 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -31
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +11 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +161 -14
- package/dist/registry.js.map +1 -1
- package/package.json +4 -3
- package/servers/everything-mcp.json +17 -0
- package/servers/fetch-mcp.json +17 -0
- package/servers/filesystem-mcp.json +17 -0
- package/servers/github-mcp.json +17 -0
- package/servers/memory-mcp.json +17 -0
- package/servers/postgres-mcp.json +17 -0
- package/servers/sqlite-mcp.json +17 -0
|
@@ -1,21 +1,69 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { createRegistry } from "../registry.js";
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { createRegistry, buildServerConfig, DEFAULT_LISTINGS } from "../registry.js";
|
|
3
|
+
import { parseTargetApp, addServerToConfig } from "../cli.js";
|
|
3
4
|
import * as path from "path";
|
|
5
|
+
import * as os from "os";
|
|
6
|
+
import { promises as fs } from "fs";
|
|
4
7
|
describe("ServerRegistry", () => {
|
|
5
|
-
it("should
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const all = registry.list();
|
|
10
|
-
expect(all.length).toBeGreaterThanOrEqual(3);
|
|
8
|
+
it("should initialize with default listings out-of-the-box", () => {
|
|
9
|
+
const registry = createRegistry();
|
|
10
|
+
const list = registry.list();
|
|
11
|
+
expect(list.length).toBeGreaterThanOrEqual(7);
|
|
11
12
|
const fsServer = registry.get("filesystem-mcp");
|
|
12
13
|
expect(fsServer).toBeDefined();
|
|
13
14
|
expect(fsServer?.displayName).toBe("Filesystem Access");
|
|
15
|
+
const everythingServer = registry.get("everything-mcp");
|
|
16
|
+
expect(everythingServer).toBeDefined();
|
|
17
|
+
expect(everythingServer?.tags).toContain("reference");
|
|
18
|
+
});
|
|
19
|
+
it("should load disk listings and enable search and filtering", async () => {
|
|
20
|
+
const serversDir = path.resolve(__dirname, "../../servers");
|
|
21
|
+
const registry = createRegistry(serversDir);
|
|
22
|
+
await registry.load();
|
|
23
|
+
const all = registry.list();
|
|
24
|
+
expect(all.length).toBeGreaterThanOrEqual(7);
|
|
14
25
|
const searchResults = registry.search("postgres");
|
|
15
|
-
expect(searchResults.length).
|
|
26
|
+
expect(searchResults.length).toBeGreaterThanOrEqual(1);
|
|
16
27
|
expect(searchResults[0].name).toBe("postgres-mcp");
|
|
17
|
-
const
|
|
18
|
-
expect(
|
|
28
|
+
const dbServers = registry.filterByTag("database");
|
|
29
|
+
expect(dbServers.length).toBeGreaterThanOrEqual(2); // postgres and sqlite
|
|
30
|
+
});
|
|
31
|
+
it("should correctly build client configuration", () => {
|
|
32
|
+
const server = DEFAULT_LISTINGS.find((s) => s.name === "everything-mcp");
|
|
33
|
+
const config = buildServerConfig(server);
|
|
34
|
+
expect(config.command).toBe("npx");
|
|
35
|
+
expect(config.args).toEqual(["-y", "@modelcontextprotocol/server-everything"]);
|
|
36
|
+
expect(config.env).toEqual({});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe("CLI Helpers & Config Generation", () => {
|
|
40
|
+
let tempDir;
|
|
41
|
+
beforeEach(async () => {
|
|
42
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "mcp-test-"));
|
|
43
|
+
});
|
|
44
|
+
afterEach(async () => {
|
|
45
|
+
try {
|
|
46
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
47
|
+
}
|
|
48
|
+
catch { }
|
|
49
|
+
});
|
|
50
|
+
it("should parse target flags correctly", () => {
|
|
51
|
+
expect(parseTargetApp(["add", "filesystem-mcp"])).toBe("claude");
|
|
52
|
+
expect(parseTargetApp(["add", "filesystem-mcp", "--target", "cursor"])).toBe("cursor");
|
|
53
|
+
expect(parseTargetApp(["add", "filesystem-mcp", "--target=cursor"])).toBe("cursor");
|
|
54
|
+
expect(parseTargetApp(["add", "filesystem-mcp", "--cursor"])).toBe("cursor");
|
|
55
|
+
expect(parseTargetApp(["add", "filesystem-mcp", "--target", "claude"])).toBe("claude");
|
|
56
|
+
});
|
|
57
|
+
it("should write valid JSON config to custom config path", async () => {
|
|
58
|
+
const testConfigPath = path.join(tempDir, "claude_desktop_config.json");
|
|
59
|
+
const server = DEFAULT_LISTINGS.find((s) => s.name === "filesystem-mcp");
|
|
60
|
+
await addServerToConfig(server, "claude", testConfigPath);
|
|
61
|
+
const content = await fs.readFile(testConfigPath, "utf-8");
|
|
62
|
+
const parsed = JSON.parse(content);
|
|
63
|
+
expect(parsed.mcpServers).toBeDefined();
|
|
64
|
+
expect(parsed.mcpServers["filesystem-mcp"]).toBeDefined();
|
|
65
|
+
expect(parsed.mcpServers["filesystem-mcp"].command).toBe("npx");
|
|
66
|
+
expect(parsed.mcpServers["filesystem-mcp"].args).toContain("@modelcontextprotocol/server-filesystem");
|
|
19
67
|
});
|
|
20
68
|
});
|
|
21
69
|
//# sourceMappingURL=registry.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/__tests__/registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
* Entry point: npx mcp-studio
|
|
6
6
|
*
|
|
7
7
|
* Commands:
|
|
8
|
-
* mcp-studio search <keyword>
|
|
9
|
-
* mcp-studio list
|
|
10
|
-
* mcp-studio add <name>
|
|
11
|
-
* mcp-studio validate
|
|
8
|
+
* mcp-studio search <keyword> # Search for servers
|
|
9
|
+
* mcp-studio list # List all available servers
|
|
10
|
+
* mcp-studio add <name> [--target claude|cursor] # Install server to Claude Desktop / Cursor
|
|
11
|
+
* mcp-studio validate # Validate all server listings
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
import { ServerListing } from "./registry.js";
|
|
14
|
+
export declare function getClaudeConfigPath(): string;
|
|
15
|
+
export declare function getCursorConfigPath(): string;
|
|
16
|
+
export declare function addServerToConfig(server: ServerListing, targetApp?: "claude" | "cursor", customConfigPath?: string): Promise<string>;
|
|
17
|
+
export declare function parseTargetApp(args: string[]): "claude" | "cursor";
|
|
14
18
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAKH,OAAO,EAAqC,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjF,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,QAAQ,GAAG,QAAmB,EACzC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAiBlE"}
|
package/dist/cli.js
CHANGED
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
* Entry point: npx mcp-studio
|
|
6
6
|
*
|
|
7
7
|
* Commands:
|
|
8
|
-
* mcp-studio search <keyword>
|
|
9
|
-
* mcp-studio list
|
|
10
|
-
* mcp-studio add <name>
|
|
11
|
-
* mcp-studio validate
|
|
8
|
+
* mcp-studio search <keyword> # Search for servers
|
|
9
|
+
* mcp-studio list # List all available servers
|
|
10
|
+
* mcp-studio add <name> [--target claude|cursor] # Install server to Claude Desktop / Cursor
|
|
11
|
+
* mcp-studio validate # Validate all server listings
|
|
12
12
|
*/
|
|
13
13
|
import { promises as fs } from "fs";
|
|
14
14
|
import * as path from "path";
|
|
15
15
|
import * as os from "os";
|
|
16
|
-
import { createRegistry } from "./registry.js";
|
|
17
|
-
function getClaudeConfigPath() {
|
|
16
|
+
import { createRegistry, buildServerConfig } from "./registry.js";
|
|
17
|
+
export function getClaudeConfigPath() {
|
|
18
18
|
const platform = process.platform;
|
|
19
19
|
if (platform === "win32") {
|
|
20
20
|
const appData = process.env.APPDATA || path.join(os.homedir(), "AppData", "Roaming");
|
|
@@ -27,11 +27,11 @@ function getClaudeConfigPath() {
|
|
|
27
27
|
return path.join(os.homedir(), ".config", "Claude", "claude_desktop_config.json");
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
function getCursorConfigPath() {
|
|
30
|
+
export function getCursorConfigPath() {
|
|
31
31
|
return path.join(os.homedir(), ".cursor", "mcp.json");
|
|
32
32
|
}
|
|
33
|
-
async function addServerToConfig(server, targetApp = "claude") {
|
|
34
|
-
const configPath = targetApp === "claude" ? getClaudeConfigPath() : getCursorConfigPath();
|
|
33
|
+
export async function addServerToConfig(server, targetApp = "claude", customConfigPath) {
|
|
34
|
+
const configPath = customConfigPath || (targetApp === "claude" ? getClaudeConfigPath() : getCursorConfigPath());
|
|
35
35
|
const configDir = path.dirname(configPath);
|
|
36
36
|
await fs.mkdir(configDir, { recursive: true });
|
|
37
37
|
let config = { mcpServers: {} };
|
|
@@ -49,22 +49,34 @@ async function addServerToConfig(server, targetApp = "claude") {
|
|
|
49
49
|
console.warn("⚠️ Warning: could not parse existing config, creating fresh configuration.");
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
let args = [];
|
|
55
|
-
if (server.command && server.command.includes(" ")) {
|
|
56
|
-
const parts = server.command.split(" ");
|
|
57
|
-
command = parts[0];
|
|
58
|
-
args = parts.slice(1);
|
|
59
|
-
}
|
|
60
|
-
config.mcpServers[server.name] = {
|
|
61
|
-
command,
|
|
62
|
-
args,
|
|
63
|
-
env: {},
|
|
64
|
-
};
|
|
52
|
+
const serverConfig = buildServerConfig(server);
|
|
53
|
+
config.mcpServers[server.name] = serverConfig;
|
|
65
54
|
await fs.writeFile(configPath, JSON.stringify(config, null, 2), "utf8");
|
|
66
55
|
console.log(`✅ Successfully added "${server.displayName}" (${server.name}) to ${targetApp} config!`);
|
|
67
56
|
console.log(`📁 Config path: ${configPath}`);
|
|
57
|
+
return configPath;
|
|
58
|
+
}
|
|
59
|
+
export function parseTargetApp(args) {
|
|
60
|
+
const targetIndex = args.indexOf("--target");
|
|
61
|
+
if (targetIndex !== -1 && args[targetIndex + 1]) {
|
|
62
|
+
const val = args[targetIndex + 1].toLowerCase();
|
|
63
|
+
if (val === "cursor")
|
|
64
|
+
return "cursor";
|
|
65
|
+
if (val === "claude")
|
|
66
|
+
return "claude";
|
|
67
|
+
}
|
|
68
|
+
const flagWithEqual = args.find((a) => a.startsWith("--target="));
|
|
69
|
+
if (flagWithEqual) {
|
|
70
|
+
const val = flagWithEqual.split("=")[1]?.toLowerCase();
|
|
71
|
+
if (val === "cursor")
|
|
72
|
+
return "cursor";
|
|
73
|
+
if (val === "claude")
|
|
74
|
+
return "claude";
|
|
75
|
+
}
|
|
76
|
+
if (args.includes("--cursor") || args.includes("cursor")) {
|
|
77
|
+
return "cursor";
|
|
78
|
+
}
|
|
79
|
+
return "claude";
|
|
68
80
|
}
|
|
69
81
|
async function main() {
|
|
70
82
|
const args = process.argv.slice(2);
|
|
@@ -101,7 +113,7 @@ async function main() {
|
|
|
101
113
|
servers.forEach((server) => {
|
|
102
114
|
const verified = server.verified ? "✓" : " ";
|
|
103
115
|
const tags = server.tags ? `[${server.tags.join(", ")}]` : "";
|
|
104
|
-
console.log(`[${verified}] ${server.displayName.padEnd(
|
|
116
|
+
console.log(`[${verified}] ${server.displayName.padEnd(28)} (${server.name.padEnd(18)}) ${tags}`);
|
|
105
117
|
});
|
|
106
118
|
break;
|
|
107
119
|
}
|
|
@@ -111,14 +123,14 @@ async function main() {
|
|
|
111
123
|
console.error("Usage: mcp-studio add <name> [--target claude|cursor]");
|
|
112
124
|
process.exit(1);
|
|
113
125
|
}
|
|
114
|
-
const targetFlag =
|
|
126
|
+
const targetFlag = parseTargetApp(args);
|
|
115
127
|
const server = registry.get(name);
|
|
116
128
|
if (!server) {
|
|
117
129
|
console.error(`Error: Server "${name}" not found in registry.`);
|
|
118
130
|
console.error("Run 'mcp-studio list' to see all available servers.");
|
|
119
131
|
process.exit(1);
|
|
120
132
|
}
|
|
121
|
-
console.log(`Installing ${server.displayName} (${server.name})...`);
|
|
133
|
+
console.log(`Installing ${server.displayName} (${server.name}) for ${targetFlag}...`);
|
|
122
134
|
await addServerToConfig(server, targetFlag);
|
|
123
135
|
break;
|
|
124
136
|
}
|
|
@@ -127,7 +139,7 @@ async function main() {
|
|
|
127
139
|
const servers = registry.list();
|
|
128
140
|
let errors = 0;
|
|
129
141
|
for (const server of servers) {
|
|
130
|
-
if (!server.name || !server.command && !server.endpoint) {
|
|
142
|
+
if (!server.name || (!server.command && !server.endpoint)) {
|
|
131
143
|
console.error(`❌ Invalid listing: ${server.name} missing command or endpoint.`);
|
|
132
144
|
errors++;
|
|
133
145
|
}
|
|
@@ -150,14 +162,20 @@ async function main() {
|
|
|
150
162
|
console.log("Commands:");
|
|
151
163
|
console.log(" search <keyword> Search for servers");
|
|
152
164
|
console.log(" list List all servers");
|
|
153
|
-
console.log(" add <name> [--target cursor]
|
|
165
|
+
console.log(" add <name> [--target claude|cursor] Install a server into Claude Desktop / Cursor");
|
|
154
166
|
console.log(" validate Validate server listings");
|
|
155
167
|
break;
|
|
156
168
|
}
|
|
157
169
|
}
|
|
158
170
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
171
|
+
import { fileURLToPath } from "url";
|
|
172
|
+
// Execute main if run directly as a CLI script
|
|
173
|
+
const isDirectRun = Boolean(process.argv[1] &&
|
|
174
|
+
fileURLToPath(import.meta.url).toLowerCase() === path.resolve(process.argv[1]).toLowerCase());
|
|
175
|
+
if (isDirectRun) {
|
|
176
|
+
main().catch((err) => {
|
|
177
|
+
console.error("Fatal error:", err);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
163
181
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* - ServerRegistry class - query and manage server listings
|
|
8
8
|
* - ServerListing type - server definition
|
|
9
9
|
* - createRegistry() - factory function
|
|
10
|
+
* - DEFAULT_LISTINGS - built-in server catalog
|
|
11
|
+
* - buildServerConfig() - utility for config generation
|
|
10
12
|
*/
|
|
11
|
-
export { ServerRegistry, createRegistry, type ServerListing } from "./registry.js";
|
|
13
|
+
export { ServerRegistry, createRegistry, buildServerConfig, DEFAULT_LISTINGS, ServerListingSchema, type ServerListing, } from "./registry.js";
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
* - ServerRegistry class - query and manage server listings
|
|
8
8
|
* - ServerListing type - server definition
|
|
9
9
|
* - createRegistry() - factory function
|
|
10
|
+
* - DEFAULT_LISTINGS - built-in server catalog
|
|
11
|
+
* - buildServerConfig() - utility for config generation
|
|
10
12
|
*/
|
|
11
|
-
export { ServerRegistry, createRegistry } from "./registry.js";
|
|
13
|
+
export { ServerRegistry, createRegistry, buildServerConfig, DEFAULT_LISTINGS, ServerListingSchema, } from "./registry.js";
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,eAAe,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* MCP Server Registry
|
|
3
3
|
*
|
|
4
4
|
* Manages the collection of community-submitted MCP server listings.
|
|
5
|
-
* Listings are JSON files in servers/ directory.
|
|
5
|
+
* Listings are JSON files in servers/ directory with built-in default fallbacks.
|
|
6
6
|
*/
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
export declare const ServerListingSchema: z.ZodObject<{
|
|
@@ -69,6 +69,15 @@ export declare const ServerListingSchema: z.ZodObject<{
|
|
|
69
69
|
lastVerified?: string | undefined;
|
|
70
70
|
}>;
|
|
71
71
|
export type ServerListing = z.infer<typeof ServerListingSchema>;
|
|
72
|
+
export declare const DEFAULT_LISTINGS: ServerListing[];
|
|
73
|
+
/**
|
|
74
|
+
* Builds the MCP configuration entry for Claude Desktop or Cursor
|
|
75
|
+
*/
|
|
76
|
+
export declare function buildServerConfig(server: ServerListing): {
|
|
77
|
+
command: string;
|
|
78
|
+
args: string[];
|
|
79
|
+
env: Record<string, string>;
|
|
80
|
+
};
|
|
72
81
|
/**
|
|
73
82
|
* Registry class - loads and queries server listings
|
|
74
83
|
*/
|
|
@@ -77,7 +86,7 @@ export declare class ServerRegistry {
|
|
|
77
86
|
private serversDir?;
|
|
78
87
|
constructor(serversDir?: string);
|
|
79
88
|
/**
|
|
80
|
-
* Load listings from the registry directory
|
|
89
|
+
* Load listings from the registry directory (merging/overriding defaults)
|
|
81
90
|
*/
|
|
82
91
|
load(): Promise<void>;
|
|
83
92
|
/**
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,UAAU,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAwH3C,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B,CAaA;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,UAAU,CAAC,EAAE,MAAM;IAQ/B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmD3B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKtC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE;IAWxC;;OAEG;IACH,IAAI,IAAI,aAAa,EAAE;IAIvB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE;CAM1C;AAED,wBAAgB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAElE"}
|
package/dist/registry.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* MCP Server Registry
|
|
3
3
|
*
|
|
4
4
|
* Manages the collection of community-submitted MCP server listings.
|
|
5
|
-
* Listings are JSON files in servers/ directory.
|
|
5
|
+
* Listings are JSON files in servers/ directory with built-in default fallbacks.
|
|
6
6
|
*/
|
|
7
7
|
import { promises as fs } from "fs";
|
|
8
8
|
import * as path from "path";
|
|
@@ -27,6 +27,144 @@ export const ServerListingSchema = z.object({
|
|
|
27
27
|
verified: z.boolean().optional(),
|
|
28
28
|
lastVerified: z.string().datetime().optional(),
|
|
29
29
|
});
|
|
30
|
+
export const DEFAULT_LISTINGS = [
|
|
31
|
+
{
|
|
32
|
+
name: "filesystem-mcp",
|
|
33
|
+
displayName: "Filesystem Access",
|
|
34
|
+
description: "MCP server for safe, sandboxed access to the local filesystem. Read and write files with configurable permissions.",
|
|
35
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem",
|
|
36
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
37
|
+
transport: "stdio",
|
|
38
|
+
command: "npx -y @modelcontextprotocol/server-filesystem .",
|
|
39
|
+
author: {
|
|
40
|
+
name: "Anthropic",
|
|
41
|
+
github: "modelcontextprotocol",
|
|
42
|
+
},
|
|
43
|
+
license: "MIT",
|
|
44
|
+
tags: ["filesystem", "files", "io"],
|
|
45
|
+
verified: true,
|
|
46
|
+
lastVerified: "2024-01-15T10:00:00Z",
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "postgres-mcp",
|
|
50
|
+
displayName: "PostgreSQL Database",
|
|
51
|
+
description: "MCP server for querying PostgreSQL databases. Execute SQL queries, inspect schema, and manage connections.",
|
|
52
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/postgres",
|
|
53
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
54
|
+
transport: "stdio",
|
|
55
|
+
command: "npx -y @modelcontextprotocol/server-postgres",
|
|
56
|
+
author: {
|
|
57
|
+
name: "Anthropic",
|
|
58
|
+
github: "modelcontextprotocol",
|
|
59
|
+
},
|
|
60
|
+
license: "MIT",
|
|
61
|
+
tags: ["database", "sql", "postgres"],
|
|
62
|
+
verified: true,
|
|
63
|
+
lastVerified: "2024-01-15T10:00:00Z",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "github-mcp",
|
|
67
|
+
displayName: "GitHub Integration",
|
|
68
|
+
description: "MCP server for GitHub API access. Search repositories, manage issues/PRs, read source code, and more.",
|
|
69
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/github",
|
|
70
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
71
|
+
transport: "stdio",
|
|
72
|
+
command: "npx -y @modelcontextprotocol/server-github",
|
|
73
|
+
author: {
|
|
74
|
+
name: "Anthropic",
|
|
75
|
+
github: "modelcontextprotocol",
|
|
76
|
+
},
|
|
77
|
+
license: "MIT",
|
|
78
|
+
tags: ["github", "vcs", "api"],
|
|
79
|
+
verified: true,
|
|
80
|
+
lastVerified: "2024-01-15T10:00:00Z",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "everything-mcp",
|
|
84
|
+
displayName: "MCP Reference Everything",
|
|
85
|
+
description: "The official MCP reference server showcasing all protocol features: tools, prompts, resources, sampling, and notifications.",
|
|
86
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/everything",
|
|
87
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
88
|
+
transport: "stdio",
|
|
89
|
+
command: "npx -y @modelcontextprotocol/server-everything",
|
|
90
|
+
author: {
|
|
91
|
+
name: "Anthropic",
|
|
92
|
+
github: "modelcontextprotocol",
|
|
93
|
+
},
|
|
94
|
+
license: "MIT",
|
|
95
|
+
tags: ["reference", "testing", "everything", "tools", "resources", "prompts"],
|
|
96
|
+
verified: true,
|
|
97
|
+
lastVerified: "2024-03-01T10:00:00Z",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "memory-mcp",
|
|
101
|
+
displayName: "Knowledge Graph Memory",
|
|
102
|
+
description: "MCP server implementing persistent graph-based memory storage for conversational context and semantic entities.",
|
|
103
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/memory",
|
|
104
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
105
|
+
transport: "stdio",
|
|
106
|
+
command: "npx -y @modelcontextprotocol/server-memory",
|
|
107
|
+
author: {
|
|
108
|
+
name: "Anthropic",
|
|
109
|
+
github: "modelcontextprotocol",
|
|
110
|
+
},
|
|
111
|
+
license: "MIT",
|
|
112
|
+
tags: ["memory", "knowledge-graph", "storage", "context"],
|
|
113
|
+
verified: true,
|
|
114
|
+
lastVerified: "2024-03-01T10:00:00Z",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "fetch-mcp",
|
|
118
|
+
displayName: "Web Fetch & HTML Parser",
|
|
119
|
+
description: "MCP server to fetch web content and convert HTML pages into clean markdown for LLM ingestion.",
|
|
120
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/fetch",
|
|
121
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
122
|
+
transport: "stdio",
|
|
123
|
+
command: "npx -y @modelcontextprotocol/server-fetch",
|
|
124
|
+
author: {
|
|
125
|
+
name: "Anthropic",
|
|
126
|
+
github: "modelcontextprotocol",
|
|
127
|
+
},
|
|
128
|
+
license: "MIT",
|
|
129
|
+
tags: ["fetch", "web", "html", "markdown", "http"],
|
|
130
|
+
verified: true,
|
|
131
|
+
lastVerified: "2024-03-01T10:00:00Z",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: "sqlite-mcp",
|
|
135
|
+
displayName: "SQLite Database Explorer",
|
|
136
|
+
description: "MCP server for querying and inspecting local SQLite databases, running read queries, and inspecting table schemas.",
|
|
137
|
+
homepage: "https://github.com/modelcontextprotocol/servers/tree/main/src/sqlite",
|
|
138
|
+
repository: "https://github.com/modelcontextprotocol/servers",
|
|
139
|
+
transport: "stdio",
|
|
140
|
+
command: "npx -y @modelcontextprotocol/server-sqlite --db-path ./test.db",
|
|
141
|
+
author: {
|
|
142
|
+
name: "Anthropic",
|
|
143
|
+
github: "modelcontextprotocol",
|
|
144
|
+
},
|
|
145
|
+
license: "MIT",
|
|
146
|
+
tags: ["database", "sqlite", "sql", "storage"],
|
|
147
|
+
verified: true,
|
|
148
|
+
lastVerified: "2024-03-01T10:00:00Z",
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
/**
|
|
152
|
+
* Builds the MCP configuration entry for Claude Desktop or Cursor
|
|
153
|
+
*/
|
|
154
|
+
export function buildServerConfig(server) {
|
|
155
|
+
let command = server.command || "npx";
|
|
156
|
+
let args = [];
|
|
157
|
+
if (server.command && server.command.includes(" ")) {
|
|
158
|
+
const parts = server.command.split(" ");
|
|
159
|
+
command = parts[0];
|
|
160
|
+
args = parts.slice(1);
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
command,
|
|
164
|
+
args,
|
|
165
|
+
env: {},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
30
168
|
/**
|
|
31
169
|
* Registry class - loads and queries server listings
|
|
32
170
|
*/
|
|
@@ -34,9 +172,13 @@ export class ServerRegistry {
|
|
|
34
172
|
constructor(serversDir) {
|
|
35
173
|
this.listings = new Map();
|
|
36
174
|
this.serversDir = serversDir;
|
|
175
|
+
// Pre-populate with default listings so registry never returns 0 results
|
|
176
|
+
for (const listing of DEFAULT_LISTINGS) {
|
|
177
|
+
this.listings.set(listing.name, listing);
|
|
178
|
+
}
|
|
37
179
|
}
|
|
38
180
|
/**
|
|
39
|
-
* Load listings from the registry directory
|
|
181
|
+
* Load listings from the registry directory (merging/overriding defaults)
|
|
40
182
|
*/
|
|
41
183
|
async load() {
|
|
42
184
|
const candidates = [];
|
|
@@ -68,20 +210,25 @@ export class ServerRegistry {
|
|
|
68
210
|
if (!targetDir) {
|
|
69
211
|
return;
|
|
70
212
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
213
|
+
try {
|
|
214
|
+
const files = await fs.readdir(targetDir);
|
|
215
|
+
for (const file of files) {
|
|
216
|
+
if (!file.endsWith(".json"))
|
|
217
|
+
continue;
|
|
218
|
+
try {
|
|
219
|
+
const filePath = path.join(targetDir, file);
|
|
220
|
+
const content = await fs.readFile(filePath, "utf8");
|
|
221
|
+
const parsed = ServerListingSchema.parse(JSON.parse(content));
|
|
222
|
+
this.listings.set(parsed.name, parsed);
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
console.warn(`Warning: failed to load server listing from ${file}:`, err);
|
|
226
|
+
}
|
|
83
227
|
}
|
|
84
228
|
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
console.warn(`Warning: failed reading directory ${targetDir}:`, err);
|
|
231
|
+
}
|
|
85
232
|
}
|
|
86
233
|
/**
|
|
87
234
|
* Get a server listing by name
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACpC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,OAAO,cAAc;IAIzB,YAAY,UAAmB;QAHvB,aAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;QAIvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yumdee/mcp-studio-registry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Community MCP server registry + CLI installer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
+
"servers",
|
|
13
14
|
"README.md"
|
|
14
15
|
],
|
|
15
16
|
"publishConfig": {
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
"license": "MIT",
|
|
25
26
|
"dependencies": {
|
|
26
27
|
"zod": "^3.22.0",
|
|
27
|
-
"@yumdee/mcp-studio-core": "0.
|
|
28
|
+
"@yumdee/mcp-studio-core": "0.2.0"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@types/node": "^20.0.0",
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
"dev": "tsc --watch --incremental",
|
|
36
37
|
"build": "tsc",
|
|
37
38
|
"type-check": "tsc --noEmit",
|
|
38
|
-
"lint": "eslint src/
|
|
39
|
+
"lint": "eslint src/",
|
|
39
40
|
"validate-listings": "node ./scripts/validate-listings.js",
|
|
40
41
|
"test": "vitest run"
|
|
41
42
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "everything-mcp",
|
|
3
|
+
"displayName": "MCP Reference Everything",
|
|
4
|
+
"description": "The official MCP reference server showcasing all protocol features: tools, prompts, resources, sampling, and notifications.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/everything",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx -y @modelcontextprotocol/server-everything",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["reference", "testing", "everything", "tools", "resources", "prompts"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-03-01T10:00:00Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fetch-mcp",
|
|
3
|
+
"displayName": "Web Fetch & HTML Parser",
|
|
4
|
+
"description": "MCP server to fetch web content and convert HTML pages into clean markdown for LLM ingestion.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/fetch",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx -y @modelcontextprotocol/server-fetch",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["fetch", "web", "html", "markdown", "http"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-03-01T10:00:00Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "filesystem-mcp",
|
|
3
|
+
"displayName": "Filesystem Access",
|
|
4
|
+
"description": "MCP server for safe, sandboxed access to the local filesystem. Read and write files with configurable permissions.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx @modelcontextprotocol/server-filesystem",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["filesystem", "files", "io"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-01-15T10:00:00Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "github-mcp",
|
|
3
|
+
"displayName": "GitHub Integration",
|
|
4
|
+
"description": "MCP server for GitHub API access. Search repositories, manage issues/PRs, read source code, and more.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/github",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx @modelcontextprotocol/server-github",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["github", "vcs", "api"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-01-15T10:00:00Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "memory-mcp",
|
|
3
|
+
"displayName": "Knowledge Graph Memory",
|
|
4
|
+
"description": "MCP server implementing persistent graph-based memory storage for conversational context and semantic entities.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/memory",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx -y @modelcontextprotocol/server-memory",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["memory", "knowledge-graph", "storage", "context"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-03-01T10:00:00Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "postgres-mcp",
|
|
3
|
+
"displayName": "PostgreSQL Database",
|
|
4
|
+
"description": "MCP server for querying PostgreSQL databases. Execute SQL queries, inspect schema, and manage connections.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/postgres",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx @modelcontextprotocol/server-postgres",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["database", "sql", "postgres"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-01-15T10:00:00Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sqlite-mcp",
|
|
3
|
+
"displayName": "SQLite Database Explorer",
|
|
4
|
+
"description": "MCP server for querying and inspecting local SQLite databases, running read queries, and inspecting table schemas.",
|
|
5
|
+
"homepage": "https://github.com/modelcontextprotocol/servers/tree/main/src/sqlite",
|
|
6
|
+
"repository": "https://github.com/modelcontextprotocol/servers",
|
|
7
|
+
"transport": "stdio",
|
|
8
|
+
"command": "npx -y @modelcontextprotocol/server-sqlite --db-path ./test.db",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Anthropic",
|
|
11
|
+
"github": "modelcontextprotocol"
|
|
12
|
+
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"tags": ["database", "sqlite", "sql", "storage"],
|
|
15
|
+
"verified": true,
|
|
16
|
+
"lastVerified": "2024-03-01T10:00:00Z"
|
|
17
|
+
}
|