Skip to main content
Glama

VSCode Language Server MCP Extension

by aaddrick
extension.ts3.29 kB
import * as vscode from 'vscode'; import { MCPServer } from './mcpServer'; import { Logger } from './logger'; let server: MCPServer | undefined; let statusBarItem: vscode.StatusBarItem; let logger: Logger; export function activate(context: vscode.ExtensionContext) { logger = new Logger(); logger.info('VSCode MCP Language Server extension activating...'); // Create status bar item statusBarItem = vscode.window.createStatusBarItem( vscode.StatusBarAlignment.Right, 100 ); statusBarItem.command = 'vscodeMcpLs.showStatus'; context.subscriptions.push(statusBarItem); // Start server if enabled const config = vscode.workspace.getConfiguration('vscodeMcpLs'); if (config.get('enabled', true)) { startServer(); } // Register commands context.subscriptions.push( vscode.commands.registerCommand('vscodeMcpLs.restart', () => { logger.info('Restarting MCP server...'); stopServer(); startServer(); vscode.window.showInformationMessage('MCP Language Server restarted'); }) ); context.subscriptions.push( vscode.commands.registerCommand('vscodeMcpLs.showStatus', () => { const status = server?.isRunning() ? 'Running' : 'Stopped'; const port = vscode.workspace.getConfiguration('vscodeMcpLs').get('port', 3100); vscode.window.showInformationMessage( `MCP Language Server: ${status} on port ${port}` ); }) ); // Watch for configuration changes context.subscriptions.push( vscode.workspace.onDidChangeConfiguration((e) => { if (e.affectsConfiguration('vscodeMcpLs')) { const config = vscode.workspace.getConfiguration('vscodeMcpLs'); if (config.get('enabled', true) && !server?.isRunning()) { startServer(); } else if (!config.get('enabled', true) && server?.isRunning()) { stopServer(); } } }) ); logger.info('VSCode MCP Language Server extension activated'); } export function deactivate() { logger?.info('VSCode MCP Language Server extension deactivating...'); stopServer(); statusBarItem?.dispose(); } function startServer() { try { const config = vscode.workspace.getConfiguration('vscodeMcpLs'); const port = config.get('port', 3100); const logLevel = config.get('logLevel', 'info'); logger.setLevel(logLevel as 'debug' | 'info' | 'warn' | 'error'); server = new MCPServer(port, logger); server.start(); statusBarItem.text = `$(plug) MCP LS:${port}`; statusBarItem.tooltip = `MCP Language Server running on port ${port}`; statusBarItem.show(); logger.info(`MCP Language Server started on port ${port}`); } catch (error) { logger.error('Failed to start MCP server:', error); vscode.window.showErrorMessage( `Failed to start MCP Language Server: ${error}` ); } } function stopServer() { if (server) { server.stop(); server = undefined; statusBarItem.hide(); logger.info('MCP Language Server stopped'); } }

Latest Blog Posts

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/aaddrick/vscode-mcp-language-server'

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