๐ MCP Apps in VS Code Insiders: Create and Run Your First App
Hey developer ๐๐ป! This repo implements an MCP server with YouTube tools (get-video, get-channel, get-latest-video) and two MCP Apps (video-render, channel-profile) bundled with Vite into a single HTML file to display them in VS Code Insiders. Learn how to build, serve and consume MCP Apps โค๏ธ
๐ Features
- get-video: Searches for a video on YouTube by query and returns title, description and thumbnail (base64) with
video-renderUI - get-channel: Gets channel info (stats, base64 thumbnail) and displays it with
channel-profileUI - get-latest-video: Returns the latest video from a channel (used in
channel-profile) - UI Apps:
video-render: Renders a video card with linkschannel-profile: Renders channel profile and shows the latest video
๐ Requirements
- Node.js 18+
- npm or yarn
- YouTube Data API v3 key (
YOUTUBE_API_KEY)
๐ ๏ธ Installation
# Clone the repository
git clone https://github.com/0GiS0/mcp-apps.git
cd mcp-apps
# Install dependencies
npm install
# Configure environment
cp .env-sample .env
# Edit .env and set your YOUTUBE_API_KEY
๐๏ธ Project Structure
src/
โโโ server.ts # MCP Server with Express and YouTube tools
โโโ services/
โ โโโ youtube.ts # YouTube Data API integration logic
โโโ apps/
โโโ channel-profile/ # Channel profile UI
โ โโโ index.html
โ โโโ app.ts
โ โโโ styles.css
โโโ video-render/ # Video renderer UI
โโโ index.html
โโโ app.ts
โโโ styles.css
๐ง Usage
Build the apps
npm run build
Start the MCP server
npm run serve
The server will start at http://localhost:3001/mcp
Configure in VS Code
Add the following configuration to your .vscode/mcp.json file:
{
"servers": {
"my-mcp-server": {
"url": "http://localhost:3001/mcp"
}
}
}
๐ฆ Main Dependencies
@modelcontextprotocol/sdk- Model Context Protocol SDK@modelcontextprotocol/ext-apps- Extension for creating MCP Appsexpress- HTTP Servercors- CORS Middleware (runtime)vite+vite-plugin-singlefile- App bundling
๐ Follow Me on Social Media
If you liked this project and want to see more content like this, don't forget to subscribe to my YouTube channel and follow me on social media: