Skip to main content
Glama
Bichev
by Bichev
Architecture.tsx33.2 kB
import React, { useEffect } from 'react'; import { CubeTransparentIcon, ArrowTopRightOnSquareIcon } from '@heroicons/react/24/outline'; const Architecture: React.FC = () => { useEffect(() => { // Add styles for the architecture content const style = document.createElement('style'); style.textContent = ` .architecture-content { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; line-height: 1.4; } .architecture-content .evolution-timeline { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; margin-bottom: 40px; } .architecture-content .evolution-step { background: rgba(30, 41, 59, 0.8); border: 1px solid rgba(148, 163, 184, 0.2); border-radius: 16px; padding: 25px; backdrop-filter: blur(10px); position: relative; } .architecture-content .evolution-step:nth-child(1) { border-top: 4px solid #ef4444; } .architecture-content .evolution-step:nth-child(2) { border-top: 4px solid #f59e0b; } .architecture-content .evolution-step:nth-child(3) { border-top: 4px solid #10b981; } .architecture-content .evolution-step:nth-child(4) { border-top: 4px solid #60a5fa; } .architecture-content .step-header { display: flex; align-items: center; gap: 15px; margin-bottom: 20px; } .architecture-content .step-number { background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); color: #0f172a; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 18px; } .architecture-content .step-title { font-size: 24px; font-weight: 700; color: #f59e0b; } .architecture-content .architecture-diagram { background: rgba(15, 23, 42, 0.9); border: 2px solid rgba(148, 163, 184, 0.3); border-radius: 12px; padding: 20px; margin: 20px 0; text-align: center; min-height: 300px; display: flex; flex-direction: column; align-items: center; justify-content: center; } .architecture-content .diagram-image { max-width: 100%; max-height: 250px; border-radius: 8px; margin-bottom: 15px; box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3); cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; } .architecture-content .diagram-image:hover { transform: scale(1.05); box-shadow: 0 12px 35px rgba(96, 165, 250, 0.4); } .architecture-content .diagram-caption { font-size: 14px; color: #94a3b8; font-style: italic; } .architecture-content .problem-solution-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin: 20px 0; } .architecture-content .problem-box { background: rgba(239, 68, 68, 0.1); border-left: 4px solid #ef4444; padding: 15px; border-radius: 8px; } .architecture-content .solution-box { background: rgba(16, 185, 129, 0.1); border-left: 4px solid #10b981; padding: 15px; border-radius: 8px; } .architecture-content .box-title { font-weight: 600; margin-bottom: 10px; font-size: 16px; } .architecture-content .problem-title { color: #fca5a5; } .architecture-content .solution-title { color: #86efac; } .architecture-content .box-content { font-size: 14px; color: #e2e8f0; line-height: 1.5; } .architecture-content .pros-cons-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 20px 0; } .architecture-content .pros-box { background: rgba(16, 185, 129, 0.1); border: 1px solid rgba(16, 185, 129, 0.3); border-radius: 12px; padding: 20px; } .architecture-content .cons-box { background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.3); border-radius: 12px; padding: 20px; } .architecture-content .pros-title { color: #10b981; font-size: 18px; font-weight: 700; margin-bottom: 15px; display: flex; align-items: center; gap: 10px; } .architecture-content .cons-title { color: #ef4444; font-size: 18px; font-weight: 700; margin-bottom: 15px; display: flex; align-items: center; gap: 10px; } .architecture-content .pros-cons-list { list-style: none; } .architecture-content .pros-cons-item { padding: 8px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.1); font-size: 14px; color: #e2e8f0; } .architecture-content .pros-cons-item:last-child { border-bottom: none; } .architecture-content .pros-cons-item::before { content: "•"; margin-right: 8px; font-weight: bold; } .architecture-content .pros-item::before { color: #10b981; } .architecture-content .cons-item::before { color: #ef4444; } .architecture-content .code-examples-section { background: rgba(30, 41, 59, 0.8); border: 1px solid rgba(148, 163, 184, 0.2); border-radius: 16px; padding: 30px; margin: 30px 0; } .architecture-content .section-title { font-size: 28px; font-weight: 700; color: #f59e0b; margin-bottom: 25px; text-align: center; display: flex; align-items: center; justify-content: center; gap: 15px; } .architecture-content .code-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } .architecture-content .code-example { background: #0f172a; border: 1px solid #334155; border-radius: 12px; overflow: hidden; } .architecture-content .code-header { background: rgba(30, 41, 59, 0.8); padding: 12px 20px; border-bottom: 1px solid #334155; font-weight: 600; color: #f59e0b; font-size: 14px; } .architecture-content .code-content { padding: 0; font-family: 'Monaco', 'Menlo', 'Courier New', monospace; font-size: 12px; color: #94a3b8; overflow-x: auto; line-height: 1.6; max-height: 300px; overflow-y: auto; } .architecture-content .code-content pre { margin: 0; padding: 20px; background: transparent; overflow-x: auto; white-space: pre; font-family: inherit; font-size: inherit; line-height: inherit; color: inherit; } .architecture-content .code-content code { font-family: inherit; font-size: inherit; background: transparent; padding: 0; color: inherit; } .architecture-content .code-comment { color: #64748b; } .architecture-content .code-keyword { color: #c084fc; } .architecture-content .code-string { color: #86efac; } .architecture-content .code-function { color: #60a5fa; } .architecture-content .code-property { color: #fbbf24; } .architecture-content .code-value { color: #f472b6; } .architecture-content .tech-specs { background: rgba(15, 23, 42, 0.8); border-radius: 12px; padding: 20px; margin: 20px 0; } .architecture-content .spec-item { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.1); font-size: 14px; } .architecture-content .spec-item:last-child { border-bottom: none; } .architecture-content .spec-label { color: #94a3b8; font-weight: 500; } .architecture-content .spec-value { color: #10b981; font-weight: 600; } /* Modal Styles */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.9); backdrop-filter: blur(5px); } .modal-content { margin: 2% auto; display: block; width: 90%; max-width: 1200px; max-height: 90%; border-radius: 12px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.8); } .modal-close { position: absolute; top: 20px; right: 35px; color: #fff; font-size: 40px; font-weight: bold; cursor: pointer; z-index: 1001; transition: color 0.3s ease; } .modal-close:hover { color: #60a5fa; } .modal-caption { margin: auto; display: block; width: 80%; max-width: 700px; text-align: center; color: #e2e8f0; padding: 20px 0; font-size: 16px; } /* Reference Materials Section */ .architecture-content .reference-materials { background: rgba(30, 41, 59, 0.8); border: 1px solid rgba(148, 163, 184, 0.2); border-radius: 16px; padding: 30px; margin: 30px 0; } .architecture-content .reference-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 25px; margin-top: 25px; } .architecture-content .reference-category { background: rgba(15, 23, 42, 0.8); border: 1px solid rgba(148, 163, 184, 0.2); border-radius: 12px; padding: 20px; } .architecture-content .category-title { font-size: 18px; font-weight: 700; color: #f59e0b; margin-bottom: 15px; display: flex; align-items: center; gap: 10px; } .architecture-content .reference-links { list-style: none; } .architecture-content .reference-link { padding: 8px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.1); } .architecture-content .reference-link:last-child { border-bottom: none; } .architecture-content .reference-link a { color: #60a5fa; text-decoration: none; font-size: 14px; line-height: 1.4; transition: color 0.3s ease; } .architecture-content .reference-link a:hover { color: #93c5fd; text-decoration: underline; } .architecture-content .enterprise-patterns { background: linear-gradient(135deg, rgba(167, 139, 250, 0.1) 0%, rgba(167, 139, 250, 0.05) 100%); border-top: 4px solid #a78bfa; } @media (max-width: 768px) { .architecture-content .evolution-timeline { grid-template-columns: 1fr; } .architecture-content .problem-solution-grid { grid-template-columns: 1fr; } .architecture-content .pros-cons-grid { grid-template-columns: 1fr; } .architecture-content .code-grid { grid-template-columns: 1fr; } .architecture-content .reference-grid { grid-template-columns: 1fr; } } `; document.head.appendChild(style); // Add modal functionality const openModal = (img: HTMLImageElement) => { const modal = document.getElementById("imageModal"); const modalImg = document.getElementById("modalImage") as HTMLImageElement; const caption = document.getElementById("modalCaption"); if (modal && modalImg && caption) { modal.style.display = "block"; modalImg.src = img.src; caption.innerHTML = img.alt; // Prevent body scroll when modal is open document.body.style.overflow = "hidden"; } }; const closeModal = () => { const modal = document.getElementById("imageModal"); if (modal) { modal.style.display = "none"; // Restore body scroll document.body.style.overflow = "auto"; } }; // Add event listeners const images = document.querySelectorAll('.diagram-image'); images.forEach(img => { img.addEventListener('click', () => openModal(img as HTMLImageElement)); }); // Close modal when clicking outside or pressing escape window.onclick = function(event) { const modal = document.getElementById("imageModal"); if (event.target == modal) { closeModal(); } }; document.addEventListener('keydown', function(event) { if (event.key === 'Escape') { closeModal(); } }); // Cleanup function return () => { document.head.removeChild(style); }; }, []); return ( <div className="min-h-screen bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900 text-white"> <div className="container mx-auto px-6 py-8"> {/* Header */} <div className="text-center mb-12"> <div className="flex items-center justify-center space-x-4 mb-6"> <div className="p-3 bg-gradient-to-r from-blue-500 to-purple-600 rounded-xl"> <CubeTransparentIcon className="h-8 w-8 text-white" /> </div> <div> <h1 className="text-4xl font-bold bg-gradient-to-r from-blue-400 via-purple-500 to-cyan-400 bg-clip-text text-transparent"> MCP Architecture Evolution </h1> <p className="text-xl text-slate-300 mt-2">From REST API Limitations to Intelligent Agent Integration</p> </div> <a href="/slides/Slide 8 Architecture.html" target="_blank" rel="noopener noreferrer" className="flex items-center space-x-2 bg-gradient-to-r from-emerald-500 to-teal-600 text-white px-4 py-2 rounded-lg font-medium hover:from-emerald-600 hover:to-teal-700 transition-all duration-200 shadow-lg hover:shadow-xl" > <ArrowTopRightOnSquareIcon className="h-5 w-5" /> <span>Full Presentation</span> </a> </div> </div> <div className="architecture-content"> <div className="evolution-timeline"> {/* Step 1: REST API Standard */} <div className="evolution-step"> <div className="step-header"> <div className="step-number">1</div> <div className="step-title">REST API Standard</div> </div> <div className="architecture-diagram"> <img src="/static/1 REST API Standard.png" alt="REST API Standard Architecture" className="diagram-image" /> <div className="diagram-caption">Traditional REST API Architecture</div> </div> <div className="problem-solution-grid"> <div className="problem-box"> <div className="box-title problem-title">🚨 Core Problems</div> <div className="box-content"> • Static, predefined endpoints<br/> • Complex integration requirements<br/> • Poor AI/LLM compatibility<br/> • Manual API discovery process<br/> • Inconsistent data formats </div> </div> <div className="solution-box"> <div className="box-title solution-title">⚙️ Technical Specs</div> <div className="box-content"> • HTTP-based communication<br/> • JSON/XML data exchange<br/> • CRUD operations (GET, POST, PUT, DELETE)<br/> • Stateless architecture<br/> • OpenAPI documentation </div> </div> </div> <div className="pros-cons-grid"> <div className="pros-box"> <div className="pros-title">✅ Advantages</div> <ul className="pros-cons-list"> <li className="pros-cons-item pros-item">Widely adopted standard</li> <li className="pros-cons-item pros-item">Simple HTTP-based protocol</li> <li className="pros-cons-item pros-item">Good caching mechanisms</li> <li className="pros-cons-item pros-item">Mature tooling ecosystem</li> </ul> </div> <div className="cons-box"> <div className="cons-title">❌ Limitations</div> <ul className="pros-cons-list"> <li className="pros-cons-item cons-item">No AI-native capabilities</li> <li className="pros-cons-item cons-item">Complex multi-API orchestration</li> <li className="pros-cons-item cons-item">Static endpoint definitions</li> <li className="pros-cons-item cons-item">Poor discoverability</li> </ul> </div> </div> </div> {/* Step 2: LLM Limitations */} <div className="evolution-step"> <div className="step-header"> <div className="step-number">2</div> <div className="step-title">LLM & Agentic AI Limitations</div> </div> <div className="architecture-diagram"> <img src="/static/2 LLM and Agentic AI Limitations.png" alt="LLM Limitations" className="diagram-image" /> <div className="diagram-caption">Current LLM Integration Challenges</div> </div> <div className="problem-solution-grid"> <div className="problem-box"> <div className="box-title problem-title">🔥 Critical Issues</div> <div className="box-content"> • Inability to access external data<br/> • No tool execution capabilities<br/> • Context window limitations<br/> • Static knowledge cutoffs<br/> • Complex tool integration </div> </div> <div className="solution-box"> <div className="box-title solution-title">📊 Impact Metrics</div> <div className="box-content"> • 83% of AI projects fail integration<br/> • 6+ months average API setup<br/> • $50B+ integration market<br/> • 1000+ APIs per enterprise<br/> • 40% IT budget on integration </div> </div> </div> <div className="tech-specs"> <div className="spec-item"> <span className="spec-label">Current LLM Capability:</span> <span className="spec-value">Text Generation Only</span> </div> <div className="spec-item"> <span className="spec-label">Tool Access:</span> <span className="spec-value">Manual Integration Required</span> </div> <div className="spec-item"> <span className="spec-label">Data Freshness:</span> <span className="spec-value">Static Training Data</span> </div> <div className="spec-item"> <span className="spec-label">Integration Complexity:</span> <span className="spec-value">High (Custom Development)</span> </div> </div> </div> {/* Step 3: MCP Agent Architecture */} <div className="evolution-step"> <div className="step-header"> <div className="step-number">3</div> <div className="step-title">MCP Agent Architecture</div> </div> <div className="architecture-diagram"> <img src="/static/3 Agents with MCP Architecture.png" alt="MCP Agent Architecture" className="diagram-image" /> <div className="diagram-caption">Model Context Protocol Agent Integration</div> </div> <div className="problem-solution-grid"> <div className="solution-box"> <div className="box-title solution-title">🚀 Key Innovations</div> <div className="box-content"> • Standardized protocol for AI integration<br/> • Dynamic tool discovery<br/> • Real-time data access<br/> • Secure client-server architecture<br/> • Universal API abstraction </div> </div> <div className="solution-box"> <div className="box-title solution-title">⚡ Core Benefits</div> <div className="box-content"> • 90% reduction in integration time<br/> • Plug-and-play server ecosystem<br/> • Standardized security model<br/> • Multi-modal support<br/> • Protocol-level optimization </div> </div> </div> <div className="tech-specs"> <div className="spec-item"> <span className="spec-label">Protocol:</span> <span className="spec-value">JSON-RPC 2.0</span> </div> <div className="spec-item"> <span className="spec-label">Transport:</span> <span className="spec-value">Stdio, HTTP/SSE</span> </div> <div className="spec-item"> <span className="spec-label">Discovery:</span> <span className="spec-value">Dynamic Capability Detection</span> </div> <div className="spec-item"> <span className="spec-label">Security:</span> <span className="spec-value">Client-Controlled Access</span> </div> </div> </div> {/* Step 4: Detailed MCP Architecture */} <div className="evolution-step"> <div className="step-header"> <div className="step-number">4</div> <div className="step-title">MCP Detailed Architecture</div> </div> <div className="architecture-diagram"> <img src="/static/4 MCP Detailed Architecture.png" alt="MCP Detailed Architecture" className="diagram-image" /> <div className="diagram-caption">Complete MCP Protocol Stack</div> </div> <div className="problem-solution-grid"> <div className="solution-box"> <div className="box-title solution-title">🔧 Technical Components</div> <div className="box-content"> • Protocol Layer (JSON-RPC 2.0)<br/> • Transport Layer (Stdio/HTTP)<br/> • Resource Management<br/> • Tool Execution Engine<br/> • Prompt Template System </div> </div> <div className="solution-box"> <div className="box-title solution-title">🛡️ Enterprise Features</div> <div className="box-content"> • Message validation & schemas<br/> • Error handling & recovery<br/> • Progress reporting<br/> • Connection lifecycle management<br/> • Security & authentication </div> </div> </div> <div className="pros-cons-grid"> <div className="pros-box"> <div className="pros-title">🎯 MCP Advantages</div> <ul className="pros-cons-list"> <li className="pros-cons-item pros-item">Universal AI integration standard</li> <li className="pros-cons-item pros-item">Dynamic capability discovery</li> <li className="pros-cons-item pros-item">Multi-modal resource support</li> <li className="pros-cons-item pros-item">Built-in security model</li> <li className="pros-cons-item pros-item">Ecosystem of pre-built servers</li> </ul> </div> <div className="cons-box"> <div className="cons-title">⚠️ Implementation Considerations</div> <ul className="pros-cons-list"> <li className="pros-cons-item cons-item">New protocol adoption curve</li> <li className="pros-cons-item cons-item">Initial server development effort</li> <li className="pros-cons-item cons-item">Client compatibility requirements</li> <li className="pros-cons-item cons-item">Protocol version management</li> </ul> </div> </div> </div> </div> {/* Code Examples Section */} <div className="code-examples-section"> <div className="section-title"> <span>💻</span> Complete MCP Implementation Workflow </div> <div className="code-grid"> {/* MCP Server with Tools */} <div className="code-example"> <div className="code-header">🔧 MCP Server with Tools</div> <div className="code-content"> <pre><code>{`// TypeScript MCP Server Implementation import { Server } from "@modelcontextprotocol/sdk/server"; const server = new Server({ name: "enterprise-server", version: "1.0.0" }, { capabilities: { tools: {}, resources: {}, prompts: {} } }); // Define enterprise tools server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [{ name: "execute_sql_query", description: "Execute database queries", inputSchema: { type: "object", properties: { query: { type: "string" }, database: { type: "string" } } } }] }; });`}</code></pre> </div> </div> {/* MCP Resource Management */} <div className="code-example"> <div className="code-header">📁 Resource Management</div> <div className="code-content"> <pre><code>{`# Python MCP Resource Implementation from mcp.server import Server import mcp.types as types app = Server("enterprise-server") @app.list_resources() async def list_resources() -> list[types.Resource]: return [ types.Resource( uri="database://customers/table", name="Customer Database", mimeType="application/json" ), types.Resource( uri="file:///logs/app.log", name="Application Logs", mimeType="text/plain" ) ] @app.read_resource() async def read_resource(uri: AnyUrl) -> str: if str(uri) == "database://customers/table": data = await fetch_customer_data() return json.dumps(data)`}</code></pre> </div> </div> {/* Additional code examples would continue here... */} </div> </div> {/* Reference Materials Section */} <div className="reference-materials"> <div className="section-title"> <span>📚</span> Reference Materials & Enterprise Resources </div> <div className="reference-grid"> {/* Official MCP Resources */} <div className="reference-category"> <div className="category-title"> <span>🏛️</span> Official MCP Resources </div> <ul className="reference-links"> <li className="reference-link"> <a href="https://github.com/modelcontextprotocol" target="_blank" rel="noopener noreferrer">Official Repository</a> </li> <li className="reference-link"> <a href="https://modelcontextprotocol.io/introduction" target="_blank" rel="noopener noreferrer">Official Introduction</a> </li> <li className="reference-link"> <a href="https://github.com/modelcontextprotocol/servers" target="_blank" rel="noopener noreferrer">Official Servers</a> </li> <li className="reference-link"> <a href="https://modelcontextprotocol.io/clients" target="_blank" rel="noopener noreferrer">Official Clients</a> </li> <li className="reference-link"> <a href="https://github.com/modelcontextprotocol/inspector" target="_blank" rel="noopener noreferrer">MCP Inspector Tool</a> </li> </ul> </div> {/* Community & Aggregators */} <div className="reference-category"> <div className="category-title"> <span>🌐</span> Community & Aggregators </div> <ul className="reference-links"> <li className="reference-link"> <a href="https://docs.cursor.com/tools" target="_blank" rel="noopener noreferrer">Cursor Tools List</a> </li> <li className="reference-link"> <a href="https://github.com/punkpeye/awesome-mcp-servers" target="_blank" rel="noopener noreferrer">Awesome MCP Servers (3500+)</a> </li> <li className="reference-link"> <a href="https://github.com/punkpeye/awesome-mcp-clients" target="_blank" rel="noopener noreferrer">Awesome MCP Clients</a> </li> <li className="reference-link"> <a href="https://www.apollographql.com/docs" target="_blank" rel="noopener noreferrer">MCP GraphQL Server by Apollo</a> </li> </ul> </div> {/* Enterprise Deployment */} <div className="reference-category enterprise-patterns"> <div className="category-title"> <span>🏢</span> Enterprise Deployment </div> <ul className="reference-links"> <li className="reference-link"> <a href="https://mcp-use.com" target="_blank" rel="noopener noreferrer">MCP-USE: Build & Deploy Agents</a> </li> <li className="reference-link"> <a href="https://github.com/mcp-use/mcp-use?tab=readme-ov-file" target="_blank" rel="noopener noreferrer">MCP-USE: Connect LLM to MCP</a> </li> <li className="reference-link"> <span style={{color: '#86efac'}}>• Security & Orchestration</span> </li> <li className="reference-link"> <span style={{color: '#86efac'}}>• Management & Discovery</span> </li> <li className="reference-link"> <span style={{color: '#86efac'}}>• CI/CD Pipeline Integration</span> </li> <li className="reference-link"> <span style={{color: '#86efac'}}>• MCP Proxy & Lifecycle Mgmt</span> </li> </ul> </div> </div> </div> </div> {/* Modal for Image Viewing */} <div id="imageModal" className="modal"> <span className="modal-close">&times;</span> <img className="modal-content" id="modalImage" alt="" /> <div id="modalCaption" className="modal-caption"></div> </div> </div> </div> ); }; export default Architecture;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bichev/coinbase-chat-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server