airabbitX commited on
Commit
ab38bab
·
verified ·
1 Parent(s): f94c05c

Upload 10 files

Browse files
Files changed (10) hide show
  1. README.md +85 -10
  2. code-diagram.svg +208 -0
  3. company-logos.svg +64 -0
  4. deploy.sh +39 -0
  5. favicon.svg +32 -0
  6. index.html +315 -114
  7. mcp-diagram.svg +105 -0
  8. script.js +71 -0
  9. security-diagram.svg +115 -0
  10. styles.css +489 -0
README.md CHANGED
@@ -1,10 +1,85 @@
1
- ---
2
- title: Mcp
3
- emoji: 🏆
4
- colorFrom: green
5
- colorTo: gray
6
- sdk: static
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Model Context Protocol (MCP) Website
2
+
3
+ This is a comprehensive, technically accurate website about the Model Context Protocol (MCP), the open standard for connecting AI models to external data sources and tools.
4
+
5
+ ## Website Contents
6
+
7
+ - `index.html` - The main HTML structure of the website
8
+ - `styles.css` - CSS styling for the website
9
+ - `script.js` - JavaScript for interactive elements
10
+ - `README.md` - This file with deployment instructions
11
+
12
+ ## Technical Details
13
+
14
+ This website contains factual information about the Model Context Protocol, including:
15
+
16
+ - Overview and core purpose of MCP
17
+ - Technical architecture and implementation details
18
+ - Industry adoption across major AI companies
19
+ - Security considerations and best practices
20
+ - Links to official resources and documentation
21
+
22
+ ## Deployment Instructions
23
+
24
+ ### Local Testing
25
+
26
+ 1. Clone or download this repository to your local machine
27
+ 2. Open the `index.html` file in a web browser to view the website locally
28
+
29
+ ### Web Hosting Deployment
30
+
31
+ #### Standard Web Hosting:
32
+
33
+ 1. Upload all files to your web hosting provider via FTP or their control panel
34
+ 2. Ensure the files maintain their directory structure
35
+ 3. Point your domain to the directory containing these files
36
+
37
+ #### GitHub Pages:
38
+
39
+ 1. Create a new GitHub repository
40
+ 2. Push these files to the repository
41
+ 3. Go to repository Settings > Pages
42
+ 4. Select the main branch as the source
43
+ 5. Your site will be published at `https://[username].github.io/[repository-name]`
44
+
45
+ #### Vercel or Netlify:
46
+
47
+ 1. Connect your GitHub repository to Vercel or Netlify
48
+ 2. Configure the build settings (not needed for simple static sites)
49
+ 3. Deploy the site
50
+ 4. Configure your custom domain if desired
51
+
52
+ ## Customization
53
+
54
+ ### Google Analytics
55
+
56
+ To add Google Analytics:
57
+
58
+ 1. Open `index.html`
59
+ 2. Locate the Google Analytics script section in the `<head>`
60
+ 3. Replace `G-XXXXXXXXXX` with your Google Analytics tracking ID
61
+
62
+ ### Custom Domain
63
+
64
+ If you're using a custom domain:
65
+
66
+ 1. Update all absolute URLs in the website
67
+ 2. Update the Open Graph and meta tags with your domain information
68
+ 3. Configure your DNS settings according to your hosting provider's instructions
69
+
70
+ ## SEO Optimization
71
+
72
+ The website is already optimized for search engines with:
73
+
74
+ - Semantic HTML structure
75
+ - Proper meta tags in the head section
76
+ - Descriptive page titles and headings
77
+ - Mobile-responsive design
78
+ - Fast loading time
79
+ - Proper element hierarchy
80
+
81
+ ## License and Attribution
82
+
83
+ This website template is provided for educational purposes. All references to companies, organizations, and technologies are based on publicly available information.
84
+
85
+ The content about the Model Context Protocol is factual and based on public sources. When deploying this website, ensure you comply with all applicable regulations regarding factual representation of technical information.
code-diagram.svg ADDED
company-logos.svg ADDED
deploy.sh ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # MCP Website Deployment Script
3
+
4
+ echo "MCP Website Deployment Tool"
5
+ echo "==========================="
6
+ echo
7
+
8
+ # Check for dependencies
9
+ command -v zip >/dev/null 2>&1 || { echo "Error: zip is required but not installed. Aborting."; exit 1; }
10
+
11
+ # Create a deployment package
12
+ echo "Creating deployment package..."
13
+ zip -r mcp-website.zip *.html *.css *.js *.svg README.md
14
+
15
+ echo "Deployment package created: mcp-website.zip"
16
+ echo
17
+
18
+ # Print deployment options
19
+ echo "Deployment Options:"
20
+ echo "------------------"
21
+ echo "1. Standard Web Hosting:"
22
+ echo " - Upload mcp-website.zip to your web hosting provider"
23
+ echo " - Extract the files maintaining directory structure"
24
+ echo
25
+ echo "2. GitHub Pages Deployment:"
26
+ echo " - Create a new GitHub repository"
27
+ echo " - Push these files to the repository"
28
+ echo " - Enable GitHub Pages in repository settings"
29
+ echo
30
+ echo "3. Vercel or Netlify Deployment:"
31
+ echo " - Connect your GitHub repository to Vercel or Netlify"
32
+ echo " - Configure build settings (not needed for this static site)"
33
+ echo " - Deploy the site"
34
+ echo
35
+ echo "For all options, you can use your custom domain by configuring DNS settings"
36
+ echo "according to your hosting provider's instructions."
37
+ echo
38
+
39
+ echo "Deployment package is ready!"
favicon.svg ADDED
index.html CHANGED
@@ -3,152 +3,353 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Model Context Protocol (MCP) - Connecting AI Models to Data and Tools</title>
7
- <meta name="description" content="Learn about the Model Context Protocol (MCP), an open standard that enables seamless integration between AI models and external data sources and tools.">
8
- <link rel="stylesheet" href="css/styles.css">
9
- <link rel="preconnect" href="https://fonts.googleapis.com">
10
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
12
  </head>
13
  <body>
14
  <header>
15
- <div class="container header-container">
16
- <a href="index.html" class="logo">MCP<span>Hub</span></a>
 
17
  <nav>
18
  <ul>
19
- <li><a href="index.html">Home</a></li>
20
- <li><a href="about.html">About</a></li>
21
- <li><a href="architecture.html">Architecture</a></li>
22
- <li><a href="benefits.html">Benefits</a></li>
23
- <li><a href="ecosystem.html">Ecosystem</a></li>
24
- <li><a href="getting-started.html">Get Started</a></li>
25
- <li><a href="faq.html">FAQ</a></li>
26
  </ul>
27
  </nav>
28
  </div>
29
  </header>
30
 
31
- <section class="hero">
32
- <div class="container">
33
- <h1>Model Context Protocol (MCP)</h1>
34
- <p>An open standard for connecting AI models to data sources and tools</p>
35
- <a href="getting-started.html" class="cta-button">Get Started</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  </div>
37
  </section>
38
 
39
- <main class="container">
40
- <section>
41
- <h2>What is Model Context Protocol?</h2>
42
- <p>
43
- Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). Think of MCP like a USB-C port for AI applications - it provides a standardized way to connect AI models to different data sources and tools, allowing them to work together seamlessly.
44
- </p>
45
- <p>
46
- Developed by Anthropic and released as an open standard, MCP solves a critical problem in AI development: connecting AI models with the data and tools they need to be truly effective. Instead of requiring custom integrations for each data source, MCP provides a universal interface that works across different AI systems and data repositories.
47
- </p>
48
- </section>
49
-
50
- <section>
51
- <h2>Key Features</h2>
52
- <div class="card-container">
53
- <div class="card">
54
- <div class="card-icon">🔌</div>
55
- <h3>Universal Connectivity</h3>
56
- <p>Connect any AI model to any data source or tool using a standardized protocol, eliminating the need for custom integrations.</p>
57
- </div>
58
- <div class="card">
59
- <div class="card-icon">🔒</div>
60
- <h3>Secure Architecture</h3>
61
- <p>Built with security in mind - data sources control access to their information, and there's no need to share API keys with LLM providers.</p>
62
- </div>
63
- <div class="card">
64
- <div class="card-icon">🧩</div>
65
- <h3>Tool Integration</h3>
66
- <p>Enable AI models to use external tools and services through a standardized interface for actions like file operations, API calls, and more.</p>
67
- </div>
68
- <div class="card">
69
- <div class="card-icon">🌐</div>
70
- <h3>Open Standard</h3>
71
- <p>As an open protocol, MCP can be implemented by any organization or developer, fostering a collaborative ecosystem.</p>
72
- </div>
73
  </div>
74
- </section>
75
-
76
- <section class="two-column">
77
- <div>
78
- <h2>How MCP Works</h2>
79
- <p>
80
- MCP follows a client-server architecture where MCP clients (AI applications) connect to MCP servers (data sources and tools). The protocol defines how these components communicate, allowing AI models to access information and functionality from external systems.
81
- </p>
82
- <p>
83
- This separation of concerns means data providers maintain control over their information, while AI applications gain the ability to work with a wide range of tools and data sources through a consistent interface.
84
- </p>
85
- <a href="architecture.html" class="cta-button">Learn More About MCP Architecture</a>
86
- </div>
87
- <div>
88
- <pre><code>// Example MCP client-server interaction
89
- const mcpClient = new MCPClient();
90
-
91
- // Connect to an MCP server
92
- await mcpClient.connect({
93
- transport: "stdio",
94
- command: "npx",
95
- args: ["@modelcontextprotocol/server-filesystem"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  });
97
 
98
- // List available tools
99
- const tools = await mcpClient.listTools();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
- // Use a tool from the server
102
- const result = await mcpClient.callTool({
103
- name: "readFile",
104
- parameters: { path: "/path/to/file.txt" }
105
- });</code></pre>
 
 
 
 
 
 
 
 
106
  </div>
107
- </section>
 
 
 
 
108
 
109
- <section>
110
- <h2>Getting Started with MCP</h2>
111
- <p>
112
- Ready to start building with MCP? Whether you're developing an AI application that needs to access external data, or creating an MCP server to expose your data to AI systems, our documentation will help you get started quickly.
113
- </p>
114
- <p>
115
- Visit our <a href="getting-started.html">Getting Started guide</a> to learn how to install and use MCP in your projects.
116
- </p>
117
- </section>
118
- </main>
119
 
120
- <footer>
121
- <div class="container footer-container">
122
- <div>
123
- <h4>MCP Resources</h4>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  <ul>
125
- <li><a href="https://modelcontextprotocol.io" target="_blank">Official Documentation</a></li>
126
- <li><a href="https://github.com/modelcontextprotocol" target="_blank">GitHub Repository</a></li>
127
- <li><a href="https://www.anthropic.com/news/model-context-protocol" target="_blank">Anthropic MCP Announcement</a></li>
 
128
  </ul>
129
  </div>
130
- <div>
131
- <h4>Learn More</h4>
132
  <ul>
133
- <li><a href="about.html">About MCP</a></li>
134
- <li><a href="architecture.html">Architecture</a></li>
135
- <li><a href="benefits.html">Benefits</a></li>
136
- <li><a href="ecosystem.html">Ecosystem</a></li>
137
  </ul>
138
  </div>
139
- <div>
140
- <h4>Community</h4>
141
  <ul>
142
- <li><a href="https://github.com/modelcontextprotocol/discussions" target="_blank">Discussions</a></li>
143
- <li><a href="https://github.com/modelcontextprotocol/community-servers" target="_blank">Community Servers</a></li>
 
144
  </ul>
145
  </div>
146
  </div>
147
- <div class="copyright container">
148
- <p>&copy; 2025 MCP Information Hub. Model Context Protocol is an open source project developed by Anthropic, PBC.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  </div>
150
  </footer>
151
 
152
- <script src="js/main.js"></script>
153
  </body>
154
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Model Context Protocol (MCP) - The Universal Standard for AI Integration</title>
7
+ <meta name="description" content="Comprehensive technical guide to the Model Context Protocol (MCP), the open standard for connecting AI models to external data sources and tools.">
8
+ <meta name="keywords" content="Model Context Protocol, MCP, AI integration, Anthropic, OpenAI, Google, Microsoft, AI tools, LLM connectivity, JSON-RPC">
9
+ <link rel="stylesheet" href="styles.css">
10
+ <link rel="icon" href="favicon.svg" type="image/svg+xml">
 
11
  </head>
12
  <body>
13
  <header>
14
+ <div class="container">
15
+ <h1>Model Context Protocol (MCP)</h1>
16
+ <p class="tagline">The Universal Standard for AI Integration</p>
17
  <nav>
18
  <ul>
19
+ <li><a href="#overview">Overview</a></li>
20
+ <li><a href="#architecture">Architecture</a></li>
21
+ <li><a href="#implementation">Implementation</a></li>
22
+ <li><a href="#adoption">Industry Adoption</a></li>
23
+ <li><a href="#security">Security</a></li>
24
+ <li><a href="#resources">Resources</a></li>
 
25
  </ul>
26
  </nav>
27
  </div>
28
  </header>
29
 
30
+ <section id="overview" class="container">
31
+ <h2>What is the Model Context Protocol?</h2>
32
+ <div class="intro-box">
33
+ <p>The Model Context Protocol (MCP) is an open standard created by Anthropic in November 2024 that solves the fundamental problem of connecting AI models to external data sources and tools. Often described as the <strong>"USB-C port for AI applications,"</strong> MCP standardizes how AI systems access real-world information and functionality beyond their training data.</p>
34
+ </div>
35
+
36
+ <div class="two-column">
37
+ <div class="column">
38
+ <h3>The Problem MCP Solves</h3>
39
+ <p>Even the most sophisticated AI models remain isolated from real-time data—trapped behind information silos and legacy systems. MCP transforms what would be an "M×N integration problem" (where M applications must independently connect to N data sources) into a simpler "M+N" problem through a universal interface.</p>
40
+
41
+ <p>Without MCP, developers face:</p>
42
+ <ul>
43
+ <li>Building custom integrations for each data source</li>
44
+ <li>Managing inconsistent implementations across AI platforms</li>
45
+ <li>Reimplementing similar functionality for each AI service</li>
46
+ </ul>
47
+ </div>
48
+ <div class="column">
49
+ <h3>Key Capabilities</h3>
50
+ <p>MCP provides three primary capabilities:</p>
51
+ <ul>
52
+ <li><strong>Tools:</strong> Executable functions that models can invoke (similar to function calling)</li>
53
+ <li><strong>Resources:</strong> Read-only data sources that models can query</li>
54
+ <li><strong>Prompts:</strong> Pre-defined templates to optimize interactions</li>
55
+ </ul>
56
+ <p>These capabilities enable AI models to seamlessly interact with databases, APIs, local files, and other systems while maintaining a consistent implementation pattern.</p>
57
+ </div>
58
+ </div>
59
+
60
+ <div class="quote-box">
61
+ <blockquote>
62
+ "MCP addresses a fundamental challenge facing AI systems today: even the most sophisticated models remain isolated from real-time data—trapped behind information silos and legacy systems."
63
+ </blockquote>
64
+ <cite>— <a href="https://www.anthropic.com/news/model-context-protocol" target="_blank">Anthropic's MCP Announcement</a></cite>
65
  </div>
66
  </section>
67
 
68
+ <section id="architecture" class="container alt-bg">
69
+ <h2>Technical Architecture</h2>
70
+ <p>MCP follows a client-server architecture with well-defined components and communication patterns.</p>
71
+
72
+ <div class="arch-diagram">
73
+ <img src="mcp-diagram.svg" alt="MCP Client-Server Architecture Diagram" width="800" height="400">
74
+ <p class="caption">MCP Client-Server Architecture</p>
75
+ </div>
76
+
77
+ <div class="components">
78
+ <div class="component">
79
+ <h3>MCP Hosts</h3>
80
+ <p>AI applications like Claude Desktop that need external data access</p>
81
+ </div>
82
+ <div class="component">
83
+ <h3>MCP Clients</h3>
84
+ <p>Protocol clients that maintain connections with servers</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  </div>
86
+ <div class="component">
87
+ <h3>MCP Servers</h3>
88
+ <p>Lightweight programs exposing specific capabilities</p>
89
+ </div>
90
+ <div class="component">
91
+ <h3>Data Sources</h3>
92
+ <p>Local or remote systems that servers can access</p>
93
+ </div>
94
+ </div>
95
+
96
+ <h3>Protocol Details</h3>
97
+ <ul class="tech-details">
98
+ <li><strong>Message Protocol:</strong> JSON-RPC 2.0</li>
99
+ <li><strong>Transport Mechanisms:</strong>
100
+ <ul>
101
+ <li>STDIO: For local server communication (running in subprocess)</li>
102
+ <li>Streamable HTTP: For remote server communication (replaced earlier HTTP+SSE)</li>
103
+ </ul>
104
+ </li>
105
+ <li><strong>Security Model:</strong>
106
+ <ul>
107
+ <li>Isolation: Each client maintains a 1:1 relationship with a server</li>
108
+ <li>Access Control: Servers define capabilities and access boundaries</li>
109
+ <li>OAuth 2.1 Support: Required for authenticating remote HTTP servers (added March 2025)</li>
110
+ </ul>
111
+ </li>
112
+ </ul>
113
+
114
+ <div class="tech-note">
115
+ <p><strong>Note:</strong> MCP draws significant inspiration from Microsoft's Language Server Protocol (LSP), adapting many of its concepts to the AI domain while building on proven foundations like JSON-RPC 2.0.</p>
116
+ </div>
117
+ </section>
118
+
119
+ <section id="implementation" class="container">
120
+ <h2>Implementation Guide</h2>
121
+
122
+ <h3>Supported Languages</h3>
123
+ <p>MCP provides official SDK support for multiple languages:</p>
124
+ <div class="language-grid">
125
+ <div class="language">TypeScript/JavaScript</div>
126
+ <div class="language">Python</div>
127
+ <div class="language">Java</div>
128
+ <div class="language">Kotlin</div>
129
+ <div class="language">C#</div>
130
+ <div class="language">Swift</div>
131
+ <div class="language">Rust</div>
132
+ </div>
133
+
134
+ <h3>TypeScript Example</h3>
135
+ <div class="diagram-container">
136
+ <img src="code-diagram.svg" alt="MCP Server Implementation in TypeScript" width="800" height="420" class="code-diagram">
137
+ </div>
138
+ <div class="code-block">
139
+ <pre><code>import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
140
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
141
+ import { z } from "zod";
142
+
143
+ // Create an MCP server
144
+ const server = new McpServer({
145
+ name: "Demo",
146
+ version: "1.0.0"
147
  });
148
 
149
+ // Add a tool with Zod schema validation
150
+ server.tool(
151
+ "add",
152
+ { a: z.number(), b: z.number() },
153
+ async ({ a, b }) => ({
154
+ content: [{ type: "text", text: String(a + b) }]
155
+ })
156
+ );
157
+
158
+ // Connect using STDIO transport
159
+ const transport = new StdioServerTransport();
160
+ await server.connect(transport);</code></pre>
161
+ </div>
162
+
163
+ <h3>Best Practices</h3>
164
+ <div class="best-practices">
165
+ <div class="practice">
166
+ <h4>Tool Design</h4>
167
+ <ul>
168
+ <li>Create goal-oriented tools at the right abstraction level</li>
169
+ <li>Provide clear, descriptive names and documentation</li>
170
+ <li>Avoid exposing low-level functions directly</li>
171
+ </ul>
172
+ </div>
173
+ <div class="practice">
174
+ <h4>Security</h4>
175
+ <ul>
176
+ <li>Implement OAuth 2.1 for remote server authentication</li>
177
+ <li>Apply the principle of least privilege to tool permissions</li>
178
+ <li>Rigorously validate all incoming messages</li>
179
+ <li>Implement user approval for destructive operations</li>
180
+ </ul>
181
+ </div>
182
+ <div class="practice">
183
+ <h4>Performance</h4>
184
+ <ul>
185
+ <li>Use caching for resource results to reduce redundant operations</li>
186
+ <li>Prefer Streamable HTTP for remote servers</li>
187
+ <li>Be mindful of context window sizes when returning large text responses</li>
188
+ </ul>
189
+ </div>
190
+ </div>
191
+
192
+ <div class="resource-link">
193
+ <a href="https://github.com/modelcontextprotocol/typescript-sdk" target="_blank" class="btn">Official TypeScript SDK</a>
194
+ <a href="https://github.com/modelcontextprotocol/python-sdk" target="_blank" class="btn">Official Python SDK</a>
195
+ <a href="https://modelcontextprotocol.io/specification/2025-03-26" target="_blank" class="btn">Full Specification</a>
196
+ </div>
197
+ </section>
198
+
199
+ <section id="adoption" class="container alt-bg">
200
+ <h2>Industry Adoption</h2>
201
+ <p>Since its introduction, MCP has experienced remarkable adoption across the AI ecosystem, positioning it as the de facto standard for connecting AI models to external tools and data sources.</p>
202
 
203
+ <div class="adoption-grid">
204
+ <img src="company-logos.svg" alt="Major Companies Supporting MCP" width="800" height="260" class="company-diagram">
205
+ </div>
206
+
207
+ <h3>Ecosystem Growth</h3>
208
+ <div class="stats">
209
+ <div class="stat">
210
+ <div class="stat-number">250+</div>
211
+ <div class="stat-label">Distinct MCP Servers Available</div>
212
+ </div>
213
+ <div class="stat">
214
+ <div class="stat-number">1,000+</div>
215
+ <div class="stat-label">Community-Built Connectors</div>
216
  </div>
217
+ <div class="stat">
218
+ <div class="stat-number">7</div>
219
+ <div class="stat-label">Official SDK Languages</div>
220
+ </div>
221
+ </div>
222
 
223
+ <h3>Development Tools with MCP Support</h3>
224
+ <div class="tool-list">
225
+ <div class="tool">Zed</div>
226
+ <div class="tool">Replit</div>
227
+ <div class="tool">Codeium</div>
228
+ <div class="tool">Sourcegraph</div>
229
+ <div class="tool">Cursor</div>
230
+ </div>
231
+ </section>
 
232
 
233
+ <section id="security" class="container">
234
+ <h2>Security Considerations</h2>
235
+ <p>While MCP offers significant benefits for AI capabilities and alignment, security researchers have identified several critical vulnerabilities that must be addressed as the protocol matures.</p>
236
+
237
+ <div class="security-diagram">
238
+ <img src="security-diagram.svg" alt="MCP Security Vulnerabilities and Mitigations" width="800" height="400">
239
+ </div>
240
+
241
+ <div class="security-warning">
242
+ <h3>Known Vulnerabilities</h3>
243
+ <ul>
244
+ <li><strong>Tool poisoning attacks:</strong> Malicious instructions embedded in tool descriptions can cause AI systems to leak sensitive data</li>
245
+ <li><strong>MCP rug pulls:</strong> Servers can change their tool definitions after installation, potentially introducing malicious functionality</li>
246
+ <li><strong>Cross-server tool shadowing:</strong> Malicious servers can override legitimate tools from other servers</li>
247
+ </ul>
248
+ </div>
249
+
250
+ <h3>Mitigation Strategies</h3>
251
+ <div class="mitigation-grid">
252
+ <div class="strategy">
253
+ <h4>Tool Verification</h4>
254
+ <p>Implement cryptographic verification of tool definitions and pin trusted tool versions</p>
255
+ </div>
256
+ <div class="strategy">
257
+ <h4>UI Transparency</h4>
258
+ <p>Improve visibility into tool operations and show tool descriptions to users</p>
259
+ </div>
260
+ <div class="strategy">
261
+ <h4>Cross-Origin Protections</h4>
262
+ <p>Implement strict protections against cross-origin resource sharing vulnerabilities</p>
263
+ </div>
264
+ <div class="strategy">
265
+ <h4>Security Scanning</h4>
266
+ <p>Develop automated tools to scan MCP servers for potential security issues</p>
267
+ </div>
268
+ </div>
269
+
270
+ <div class="security-resources">
271
+ <h3>Security Research</h3>
272
+ <ul>
273
+ <li><a href="https://arxiv.org/abs/2504.03767" target="_blank">MCP Safety Audit: LLMs with the Model Context Protocol Allow Major Security Exploits</a></li>
274
+ <li><a href="https://www.wiz.io/blog/mcp-security-research-briefing" target="_blank">MCP and LLM Security Research Briefing</a></li>
275
+ <li><a href="https://github.com/slowmist/MCP-Security-Checklist" target="_blank">SlowMist MCP Security Checklist</a></li>
276
+ </ul>
277
+ </div>
278
+ </section>
279
+
280
+ <section id="resources" class="container alt-bg">
281
+ <h2>Additional Resources</h2>
282
+
283
+ <div class="resource-categories">
284
+ <div class="resource-category">
285
+ <h3>Official Resources</h3>
286
  <ul>
287
+ <li><a href="https://www.anthropic.com/news/model-context-protocol" target="_blank">Anthropic's MCP Announcement</a></li>
288
+ <li><a href="https://modelcontextprotocol.io/specification/2025-03-26" target="_blank">MCP Specification (March 2025)</a></li>
289
+ <li><a href="https://github.com/modelcontextprotocol" target="_blank">Official GitHub Organization</a></li>
290
+ <li><a href="https://modelcontextprotocol.io/development/roadmap" target="_blank">MCP Development Roadmap</a></li>
291
  </ul>
292
  </div>
293
+ <div class="resource-category">
294
+ <h3>Implementation Guides</h3>
295
  <ul>
296
+ <li><a href="https://github.com/cyanheads/model-context-protocol-resources" target="_blank">Comprehensive MCP Resources</a></li>
297
+ <li><a href="https://www.philschmid.de/mcp-introduction" target="_blank">MCP Technical Overview</a></li>
298
+ <li><a href="https://dev.to/tak089/what-is-model-context-protocol-mcp-and-why-is-it-trending-in-2025-14lc" target="_blank">MCP Trends in 2025</a></li>
299
+ <li><a href="https://github.com/ivo-toby/mcp-openapi-server" target="_blank">OpenAPI to MCP Server Converter</a></li>
300
  </ul>
301
  </div>
302
+ <div class="resource-category">
303
+ <h3>Comparison with Alternatives</h3>
304
  <ul>
305
+ <li><a href="https://mcpa2a.com/" target="_blank">MCP vs A2A Protocol Comparison</a></li>
306
+ <li><a href="https://blog.fotiecodes.com/function-calling-vs-model-context-protocol-mcp-what-you-need-to-know-cm88zfwik000108ji0a1d54fc" target="_blank">Function Calling vs. MCP</a></li>
307
+ <li><a href="https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/" target="_blank">MCP vs Traditional APIs</a></li>
308
  </ul>
309
  </div>
310
  </div>
311
+
312
+ <div class="newsletter">
313
+ <h3>Stay Updated on MCP Developments</h3>
314
+ <p>Subscribe to our newsletter for the latest MCP news, implementation guides, and security updates.</p>
315
+ <form id="newsletter-form">
316
+ <input type="email" placeholder="Your email address" required>
317
+ <button type="submit" class="btn">Subscribe</button>
318
+ </form>
319
+ </div>
320
+ </section>
321
+
322
+ <footer>
323
+ <div class="container">
324
+ <div class="footer-content">
325
+ <div class="footer-section">
326
+ <h3>Model Context Protocol (MCP)</h3>
327
+ <p>The universal standard for connecting AI models to external data sources and tools.</p>
328
+ </div>
329
+ <div class="footer-section">
330
+ <h3>Important Links</h3>
331
+ <ul>
332
+ <li><a href="https://www.anthropic.com/news/model-context-protocol" target="_blank">Official MCP Site</a></li>
333
+ <li><a href="https://github.com/modelcontextprotocol" target="_blank">GitHub</a></li>
334
+ <li><a href="https://modelcontextprotocol.io/specification/2025-03-26" target="_blank">Specification</a></li>
335
+ </ul>
336
+ </div>
337
+ <div class="footer-section">
338
+ <h3>Connect</h3>
339
+ <ul class="social-links">
340
+ <li><a href="#" target="_blank">Twitter</a></li>
341
+ <li><a href="#" target="_blank">LinkedIn</a></li>
342
+ <li><a href="#" target="_blank">GitHub</a></li>
343
+ </ul>
344
+ </div>
345
+ </div>
346
+ <div class="copyright">
347
+ <p>&copy; 2025 MCP Resource Hub. All information based on public sources. Not affiliated with Anthropic, Inc.</p>
348
+ <p>Last updated: May 6, 2025</p>
349
+ </div>
350
  </div>
351
  </footer>
352
 
353
+ <script src="script.js"></script>
354
  </body>
355
  </html>
mcp-diagram.svg ADDED
script.js ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // MCP Website JavaScript
2
+
3
+ document.addEventListener('DOMContentLoaded', function() {
4
+ // Newsletter subscription form
5
+ const newsletterForm = document.getElementById('newsletter-form');
6
+ if (newsletterForm) {
7
+ newsletterForm.addEventListener('submit', function(e) {
8
+ e.preventDefault();
9
+ const email = this.querySelector('input[type="email"]').value;
10
+
11
+ // In a real implementation, this would send the email to a server
12
+ // For demonstration purposes, we'll show an alert
13
+ alert(`Thank you for subscribing with ${email}! You'll receive MCP updates soon.`);
14
+ this.reset();
15
+ });
16
+ }
17
+
18
+ // Smooth scrolling for navigation links
19
+ const navLinks = document.querySelectorAll('nav a[href^="#"]');
20
+ navLinks.forEach(link => {
21
+ link.addEventListener('click', function(e) {
22
+ e.preventDefault();
23
+
24
+ const targetId = this.getAttribute('href');
25
+ const targetElement = document.querySelector(targetId);
26
+
27
+ if (targetElement) {
28
+ window.scrollTo({
29
+ top: targetElement.offsetTop - 80,
30
+ behavior: 'smooth'
31
+ });
32
+ }
33
+ });
34
+ });
35
+
36
+ // Add active class to navigation items on scroll
37
+ const sections = document.querySelectorAll('section[id]');
38
+ window.addEventListener('scroll', function() {
39
+ const scrollPosition = window.scrollY + 150;
40
+
41
+ sections.forEach(section => {
42
+ const sectionTop = section.offsetTop;
43
+ const sectionHeight = section.offsetHeight;
44
+ const sectionId = section.getAttribute('id');
45
+
46
+ if (scrollPosition >= sectionTop && scrollPosition < sectionTop + sectionHeight) {
47
+ document.querySelector(`nav a[href="#${sectionId}"]`).classList.add('active');
48
+ } else {
49
+ document.querySelector(`nav a[href="#${sectionId}"]`).classList.remove('active');
50
+ }
51
+ });
52
+ });
53
+
54
+ // Create a simple syntax highlighting effect for code blocks
55
+ const codeBlocks = document.querySelectorAll('pre code');
56
+ codeBlocks.forEach(block => {
57
+ // Simple keyword highlighting
58
+ const keywords = ['import', 'const', 'let', 'var', 'function', 'return', 'async', 'await', 'new', 'class'];
59
+ const punctuation = ['{', '}', '[', ']', '(', ')', ',', ';', '.', ':'];
60
+ const strings = ['"', "'", '`'];
61
+
62
+ // Get the text content
63
+ let content = block.textContent;
64
+
65
+ // This is a very simple implementation - in a real-world scenario,
66
+ // you would use a proper syntax highlighting library like Prism.js or highlight.js
67
+
68
+ // For now, we'll just add a CSS class to the block to enable some basic styling
69
+ block.classList.add('syntax-highlighted');
70
+ });
71
+ });
security-diagram.svg ADDED
styles.css ADDED
@@ -0,0 +1,489 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Base styles */
2
+ :root {
3
+ --primary-color: #4a6cf7;
4
+ --secondary-color: #7e53f1;
5
+ --accent-color: #ff594f;
6
+ --text-color: #333;
7
+ --text-light: #666;
8
+ --background-light: #f8f9fc;
9
+ --background-dark: #161c2d;
10
+ --box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08);
11
+ --border-radius: 8px;
12
+ --font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
13
+ --font-mono: 'JetBrains Mono', monospace;
14
+ }
15
+
16
+ * {
17
+ margin: 0;
18
+ padding: 0;
19
+ box-sizing: border-box;
20
+ }
21
+
22
+ html {
23
+ scroll-behavior: smooth;
24
+ }
25
+
26
+ body {
27
+ font-family: var(--font-sans);
28
+ line-height: 1.6;
29
+ color: var(--text-color);
30
+ background-color: #fff;
31
+ }
32
+
33
+ .container {
34
+ width: 90%;
35
+ max-width: 1200px;
36
+ margin: 0 auto;
37
+ padding: 40px 0;
38
+ }
39
+
40
+ h1, h2, h3, h4, h5, h6 {
41
+ margin-bottom: 1rem;
42
+ line-height: 1.3;
43
+ font-weight: 700;
44
+ }
45
+
46
+ h1 {
47
+ font-size: 2.5rem;
48
+ }
49
+
50
+ h2 {
51
+ font-size: 2rem;
52
+ }
53
+
54
+ h3 {
55
+ font-size: 1.5rem;
56
+ }
57
+
58
+ p {
59
+ margin-bottom: 1.5rem;
60
+ }
61
+
62
+ a {
63
+ color: var(--primary-color);
64
+ text-decoration: none;
65
+ }
66
+
67
+ a:hover {
68
+ text-decoration: underline;
69
+ }
70
+
71
+ ul, ol {
72
+ margin-bottom: 1.5rem;
73
+ padding-left: 1.5rem;
74
+ }
75
+
76
+ .btn {
77
+ display: inline-block;
78
+ padding: 0.75rem 1.5rem;
79
+ background-color: var(--primary-color);
80
+ color: white;
81
+ border-radius: var(--border-radius);
82
+ text-decoration: none;
83
+ font-weight: 600;
84
+ transition: all 0.3s ease;
85
+ }
86
+
87
+ .btn:hover {
88
+ background-color: var(--secondary-color);
89
+ text-decoration: none;
90
+ transform: translateY(-2px);
91
+ }
92
+
93
+ .alt-bg {
94
+ background-color: var(--background-light);
95
+ }
96
+
97
+ /* Header */
98
+ header {
99
+ background: linear-gradient(135deg, var(--background-dark) 0%, #233152 100%);
100
+ color: white;
101
+ padding: 20px 0;
102
+ }
103
+
104
+ header h1 {
105
+ margin-bottom: 0.25rem;
106
+ }
107
+
108
+ .tagline {
109
+ font-size: 1.25rem;
110
+ margin-bottom: 2rem;
111
+ opacity: 0.9;
112
+ }
113
+
114
+ nav ul {
115
+ display: flex;
116
+ list-style: none;
117
+ padding: 0;
118
+ margin: 0;
119
+ }
120
+
121
+ nav ul li {
122
+ margin-right: 1.5rem;
123
+ }
124
+
125
+ nav ul li a {
126
+ color: white;
127
+ text-decoration: none;
128
+ font-weight: 500;
129
+ padding: 0.5rem 0;
130
+ transition: all 0.3s ease;
131
+ }
132
+
133
+ nav ul li a:hover {
134
+ color: var(--accent-color);
135
+ }
136
+
137
+ /* Overview section */
138
+ .intro-box {
139
+ background-color: var(--background-light);
140
+ border-left: 5px solid var(--primary-color);
141
+ padding: 1.5rem;
142
+ margin-bottom: 2rem;
143
+ border-radius: 0 var(--border-radius) var(--border-radius) 0;
144
+ }
145
+
146
+ .two-column {
147
+ display: grid;
148
+ grid-template-columns: 1fr 1fr;
149
+ gap: 2rem;
150
+ }
151
+
152
+ .quote-box {
153
+ background-color: rgba(74, 108, 247, 0.1);
154
+ padding: 2rem;
155
+ border-radius: var(--border-radius);
156
+ margin: 2rem 0;
157
+ }
158
+
159
+ blockquote {
160
+ font-style: italic;
161
+ font-size: 1.15rem;
162
+ margin-bottom: 1rem;
163
+ }
164
+
165
+ cite {
166
+ font-style: normal;
167
+ font-weight: 600;
168
+ font-size: 0.9rem;
169
+ }
170
+
171
+ /* Architecture section */
172
+ .arch-diagram {
173
+ background-color: white;
174
+ border: 1px solid #ddd;
175
+ border-radius: var(--border-radius);
176
+ padding: 1rem;
177
+ margin: 2rem 0;
178
+ text-align: center;
179
+ }
180
+
181
+ .diagram-placeholder {
182
+ background-color: #eee;
183
+ padding: 8rem 0;
184
+ margin-bottom: 1rem;
185
+ border-radius: var(--border-radius);
186
+ display: flex;
187
+ justify-content: center;
188
+ align-items: center;
189
+ font-weight: bold;
190
+ color: #666;
191
+ }
192
+
193
+ .caption {
194
+ font-size: 0.9rem;
195
+ color: var(--text-light);
196
+ margin-top: 0.5rem;
197
+ }
198
+
199
+ .components {
200
+ display: grid;
201
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
202
+ gap: 1.5rem;
203
+ margin: 2rem 0;
204
+ }
205
+
206
+ .component {
207
+ background-color: white;
208
+ padding: 1.5rem;
209
+ border-radius: var(--border-radius);
210
+ box-shadow: var(--box-shadow);
211
+ }
212
+
213
+ .tech-details {
214
+ background-color: white;
215
+ padding: 1.5rem;
216
+ border-radius: var(--border-radius);
217
+ box-shadow: var(--box-shadow);
218
+ margin: 2rem 0;
219
+ }
220
+
221
+ .tech-note {
222
+ background-color: rgba(255, 89, 79, 0.1);
223
+ padding: 1rem;
224
+ border-radius: var(--border-radius);
225
+ margin-top: 2rem;
226
+ }
227
+
228
+ /* Implementation section */
229
+ .language-grid {
230
+ display: grid;
231
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
232
+ gap: 1rem;
233
+ margin-bottom: 2rem;
234
+ }
235
+
236
+ .language {
237
+ background-color: var(--background-light);
238
+ padding: 1rem;
239
+ border-radius: var(--border-radius);
240
+ text-align: center;
241
+ font-weight: 600;
242
+ }
243
+
244
+ .code-block {
245
+ background-color: var(--background-dark);
246
+ border-radius: var(--border-radius);
247
+ overflow: hidden;
248
+ margin: 2rem 0;
249
+ }
250
+
251
+ pre {
252
+ padding: 1.5rem;
253
+ overflow-x: auto;
254
+ }
255
+
256
+ code {
257
+ font-family: var(--font-mono);
258
+ color: #e0e0e0;
259
+ font-size: 0.9rem;
260
+ }
261
+
262
+ .best-practices {
263
+ display: grid;
264
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
265
+ gap: 1.5rem;
266
+ margin: 2rem 0;
267
+ }
268
+
269
+ .practice {
270
+ background-color: white;
271
+ padding: 1.5rem;
272
+ border-radius: var(--border-radius);
273
+ box-shadow: var(--box-shadow);
274
+ }
275
+
276
+ .resource-link {
277
+ display: flex;
278
+ flex-wrap: wrap;
279
+ gap: 1rem;
280
+ margin: 2rem 0;
281
+ }
282
+
283
+ /* Adoption section */
284
+ .adoption-grid {
285
+ display: grid;
286
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
287
+ gap: 2rem;
288
+ margin: 2rem 0;
289
+ }
290
+
291
+ .company {
292
+ background-color: white;
293
+ padding: 1.5rem;
294
+ border-radius: var(--border-radius);
295
+ box-shadow: var(--box-shadow);
296
+ text-align: center;
297
+ }
298
+
299
+ .company-logo {
300
+ height: 100px;
301
+ background-color: #eee;
302
+ border-radius: var(--border-radius);
303
+ display: flex;
304
+ justify-content: center;
305
+ align-items: center;
306
+ margin-bottom: 1rem;
307
+ font-weight: bold;
308
+ font-size: 1.2rem;
309
+ }
310
+
311
+ .stats {
312
+ display: grid;
313
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
314
+ gap: 2rem;
315
+ margin: 2rem 0;
316
+ text-align: center;
317
+ }
318
+
319
+ .stat-number {
320
+ font-size: 3rem;
321
+ font-weight: 700;
322
+ color: var(--primary-color);
323
+ line-height: 1.2;
324
+ }
325
+
326
+ .stat-label {
327
+ font-size: 1rem;
328
+ color: var(--text-light);
329
+ }
330
+
331
+ .tool-list {
332
+ display: flex;
333
+ flex-wrap: wrap;
334
+ gap: 1rem;
335
+ margin: 2rem 0;
336
+ }
337
+
338
+ .tool {
339
+ background-color: var(--background-light);
340
+ padding: 0.75rem 1.5rem;
341
+ border-radius: var(--border-radius);
342
+ font-weight: 600;
343
+ }
344
+
345
+ /* Security section */
346
+ .security-warning {
347
+ background-color: rgba(255, 89, 79, 0.1);
348
+ padding: 1.5rem;
349
+ border-radius: var(--border-radius);
350
+ margin: 2rem 0;
351
+ border-left: 5px solid var(--accent-color);
352
+ }
353
+
354
+ .mitigation-grid {
355
+ display: grid;
356
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
357
+ gap: 1.5rem;
358
+ margin: 2rem 0;
359
+ }
360
+
361
+ .strategy {
362
+ background-color: white;
363
+ padding: 1.5rem;
364
+ border-radius: var(--border-radius);
365
+ box-shadow: var(--box-shadow);
366
+ }
367
+
368
+ .security-resources {
369
+ background-color: var(--background-light);
370
+ padding: 1.5rem;
371
+ border-radius: var(--border-radius);
372
+ margin: 2rem 0;
373
+ }
374
+
375
+ /* Resources section */
376
+ .resource-categories {
377
+ display: grid;
378
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
379
+ gap: 2rem;
380
+ margin: 2rem 0;
381
+ }
382
+
383
+ .resource-category {
384
+ background-color: white;
385
+ padding: 1.5rem;
386
+ border-radius: var(--border-radius);
387
+ box-shadow: var(--box-shadow);
388
+ }
389
+
390
+ .newsletter {
391
+ background-color: var(--secondary-color);
392
+ color: white;
393
+ padding: 2rem;
394
+ border-radius: var(--border-radius);
395
+ margin-top: 3rem;
396
+ }
397
+
398
+ .newsletter h3 {
399
+ margin-bottom: 1rem;
400
+ }
401
+
402
+ #newsletter-form {
403
+ display: flex;
404
+ gap: 1rem;
405
+ margin-top: 1.5rem;
406
+ }
407
+
408
+ #newsletter-form input {
409
+ flex: 1;
410
+ padding: 0.75rem 1rem;
411
+ border: none;
412
+ border-radius: var(--border-radius);
413
+ font-size: 1rem;
414
+ }
415
+
416
+ #newsletter-form .btn {
417
+ background-color: var(--accent-color);
418
+ }
419
+
420
+ #newsletter-form .btn:hover {
421
+ background-color: #e4483f;
422
+ }
423
+
424
+ /* Footer */
425
+ footer {
426
+ background-color: var(--background-dark);
427
+ color: white;
428
+ padding: 3rem 0;
429
+ }
430
+
431
+ .footer-content {
432
+ display: grid;
433
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
434
+ gap: 2rem;
435
+ margin-bottom: 2rem;
436
+ }
437
+
438
+ .footer-section h3 {
439
+ margin-bottom: 1.5rem;
440
+ color: white;
441
+ }
442
+
443
+ .footer-section ul {
444
+ list-style: none;
445
+ padding: 0;
446
+ }
447
+
448
+ .footer-section ul li {
449
+ margin-bottom: 0.5rem;
450
+ }
451
+
452
+ .footer-section a {
453
+ color: #a0b4fe;
454
+ }
455
+
456
+ .copyright {
457
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
458
+ padding-top: 2rem;
459
+ text-align: center;
460
+ color: rgba(255, 255, 255, 0.6);
461
+ font-size: 0.9rem;
462
+ }
463
+
464
+ /* Responsive styles */
465
+ @media (max-width: 768px) {
466
+ h1 {
467
+ font-size: 2rem;
468
+ }
469
+
470
+ h2 {
471
+ font-size: 1.75rem;
472
+ }
473
+
474
+ .two-column {
475
+ grid-template-columns: 1fr;
476
+ }
477
+
478
+ nav ul {
479
+ flex-direction: column;
480
+ }
481
+
482
+ nav ul li {
483
+ margin-bottom: 0.5rem;
484
+ }
485
+
486
+ #newsletter-form {
487
+ flex-direction: column;
488
+ }
489
+ }