SOLFIND
Web Lens
Portal home

ext-apps/examples/basic-host at main · modelcontextprotocol/ext-apps · GitHub

https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-host • 262 KB fetched
Open original page


ext-apps/examples/basic-host at main · modelcontextprotocol/ext-apps · GitHub Skip to content Navigation Menu Sign in Appearance settings * Platform * AI CODE CREATION * GitHub Copilot Write better code with AI * GitHub Copilot app Direct agents from issue to merge * MCP Registry Integrate external tools * DEVELOPER WORKFLOWS * Actions Automate any workflow * Codespaces Instant dev environments * Issues Plan and track work * Code Review Manage code changes * Code Quality Enforce quality at merge * APPLICATION SECURITY * GitHub Advanced Security Find and fix vulnerabilities * Code security Secure your code as you build * Secret protection Stop leaks before they start * EXPLORE * Why GitHub * Documentation * Blog * Changelog * Marketplace View all features * Solutions * BY COMPANY SIZE * Enterprises * Small and medium teams * Startups * Nonprofits * BY USE CASE * App Modernization * DevSecOps * DevOps * CI/CD * View all use cases * BY INDUSTRY * Healthcare * Financial services * Manufacturing * Government * View all industries View all solutions * Resources * EXPLORE BY TOPIC * AI * Software Development * DevOps * Security * View all topics * EXPLORE BY TYPE * Customer stories * Events & webinars * Ebooks & reports * Business insights * GitHub Skills * SUPPORT & SERVICES * Documentation * Customer support * Community forum * Trust center * Partners View all resources * Open Source * COMMUNITY * GitHub Sponsors Fund open source developers * PROGRAMS * Security Lab * Maintainer Community * GitHub Stars * Archive Program * REPOSITORIES * Topics * Trending * Collections * Enterprise * ENTERPRISE SOLUTIONS * Enterprise platform AI-powered developer platform * AVAILABLE ADD-ONS * GitHub Advanced Security Enterprise-grade security features * Copilot for Business Enterprise-grade AI features * Premium Support Enterprise-grade 24/7 support * Pricing Search / Sign in Sign up Appearance settings You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert Uh oh! There was an error while loading. Please reload this page . modelcontextprotocol / ext-apps Public * Notifications You must be signed in to change notification settings * Fork 379 * Star 2.8k * Code * Issues 124 * Pull requests 83 * Discussions * Actions * Projects * Security and quality 0 * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Security and quality * Insights Files Expand file tree main Breadcrumbs * ext-apps * / examples / basic-host / Copy path Directory actions More options More options Directory actions More options More options Latest commit   History History History main Breadcrumbs * ext-apps * / examples / basic-host / Copy path Top Folders and files Name Name Last commit message Last commit date parent directory .. src src     .gitignore .gitignore     README.md README.md     index.html index.html     package.json package.json     sandbox.html sandbox.html     serve.ts serve.ts     tsconfig.json tsconfig.json     vite.config.ts vite.config.ts     View all files README.md Outline Example: Basic Host A reference implementation showing how to build an MCP host application that connects to MCP servers and renders tool UIs in a secure sandbox. This basic host can also be used to test MCP Apps during local development. Key Files * index.html / src/index.tsx - React UI host with tool selection, parameter input, and iframe management * sandbox.html / src/sandbox.ts - Outer iframe proxy with security validation and bidirectional message relay * src/implementation.ts - Core logic: server connection, tool calling, and AppBridge setup Getting Started npm install npm run start # Open http://localhost:8080 By default, the host application will try to connect to an MCP server at http://localhost:3001/mcp . You can configure this behavior by setting the SERVERS environment variable with a JSON array of server URLs: SERVERS= ' ["http://localhost:1234/mcp", "http://localhost:5678/mcp"] ' npm run start Architecture This example uses a double-iframe sandbox pattern for secure UI isolation: Host (port 8080) └── Outer iframe (port 8081) - sandbox proxy └── Inner iframe (srcdoc) - untrusted tool UI Why two iframes? * The outer iframe runs on a separate origin (port 8081) preventing direct access to the host * The inner iframe receives HTML via srcdoc and is restricted by sandbox attributes * Messages flow through the outer iframe which validates and relays them bidirectionally This architecture ensures that even if tool UI code is malicious, it cannot access the host application's DOM, cookies, or JavaScript context. Footer (c) 2026 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Community * Docs * Contact * Manage cookies * Do not share my personal information You can’t perform that action at this time.

Links found on this page

  1. Skip to content [direct]
  2. Sign in [direct]
  3. GitHub Copilot Write better code with AI [direct]
  4. GitHub Copilot app Direct agents from issue to merge [direct]
  5. MCP Registry Integrate external tools [direct]
  6. Actions Automate any workflow [direct]
  7. Codespaces Instant dev environments [direct]
  8. Issues Plan and track work [direct]
  9. Code Review Manage code changes [direct]
  10. Code Quality Enforce quality at merge [direct]
  11. GitHub Advanced Security Find and fix vulnerabilities [direct]
  12. Code security Secure your code as you build [direct]
  13. Secret protection Stop leaks before they start [direct]
  14. Why GitHub [direct]
  15. Documentation [direct]
  16. Blog [direct]
  17. Changelog [direct]
  18. Marketplace [direct]
  19. View all features [direct]
  20. Enterprises [direct]
  21. Small and medium teams [direct]
  22. Startups [direct]
  23. Nonprofits [direct]
  24. App Modernization [direct]
  25. DevSecOps [direct]
  26. DevOps [direct]
  27. CI/CD [direct]
  28. View all use cases [direct]
  29. Healthcare [direct]
  30. Financial services [direct]
  31. Manufacturing [direct]
  32. Government [direct]
  33. View all industries [direct]
  34. View all solutions [direct]
  35. AI [direct]
  36. Software Development [direct]
  37. DevOps [direct]
  38. Security [direct]
  39. View all topics [direct]
  40. Customer stories [direct]
  41. Events & webinars [direct]
  42. Ebooks & reports [direct]
  43. Business insights [direct]
  44. GitHub Skills [direct]
  45. Customer support [direct]
  46. Community forum [direct]
  47. Trust center [direct]
  48. Partners [direct]
  49. View all resources [direct]
  50. GitHub Sponsors Fund open source developers [direct]
  51. Security Lab [direct]
  52. Maintainer Community [direct]
  53. GitHub Stars [direct]
  54. Archive Program [direct]
  55. Topics [direct]
  56. Trending [direct]
  57. Collections [direct]
  58. Copilot for Business Enterprise-grade AI features [direct]
  59. Premium Support Enterprise-grade 24/7 support [direct]
  60. Pricing [direct]
  61. Sign up [direct]
  62. modelcontextprotocol [direct]
  63. ext-apps [direct]
  64. Notifications [direct]
  65. Issues 124 [direct]
  66. Pull requests 83 [direct]
  67. Discussions [direct]
  68. Actions [direct]
  69. Projects [direct]
  70. Security and quality 0 [direct]
  71. Insights [direct]
  72. ext-apps [direct]
  73. examples [direct]
  74. History [direct]
  75. src [direct]
  76. .gitignore [direct]
  77. README.md [direct]
  78. index.html [direct]
  79. package.json [direct]
  80. sandbox.html [direct]