feat(mcp): MCP Server Core + Adapter Framework#35
Merged
Conversation
- Add JSON-RPC 2.0 protocol handler - Implement stdio transport for process communication - Create extensible adapter framework (ToolAdapter, ResourceAdapter) - Build adapter registry with lifecycle management - Implement MCPServer core class with MCP protocol support - Add mock adapter for testing - Support tools/list, tools/call, and initialize methods Package structure: - src/server/protocol: JSON-RPC and MCP types - src/server/transport: Stdio transport implementation - src/adapters: Base adapter classes and registry - src/utils: Logger utilities - tests/adapters: Mock adapter for testing Relates to #27
Implement the foundation of the MCP server with a robust, extensible adapter framework. This establishes the core protocol handler and plugin system for all future adapters. Implementation: - JSON-RPC 2.0 protocol handler with full spec compliance - Message routing and request/response handling - Structured error handling with proper error codes - Server lifecycle management (start, stop, health checks) - Stdio transport for process communication - Abstract Transport interface for future HTTP support - Base adapter interfaces (Adapter, ToolAdapter) - Adapter lifecycle hooks (initialize, shutdown, healthCheck) - Adapter Registry for management and execution routing - Message handler utilities and logger - Extracted pure functions following testability guidelines Features: ✅ JSON-RPC 2.0 protocol implementation ✅ Stdio transport with event-based communication ✅ Extensible adapter framework with plugin architecture ✅ Dynamic adapter registration/unregistration ✅ Structured error handling throughout ✅ Comprehensive README with architecture docs ✅ Kebab-case file naming for consistency Testing: - 80 tests, all passing - 67% statement coverage (utils at 94%+, integration at >60%) - Unit tests for JSON-RPC protocol (23 tests) - Unit tests for message handlers (25 tests) - Unit tests for adapter registry (23 tests) - Integration tests for full server stack (9 tests) - Mock adapter for testing framework Documentation: - Comprehensive README with examples - Architecture overview with diagrams - API reference for all public classes - Quick start guide with configuration examples Branch: feat/mcp-server-core Priority: High (blocks all other Epic #3 issues) Estimate: 3 days (actual: ~6 hours with AI assistance) Parent Epic: #26 (Epic: MCP Integration) Issue: #27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the foundational MCP server with a robust, extensible adapter framework. Establishes the core protocol handler and plugin system for all future adapters.
Features
✅ JSON-RPC 2.0 protocol implementation
✅ Stdio transport with event-based communication
✅ Extensible adapter framework with plugin architecture
✅ Dynamic adapter registration/unregistration
✅ Structured error handling throughout
✅ Comprehensive README with architecture docs
✅ Kebab-case file naming for consistency
Testing
Test Organization:
tests/server/jsonrpc.test.ts- Protocol teststests/server/utils/message-handlers.test.ts- Utility teststests/adapters/adapter-registry.test.ts- Registry teststests/integration/server.integration.test.ts- E2E teststests/adapters/mock-adapter.ts- Test helperCoverage by Component:
Architecture
Follows testability guidelines from
docs/TESTABILITY.md:utils/for direct testingDocumentation
File Organization
All files use kebab-case naming for readability:
adapter.ts,adapter-registry.ts,tool-adapter.tsmcp-server.ts,stdio-transport.ts,transport.tsmessage-handlers.tsand corresponding testsSuccess Metrics
Closes
Closes #27