storage-map-mcp-server 0.1.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +265 -0
  3. package/build/clients/MySqlClient.d.ts +14 -0
  4. package/build/clients/MySqlClient.d.ts.map +1 -0
  5. package/build/clients/MySqlClient.js +141 -0
  6. package/build/clients/MySqlClient.js.map +1 -0
  7. package/build/clients/athena-client/AthenaClient.d.ts +17 -0
  8. package/build/clients/athena-client/AthenaClient.d.ts.map +1 -0
  9. package/build/clients/athena-client/AthenaClient.js +199 -0
  10. package/build/clients/athena-client/AthenaClient.js.map +1 -0
  11. package/build/clients/athena-client/index.d.ts +2 -0
  12. package/build/clients/athena-client/index.d.ts.map +1 -0
  13. package/build/clients/athena-client/index.js +2 -0
  14. package/build/clients/athena-client/index.js.map +1 -0
  15. package/build/clients/index.d.ts +3 -0
  16. package/build/clients/index.d.ts.map +1 -0
  17. package/build/clients/index.js +3 -0
  18. package/build/clients/index.js.map +1 -0
  19. package/build/clients/mysql-client/MySqlClient.d.ts +14 -0
  20. package/build/clients/mysql-client/MySqlClient.d.ts.map +1 -0
  21. package/build/clients/mysql-client/MySqlClient.js +141 -0
  22. package/build/clients/mysql-client/MySqlClient.js.map +1 -0
  23. package/build/clients/mysql-client/index.d.ts +2 -0
  24. package/build/clients/mysql-client/index.d.ts.map +1 -0
  25. package/build/clients/mysql-client/index.js +2 -0
  26. package/build/clients/mysql-client/index.js.map +1 -0
  27. package/build/clients/mysql.d.ts +14 -0
  28. package/build/clients/mysql.d.ts.map +1 -0
  29. package/build/clients/mysql.js +68 -0
  30. package/build/clients/mysql.js.map +1 -0
  31. package/build/config.d.ts +20 -0
  32. package/build/config.d.ts.map +1 -0
  33. package/build/config.js +80 -0
  34. package/build/config.js.map +1 -0
  35. package/build/index.d.ts +2 -0
  36. package/build/index.d.ts.map +1 -0
  37. package/build/index.js +10 -0
  38. package/build/index.js.map +1 -0
  39. package/build/mcp-connectors/McpConnector.d.ts +14 -0
  40. package/build/mcp-connectors/McpConnector.d.ts.map +1 -0
  41. package/build/mcp-connectors/McpConnector.js +2 -0
  42. package/build/mcp-connectors/McpConnector.js.map +1 -0
  43. package/build/mcp-connectors/McpConnectorRegistry.d.ts +17 -0
  44. package/build/mcp-connectors/McpConnectorRegistry.d.ts.map +1 -0
  45. package/build/mcp-connectors/McpConnectorRegistry.js +46 -0
  46. package/build/mcp-connectors/McpConnectorRegistry.js.map +1 -0
  47. package/build/mcp-connectors/index.d.ts +3 -0
  48. package/build/mcp-connectors/index.d.ts.map +1 -0
  49. package/build/mcp-connectors/index.js +2 -0
  50. package/build/mcp-connectors/index.js.map +1 -0
  51. package/build/server.d.ts +2 -0
  52. package/build/server.d.ts.map +1 -0
  53. package/build/server.js +172 -0
  54. package/build/server.js.map +1 -0
  55. package/package.json +73 -0
@@ -0,0 +1,172 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { z } from "zod";
4
+ import { parseStorageConfigs } from "./config.js";
5
+ import { registry } from "./mcp-connectors/index.js";
6
+ import { MySQLConnector, AthenaConnector } from "./clients/index.js";
7
+ let storageConfigs = [];
8
+ const mcpServer = new McpServer({
9
+ name: "storage-map",
10
+ version: "0.0.1",
11
+ });
12
+ mcpServer.registerTool("list_storages", {
13
+ description: "List all configured storage connections (RDB, NoSQL, Athena, etc.)",
14
+ inputSchema: {},
15
+ }, () => {
16
+ const result = {
17
+ storages: storageConfigs.map(config => ({
18
+ id: config.id,
19
+ type: config.type,
20
+ writeMode: config.writeMode || false,
21
+ status: "configured",
22
+ }))
23
+ };
24
+ return {
25
+ content: [
26
+ {
27
+ type: "text",
28
+ text: JSON.stringify(result, null, 2),
29
+ },
30
+ ],
31
+ };
32
+ });
33
+ mcpServer.registerTool("query", {
34
+ description: "Execute a query on any storage (SQL for RDB/Athena, NoSQL query for MongoDB, etc.)",
35
+ inputSchema: {
36
+ storage_id: z.string().describe("Storage connection ID to use"),
37
+ query: z.string().describe("Query to execute (SQL, MongoDB query JSON, etc.)"),
38
+ parameters: z.any().optional().describe("Optional query parameters"),
39
+ },
40
+ }, async ({ storage_id, query, parameters }) => {
41
+ const config = storageConfigs.find(c => c.id === storage_id);
42
+ if (!config) {
43
+ throw new Error(`Storage ${storage_id} not found`);
44
+ }
45
+ const connector = registry.getConnector(storage_id, config);
46
+ const result = await connector.query(query, parameters);
47
+ return {
48
+ content: [{
49
+ type: "text",
50
+ text: result.text,
51
+ }],
52
+ };
53
+ });
54
+ mcpServer.registerTool("execute", {
55
+ description: "Execute write operations (INSERT, UPDATE, DELETE for SQL; insert, update for NoSQL)",
56
+ inputSchema: {
57
+ storage_id: z.string().describe("Storage connection ID to use"),
58
+ operation: z.string().describe("Operation to execute (SQL statement or NoSQL operation)"),
59
+ parameters: z.any().optional().describe("Optional operation parameters"),
60
+ },
61
+ }, async ({ storage_id, operation, parameters }) => {
62
+ const config = storageConfigs.find(c => c.id === storage_id);
63
+ if (!config) {
64
+ throw new Error(`Storage ${storage_id} not found`);
65
+ }
66
+ const connector = registry.getConnector(storage_id, config);
67
+ const result = await connector.execute(operation, parameters);
68
+ return {
69
+ content: [{
70
+ type: "text",
71
+ text: result.text,
72
+ }],
73
+ };
74
+ });
75
+ mcpServer.registerTool("list_collections", {
76
+ description: "List collections/tables/datasets in a storage (tables for RDB, collections for NoSQL, datasets for Athena)",
77
+ inputSchema: {
78
+ storage_id: z.string().describe("Storage connection ID"),
79
+ schema: z.string().optional().describe("Schema/database name (optional, for RDB/Athena)"),
80
+ },
81
+ }, async ({ storage_id, schema }) => {
82
+ const config = storageConfigs.find(c => c.id === storage_id);
83
+ if (!config) {
84
+ throw new Error(`Storage ${storage_id} not found`);
85
+ }
86
+ const connector = registry.getConnector(storage_id, config);
87
+ const result = await connector.listCollections(schema);
88
+ return {
89
+ content: [{
90
+ type: "text",
91
+ text: result.text,
92
+ }],
93
+ };
94
+ });
95
+ mcpServer.registerTool("describe_collection", {
96
+ description: "Get schema/structure information for a collection/table",
97
+ inputSchema: {
98
+ storage_id: z.string().describe("Storage connection ID"),
99
+ collection: z.string().describe("Collection/table name"),
100
+ schema: z.string().optional().describe("Schema/database name (optional)"),
101
+ },
102
+ }, async ({ storage_id, collection, schema }) => {
103
+ const config = storageConfigs.find(c => c.id === storage_id);
104
+ if (!config) {
105
+ throw new Error(`Storage ${storage_id} not found`);
106
+ }
107
+ const connector = registry.getConnector(storage_id, config);
108
+ const result = await connector.describeCollection(collection, schema);
109
+ return {
110
+ content: [{
111
+ type: "text",
112
+ text: result.text,
113
+ }],
114
+ };
115
+ });
116
+ mcpServer.registerTool("get_storage_info", {
117
+ description: "Get detailed information about a specific storage connection",
118
+ inputSchema: {
119
+ storage_id: z.string().describe("Storage connection ID"),
120
+ },
121
+ }, async ({ storage_id }) => {
122
+ const config = storageConfigs.find(c => c.id === storage_id);
123
+ if (!config) {
124
+ throw new Error(`Storage ${storage_id} not found`);
125
+ }
126
+ const result = {
127
+ id: config.id,
128
+ type: config.type,
129
+ writeMode: config.writeMode || false,
130
+ connection: {
131
+ host: config.connection?.host,
132
+ port: config.connection?.port,
133
+ database: config.connection?.database,
134
+ }
135
+ };
136
+ return {
137
+ content: [
138
+ {
139
+ type: "text",
140
+ text: JSON.stringify(result, null, 2),
141
+ },
142
+ ],
143
+ };
144
+ });
145
+ function initializeStorages() {
146
+ storageConfigs = parseStorageConfigs();
147
+ if (storageConfigs.length === 0) {
148
+ console.error("Warning: No storage configurations found.");
149
+ console.error("Configure using environment variables:");
150
+ console.error(" STORAGE_<ID>_TYPE, STORAGE_<ID>_HOST, etc.");
151
+ console.error(" Or STORAGE_CONFIG with JSON array");
152
+ console.error(" Or simple DB_TYPE, DB_HOST, etc.");
153
+ return;
154
+ }
155
+ registry.register('mysql', MySQLConnector);
156
+ registry.register('athena', AthenaConnector);
157
+ storageConfigs.forEach(config => {
158
+ console.error(` - ${config.id} (${config.type}) writeMode=${config.writeMode || false}`);
159
+ });
160
+ }
161
+ export async function startServer() {
162
+ try {
163
+ initializeStorages();
164
+ const transport = new StdioServerTransport();
165
+ await mcpServer.connect(transport);
166
+ }
167
+ catch (error) {
168
+ console.error("Error starting server:", error);
169
+ throw error;
170
+ }
171
+ }
172
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "storage-map-mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for unified database and storage access",
5
+ "main": "build/index.js",
6
+ "types": "build/index.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "storage-map-server": "build/index.js"
10
+ },
11
+ "files": [
12
+ "build",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "packageManager": "pnpm@10.18.0",
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "dev": "tsx watch src/index.ts",
20
+ "start": "tsx src/index.ts",
21
+ "lint": "eslint src --ext .ts",
22
+ "format": "prettier --write \"src/**/*.ts\"",
23
+ "typecheck": "tsc --noEmit",
24
+ "clean": "rm -rf build"
25
+ },
26
+ "keywords": [
27
+ "mcp",
28
+ "database",
29
+ "mysql",
30
+ "athena",
31
+ "storage",
32
+ "query"
33
+ ],
34
+ "author": "Hoon <ihello0720@gmail.com>",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/cyhoon/mcp-storage-map.git"
39
+ },
40
+ "bugs": {
41
+ "url": "https://github.com/cyhoon/mcp-storage-map/issues"
42
+ },
43
+ "homepage": "https://github.com/cyhoon/mcp-storage-map#readme",
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "dependencies": {
48
+ "@aws-sdk/client-athena": "^3.873.0",
49
+ "@aws-sdk/client-s3": "^3.873.0",
50
+ "@modelcontextprotocol/sdk": "^1.17.2",
51
+ "dotenv": "^17.2.1",
52
+ "joi": "^17.11.0",
53
+ "lru-cache": "^10.1.0",
54
+ "mysql2": "^3.14.3",
55
+ "p-queue": "^8.0.1",
56
+ "winston": "^3.11.0",
57
+ "zod": "^3.25.76"
58
+ },
59
+ "devDependencies": {
60
+ "@types/node": "^24.2.1",
61
+ "@typescript-eslint/eslint-plugin": "^6.16.0",
62
+ "@typescript-eslint/parser": "^6.16.0",
63
+ "@vitest/ui": "^1.1.0",
64
+ "eslint": "^8.56.0",
65
+ "prettier": "^3.1.1",
66
+ "tsx": "^4.20.3",
67
+ "typescript": "^5.9.2",
68
+ "vitest": "^1.1.0"
69
+ },
70
+ "engines": {
71
+ "node": ">=24.13.1"
72
+ }
73
+ }