Skip to main content
Glama

DB & Calculator MCP Server

by dinek-k
database.js2.81 kB
import sqlite3 from 'sqlite3'; import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); class Database { constructor() { this.dbPath = path.join(__dirname, '..', 'data', 'example.db'); this.db = null; } async initialize() { try { // Ensure data directory exists const fs = await import('fs'); const dataDir = path.dirname(this.dbPath); if (!fs.existsSync(dataDir)) { fs.mkdirSync(dataDir, { recursive: true }); } this.db = new sqlite3.Database(this.dbPath); // Create tables await this.createTables(); // Insert sample data await this.insertSampleData(); // Don't log to stdout as it interferes with JSON-RPC // console.log('Database initialized successfully'); } catch (error) { console.error('Database initialization error:', error); throw error; } } async createTables() { return new Promise((resolve, reject) => { this.db.run(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE NOT NULL, age INTEGER, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) `, (err) => { if (err) reject(err); else resolve(); }); }); } async insertSampleData() { const sampleUsers = [ { name: 'John Doe', email: 'john@example.com', age: 30 }, { name: 'Jane Smith', email: 'jane@example.com', age: 25 }, { name: 'Bob Johnson', email: 'bob@example.com', age: 35 }, { name: 'Alice Brown', email: 'alice@example.com', age: 28 } ]; for (const user of sampleUsers) { await this.run( 'INSERT OR IGNORE INTO users (name, email, age) VALUES (?, ?, ?)', [user.name, user.email, user.age] ); } } async run(sql, params = []) { return new Promise((resolve, reject) => { this.db.run(sql, params, function(err) { if (err) reject(err); else resolve({ id: this.lastID, changes: this.changes }); }); }); } async get(sql, params = []) { return new Promise((resolve, reject) => { this.db.get(sql, params, (err, row) => { if (err) reject(err); else resolve(row); }); }); } async all(sql, params = []) { return new Promise((resolve, reject) => { this.db.all(sql, params, (err, rows) => { if (err) reject(err); else resolve(rows); }); }); } async close() { return new Promise((resolve, reject) => { this.db.close((err) => { if (err) reject(err); else resolve(); }); }); } } export default Database;

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dinek-k/MCP-Server-Example-1'

If you have feedback or need assistance with the MCP directory API, please join our Discord server