Phase 1: Core VS Code Tool Provider - Created VSCodeToolProvider with 12 core tools (file ops, editor ops, commands) - Implemented VSCodePermissions with 6 permission levels and security controls - Integrated VS Code tools into UnifiedMCPServer tool discovery and routing - Added comprehensive documentation in VSCODE_TOOL_INTEGRATION.md Tools implemented: - File Operations: read_file, write_file, create_file, delete_file, list_directory - Editor Operations: get/set editor content, get/set selection, get active editor - Commands: run_command (with whitelist), show_message - Workspace: get_workspace_folders Security features: - Permission levels: read_only, editor, filesystem, terminal, git, admin - Path sandboxing to prevent access outside workspace - Command whitelisting for safe operations - Audit logging for all VS Code tool operations Next: Implement actual VS Code Extension API bridge and language services
8.0 KiB
VS Code Tool Integration with Agent Coordinator
Overview
This document outlines the implementation of VS Code's built-in tools as MCP (Model Context Protocol) tools within the Agent Coordinator system. This integration allows agents to access VS Code's native capabilities alongside external MCP servers through a unified coordination interface.
Architecture
Current State
- Agent Coordinator acts as a unified MCP server
- Proxies tools from external MCP servers (Context7, filesystem, memory, sequential thinking, etc.)
- Manages task coordination, agent assignment, and cross-codebase workflows
Proposed Enhancement
- Add VS Code Extension API tools as native MCP tools
- Integrate with existing tool routing and coordination system
- Maintain security and permission controls
Implementation Plan
Phase 1: Core VS Code Tool Provider
1.1 Create VSCodeToolProvider Module
File: lib/agent_coordinator/vscode_tool_provider.ex
Core Tools to Implement:
vscode_read_file- Read file contents using VS Code APIvscode_write_file- Write file contentsvscode_create_file- Create new filesvscode_delete_file- Delete filesvscode_list_directory- List directory contentsvscode_get_workspace_folders- Get workspace informationvscode_run_command- Execute VS Code commandsvscode_get_active_editor- Get current editor statevscode_set_editor_content- Modify editor contentvscode_get_selection- Get current text selectionvscode_set_selection- Set text selectionvscode_show_message- Display messages to user
1.2 Tool Definitions
Each tool will have:
- MCP-compliant schema definition
- Input validation
- Error handling
- Audit logging
- Permission checking
Phase 2: Advanced Editor Operations
2.1 Language Services Integration
vscode_get_diagnostics- Get language server diagnosticsvscode_format_document- Format current documentvscode_format_selection- Format selected textvscode_find_references- Find symbol referencesvscode_go_to_definition- Navigate to definitionvscode_rename_symbol- Rename symbolsvscode_code_actions- Get available code actions
2.2 Search and Navigation
vscode_find_in_files- Search across workspacevscode_find_symbols- Find symbols in workspacevscode_goto_line- Navigate to specific linevscode_reveal_in_explorer- Show file in explorer
Phase 3: Terminal and Process Management
3.1 Terminal Operations
vscode_create_terminal- Create new terminalvscode_send_to_terminal- Send commands to terminalvscode_get_terminal_output- Get terminal output (if possible)vscode_close_terminal- Close terminal instances
3.2 Task and Process Management
vscode_run_task- Execute VS Code tasksvscode_get_tasks- List available tasksvscode_debug_start- Start debugging sessionvscode_debug_stop- Stop debugging
Phase 4: Git and Version Control
4.1 Git Operations
vscode_git_status- Get git statusvscode_git_commit- Create commitsvscode_git_push- Push changesvscode_git_pull- Pull changesvscode_git_branch- Branch operationsvscode_git_diff- Get file differences
Phase 5: Extension and Settings Management
5.1 Configuration
vscode_get_settings- Get VS Code settingsvscode_update_settings- Update settingsvscode_get_extensions- List installed extensionsvscode_install_extension- Install extensions (if permitted)
Security and Safety
Permission Model
defmodule AgentCoordinator.VSCodePermissions do
@moduledoc """
Manages permissions for VS Code tool access.
"""
# Permission levels:
# :read_only - File reading, workspace inspection
# :editor - Text editing, selections
# :filesystem - File creation/deletion
# :terminal - Terminal access
# :git - Version control operations
# :admin - Settings, extensions, system commands
end
Sandboxing
- Restrict file operations to workspace folders only
- Prevent access to system files outside workspace
- Rate limiting for expensive operations
- Command whitelist for
vscode_run_command
Audit Logging
- Log all VS Code tool calls with:
- Timestamp
- Agent ID
- Tool name and parameters
- Result summary
- Permission level used
Integration Points
1. UnifiedMCPServer Enhancement
File: lib/agent_coordinator/unified_mcp_server.ex
Add VS Code tools to the tool discovery and routing:
defp get_all_tools(state) do
# Existing external MCP server tools
external_tools = get_external_tools(state)
# New VS Code tools
vscode_tools = VSCodeToolProvider.get_tools()
external_tools ++ vscode_tools
end
defp route_tool_call(tool_name, args, context, state) do
case tool_name do
"vscode_" <> _rest ->
VSCodeToolProvider.handle_tool_call(tool_name, args, context)
_ ->
# Route to external MCP servers
route_to_external_server(tool_name, args, context, state)
end
end
2. Task Coordination
VS Code tools will participate in the same task coordination system:
- Task creation and assignment
- File locking (prevent conflicts)
- Cross-agent coordination
- Priority management
3. Agent Capabilities
Agents can declare VS Code tool capabilities:
capabilities: [
"coding",
"analysis",
"vscode_editing",
"vscode_terminal",
"vscode_git"
]
Usage Examples
Example 1: File Analysis and Editing
{
"tool": "vscode_read_file",
"args": {"path": "src/main.rs"}
}
// Agent reads file, analyzes it
{
"tool": "vscode_get_diagnostics",
"args": {"file": "src/main.rs"}
}
// Agent gets compiler errors
{
"tool": "vscode_set_editor_content",
"args": {
"file": "src/main.rs",
"content": "// Fixed code here",
"range": {"start": 10, "end": 15}
}
}
// Agent fixes the issues
Example 2: Cross-Tool Workflow
// 1. Agent searches documentation using Context7
{"tool": "mcp_context7_get-library-docs", "args": {"libraryID": "/rust/std"}}
// 2. Agent analyzes current code using VS Code
{"tool": "vscode_get_active_editor", "args": {}}
// 3. Agent applies documentation insights to code
{"tool": "vscode_format_document", "args": {}}
{"tool": "vscode_set_editor_content", "args": {...}}
// 4. Agent commits changes using VS Code Git
{"tool": "vscode_git_commit", "args": {"message": "Applied best practices from docs"}}
Benefits
- Unified Tool Access: Agents access both external services and VS Code features through same interface
- Enhanced Capabilities: Complex workflows combining external data with direct IDE manipulation
- Consistent Coordination: Same task management for all tool types
- Security: Controlled access to powerful VS Code features
- Extensibility: Easy to add new VS Code capabilities as needs arise
Implementation Timeline
- Week 1: Phase 1 - Core file and editor operations
- Week 2: Phase 2 - Language services and navigation
- Week 3: Phase 3 - Terminal and task management
- Week 4: Phase 4 - Git integration
- Week 5: Phase 5 - Settings and extension management
- Week 6: Testing, documentation, security review
Testing Strategy
- Unit Tests: Each VS Code tool function
- Integration Tests: Tool coordination and routing
- Security Tests: Permission enforcement and sandboxing
- Performance Tests: Rate limiting and resource usage
- User Acceptance: Real workflow testing with multiple agents
Future Enhancements
- Extension-specific Tools: Tools for specific VS Code extensions
- Collaborative Features: Multi-agent editing coordination
- AI-Enhanced Operations: Intelligent code suggestions and fixes
- Remote Development: Support for remote VS Code scenarios
- Custom Tool Creation: Framework for users to create their own VS Code tools
Notes
This implementation transforms the Agent Coordinator from a simple MCP proxy into a comprehensive development environment orchestrator, enabling sophisticated AI-assisted development workflows.