Skip to main content
Glama

DevDb MCP Server

extension.ts4.28 kB
import * as vscode from 'vscode'; import { DevDbViewProvider } from './devdb-view-provider'; import { getVueAssets } from './services/html'; import { LaravelCodelensProvider } from './services/codelens/code-lens-service'; import { showWelcomeMessage } from './services/welcome-message-service'; import { LaravelFactoryGenerator } from './services/laravel/factory-generator'; import { database } from './services/messenger'; import { SqlQueryCodeLensProvider, explainSelectedQuery } from './services/codelens/laravel/sql-query-explainer-provider'; import { contextMenuQueryExplainer, contextMenuLaravelFactoryGenerator } from './services/context-menu-service'; import { DevDbUriHandler } from './uri-handler'; import { goToTable } from './services/go-to-table'; import { startHttpServer, stopHttpServer } from './services/mcp/http-server'; import { initializeDevWorkspaceProRecommendations } from './services/devworkspacepro-recommendation-service'; import { logToOutput } from './services/output-service'; let devDbViewProvider: DevDbViewProvider | undefined; export async function activate(context: vscode.ExtensionContext) { showWelcomeMessage(context); let assets; try { assets = await getVueAssets(context) } catch (error) { return vscode.window.showErrorMessage(`Could not load frontend assets: ${String(error)}`); } if (!assets) return vscode.window.showErrorMessage('Could not load frontend assets') if (!devDbViewProvider) { devDbViewProvider = new DevDbViewProvider(context, assets.jsFile, assets.cssFile); } const provider = vscode.window.registerWebviewViewProvider( DevDbViewProvider.viewType, devDbViewProvider, { webviewOptions: { retainContextWhenHidden: true, } } ); const settings = vscode.workspace.getConfiguration('Devdb'); if (settings.get<boolean>('enableMcpServer', true)) { try { await startHttpServer(); logToOutput('MCP HTTP server started', 'MCP Server'); } catch (error) { vscode.window.showErrorMessage(`Failed to start MCP server: ${error}`); } } context.subscriptions.push(provider); context.subscriptions.push(vscode.commands.registerCommand('devdb.codelens.open-laravel-model-table', tableName => { if (!devDbViewProvider) return; devDbViewProvider.setActiveTable(tableName); })); context.subscriptions.push(vscode.commands.registerCommand('devdb.context-menu.open-table-at-cursor', () => { if (!devDbViewProvider) return; devDbViewProvider.openTableAtCurrentCursor(); })); context.subscriptions.push( vscode.languages.registerCodeLensProvider({ scheme: 'file', language: 'php' }, new SqlQueryCodeLensProvider()) ); context.subscriptions.push( vscode.languages.registerCodeLensProvider({ scheme: 'file', language: 'php' }, new LaravelCodelensProvider()) ); context.subscriptions.push( vscode.commands.registerCommand( 'devdb.laravel.explain-query', (document: vscode.TextDocument, selection: vscode.Selection) => explainSelectedQuery(document, selection)) ); context.subscriptions.push( vscode.commands.registerCommand( 'devdb.laravel.generate-factory', async (modelName: string, modelFilePath: string) => { const generator = new LaravelFactoryGenerator(database); await generator.generateFactory(modelName, modelFilePath); } ) ); context.subscriptions.push( vscode.commands.registerCommand( 'devdb.context-menu.laravel.generate-factory-from-word-under-cursor', contextMenuLaravelFactoryGenerator ) ); context.subscriptions.push( vscode.commands.registerCommand( 'devdb.context-menu.laravel.explain-query', contextMenuQueryExplainer ) ); /** * Register URI handler for devdb:// protocol * * @see https://code.visualstudio.com/api/references/activation-events#onUri */ context.subscriptions.push( vscode.window.registerUriHandler(new DevDbUriHandler()) ); context.subscriptions.push( vscode.commands.registerCommand('devdb.goto-table', () => goToTable(devDbViewProvider)) ); vscode.workspace.onDidChangeConfiguration((event: vscode.ConfigurationChangeEvent) => { if (event.affectsConfiguration('Devdb')) { devDbViewProvider?.notifyConfigChange(event); } }); initializeDevWorkspaceProRecommendations(context); } export function deactivate() { stopHttpServer(); }

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/damms005/devdb-vscode'

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