Initial commit of akmon project

This commit is contained in:
2026-01-20 08:04:15 +08:00
commit 77a2bab985
1309 changed files with 343305 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import pg from "pg";
const args = process.argv.slice(2);
console.log("argv", args);
if (args.length === 0) {
console.error("missing DSN");
process.exit(1);
}
const databaseUrl = args[0];
console.log("dsn", databaseUrl);
const server = new Server({
name: "debug",
version: "0.0.0",
}, {
capabilities: {
resources: {},
tools: {},
},
});
const pool = new pg.Pool({ connectionString: databaseUrl });
const SCHEMA_PATH = "schema";
server.onerror = (err) => {
console.error("server transport error", err);
};
server.setRequestHandler(ListResourcesRequestSchema, async () => {
const client = await pool.connect();
try {
const result = await client.query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'");
return {
resources: result.rows.map((row) => ({
uri: row.table_name,
mimeType: "application/json",
name: row.table_name,
})),
};
} finally {
client.release();
}
});
server.setRequestHandler(ReadResourceRequestSchema, async () => ({
contents: [],
}));
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [],
}));
server.setRequestHandler(CallToolRequestSchema, async () => ({
content: [],
isError: false,
}));
process.on("exit", (code) => {
console.log("process exit", code);
});
process.on("beforeExit", (code) => {
console.log("beforeExit", code);
});
process.on("uncaughtException", (err) => {
console.error("uncaughtException", err);
});
process.on("unhandledRejection", (reason) => {
console.error("unhandledRejection", reason);
});
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.log("server connected");
}
main().catch((err) => {
console.error("main error", err);
process.exit(1);
});