This comprehensive training teaches you how to build production-ready MCP (Model Context Protocol) servers using Node.js and TypeScript. You'll progress from basic concepts to advanced features like authentication, streaming, and validation.
By the end of this training, you'll understand how to:
- Connect AI agents to external services using the MCP protocol
- Build both stdio and HTTP MCP servers for different deployment scenarios
- Implement real-time streaming capabilities for long-running operations
- Add robust validation patterns with schema and business rule validation
- Secure your services with OAuth 2.1 + PKCE authentication
- Deploy production-ready MCP servers that can handle multiple concurrent clients
This training is open-sourced by Bitovi, a consulting company that helps organizations implement AI capabilities and modern development practices.
Bitovi provides consulting services for:
- AI agent development and MCP integration
- Custom tool development for enterprise workflows
- Production deployment and scaling strategies
- Team training and best practices
Contact Bitovi to accelerate your AI initiatives with expert guidance.
Environment Setup and Prerequisites
Choose between two setup options: Dev Container (one-click setup with Docker) or Manual Installation (full control). Both provide everything needed for the training.
- Option A: Dev Container with pre-configured Node.js 20, VS Code extensions, and port forwarding
- Option B: Manual installation of Node.js 18+, Git, VS Code, and dependencies
- Clone the training repository and verify both stdio and HTTP servers work
- Ready to start building MCP servers!
Understanding the Model Context Protocol
Learn the fundamentals of MCP, how it enables AI agents to interact with external services, and understand the core capabilities (tools, resources, prompts, sampling hooks).
- MCP protocol overview and architecture
- Core capabilities: tools, resources, prompts, sampling hooks
- Transport methods: stdio vs Streamable HTTP
- How agents discover and use MCP services
- Key benefits and use cases
Hands-on Experience with Production MCP Services
Connect VS Code to GitHub's production MCP server and perform real operations like creating and managing GitHub issues. Experience MCP from the client perspective.
- Configure VS Code as an MCP client
- Connect to GitHub's MCP server with OAuth 2.1 + PKCE
- Create and manage GitHub issues through AI agents
- Understand client-server communication patterns
- Learn effective prompting strategies for MCP tools
MCP Server Development with Stdio Transport
Build your first MCP server using stdio transport. Create a text slugification tool and understand the JSON-RPC protocol, tool registration patterns, and schema validation with Zod.
- Create MCP server with stdio transport
- Implement tool registration and input schemas
- Build a practical slugify tool
- Handle JSON-RPC protocol communication
- Use Zod for input validation and type safety
- Connect your server to VS Code
Development and Debugging Tools
Master the MCP Inspector for testing, debugging, and exploring MCP servers. Learn to analyze JSON-RPC messages, connect to remote services, and identify common implementation issues.
- Install and use MCP Inspector for development
- Debug tool implementations and protocol issues
- Connect to remote MCP services (like Atlassian's Rovo)
- Analyze JSON-RPC message flows
- Troubleshoot common MCP server problems
Production-Ready HTTP Transport
Transform your stdio server into a production-ready HTTP service using Streamable HTTP transport. Enable multiple concurrent clients and web deployment capabilities.
- Convert stdio server to Streamable HTTP transport
- Implement POST, GET, and DELETE endpoints
- Add session management with proper headers
- Configure CORS and security measures
- Deploy HTTP servers for production use
- Handle multiple concurrent client connections
Real-time Progress and Notifications
Add streaming capabilities to provide real-time progress updates and notifications. Build a countdown tool that demonstrates dual notification patterns for different client types.
- Implement MCP streaming notifications
- Create progress notifications for VS Code integration
- Build logging notifications for debugging
- Handle long-running operations with user feedback
- Support both MCP Inspector and VS Code clients
- Manage Server-Sent Events (SSE) streams
Stateful Transports and Multiple Clients
Implement proper session management to handle multiple concurrent clients with isolated state. Learn session lifecycles, reconnection patterns, and resource cleanup.
- Implement per-session transport isolation
- Handle session initialization and termination
- Manage multiple concurrent client connections
- Add session cleanup and resource management
- Support client reconnection scenarios
- Validate session IDs and handle errors
Schema and Business Rule Validation
Enhance your tools with robust validation using both Zod schema validation and custom business rules. Provide clear, user-friendly error messages for validation failures.
- Implement layered validation (schema + business rules)
- Add runtime constraints and limits
- Create user-friendly error messages
- Handle validation failures gracefully
- Test validation with edge cases
- Balance flexibility with constraints
Secure MCP Services with OAuth 2.1 + PKCE
Secure your MCP server with OAuth 2.1 authentication using PKCE for enhanced security. Implement the complete OAuth flow for production deployment.
- Implement OAuth 2.1 + PKCE authentication
- Create OAuth discovery endpoints
- Handle dynamic client registration
- Implement authorization and token exchange flows
- Secure MCP endpoints with Bearer tokens
- Support VS Code and other MCP clients
mcp-training/
├── .devcontainer/ # Dev Container configuration (Docker setup)
├── training/ # Step-by-step training materials
│ ├── 0-setup.md
│ ├── 1-what-is-mcp.md
│ ├── 2-using-mcp.md
│ ├── 3-mcp-with-stdio.md
│ ├── 4-mcp-inspector.md
│ ├── 5-mcp-services.md
│ ├── 6-streaming-mcp.md
│ ├── 7-reconnect-mcp-sessions.md
│ ├── 8-validating-mcp.md
│ └── 9-authorizing-mcp.md
├── src/ # Your working implementation
│ ├── mcp-server.ts # Core MCP server configuration
│ ├── stdio-server.ts # Stdio transport implementation
│ └── http-server.ts # HTTP transport implementation
├── final/ # Complete reference implementations
└── package.json # Dependencies and scripts
Choose your preferred setup method in Step 0:
- Install Docker and the VS Code Dev Containers extension
- Clone the repository:
git clone https://github.com/bitovi/mcp-training.git
- Open in VS Code:
code mcp-training
- Reopen in Container when prompted - everything sets up automatically!
- Follow Step 0 for detailed manual installation instructions
- Install Node.js 18+, Git, and VS Code with required extensions
- Clone and configure the project manually
- Progress through each step sequentially - each builds on the previous
- Use the reference implementations in
training/{step}/
folders when needed - Test your implementation with both MCP Inspector and VS Code
- Experiment and extend the examples with your own tools and features