@ai-standards/vsmcp-core
v0.9.2
Published
VS Code Model Context Protocol Core
Maintainers
Readme
VS Code Model Context Protocol Core
A TypeScript library for building VS Code extensions that integrate with the Model Context Protocol (MCP).
Installation
npm install @ai-standards/vsmcp-coreCompatibility
Works with all TypeScript module resolution strategies:
- ✅ Legacy (
"moduleResolution": "node") - Default TypeScript setting - ✅ Modern (
"moduleResolution": "bundler"or"node16") - Latest TypeScript - ✅ ESM and CommonJS - Universal compatibility
No tsconfig.json changes required!
Platform API
Access VS Code APIs with type safety and testability.
Import
import { getVsCode, injectVsCode } from '@ai-standards/vsmcp-core/platform';Setup in Extension
import * as vscode from 'vscode';
import { injectVsCode } from '@ai-standards/vsmcp-core/platform';
export function activate(context: vscode.ExtensionContext) {
// Inject VS Code API for use throughout your extension
injectVsCode(vscode);
}Usage
import { getVsCode, type VsCodeInstance } from '@ai-standards/vsmcp-core/platform';
function showMessage(text: string) {
const vscode = getVsCode();
if (vscode) {
vscode.window.showInformationMessage(text);
}
}Testing
import { useTestPlatform, resetPlatform, type VsCodeInstance } from '@ai-standards/vsmcp-core/platform';
import { vi } from 'vitest';
beforeEach(() => {
resetPlatform();
});
it('should show message', () => {
const mockVscode: VsCodeInstance = {
workspace: {},
window: { showInformationMessage: vi.fn() },
commands: {},
env: {},
};
useTestPlatform(mockVscode);
showMessage('test');
expect(mockVscode.window.showInformationMessage).toHaveBeenCalledWith('test');
});API Reference
injectVsCode(vscode: typeof import('vscode')): void
Inject the VS Code module. Call this in your extension's activate() function.
getVsCode(): VsCodeInstance | null
Get the current VS Code instance. Returns null if not available or not injected.
useTestPlatform(mock: VsCodeInstance): void
Replace VS Code instance with a test mock. For testing only.
resetPlatform(): void
Reset to use the real VS Code instance. For test cleanup.
Type Safety
All VS Code API properties are properly typed using typeof import('vscode'):
const vscode = getVsCode();
if (vscode) {
// ✅ Fully typed - IntelliSense and type checking work perfectly
vscode.window.showInformationMessage('hello');
vscode.workspace.getConfiguration('myExtension');
vscode.commands.registerCommand('myCommand', () => {});
// Uri utilities also available
const fileUri = vscode.Uri.file('/path/to/file');
const httpUri = vscode.Uri.parse('https://example.com');
}License
MIT
