-
+
See Remote MCP in Action
-
+
Watch how to connect AI agents to external tools in
minutes
@@ -207,6 +209,7 @@ export function HeroSection() {
autoPlay
muted
playsInline
+ preload="metadata"
title="Demo: See Remote MCP in Action – how to connect AI agents to external tools in minutes"
onEnded={() => {
setIsVideoPlaying(false);
diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx
index 76ee84d..17bdc02 100644
--- a/src/routes/__root.tsx
+++ b/src/routes/__root.tsx
@@ -43,7 +43,20 @@ export const Route = createRootRouteWithContext()({
content: "width=device-width, initial-scale=1",
},
{
- title: "Remote Mcp",
+ title: "Remote MCP - Cloud MCP Servers for AI Assistants",
+ },
+ {
+ name: "description",
+ content:
+ "Connect AI assistants like Claude and Cursor to your favorite apps. Create and manage MCP servers in the cloud with 159+ tools across GitHub, Slack, YouTube, PostgreSQL, and more.",
+ },
+ {
+ name: "robots",
+ content: "index, follow",
+ },
+ {
+ name: "theme-color",
+ content: "#000000",
},
],
links: [
@@ -51,6 +64,14 @@ export const Route = createRootRouteWithContext()({
rel: "stylesheet",
href: appCss,
},
+ {
+ rel: "icon",
+ href: "/favicon.ico",
+ },
+ {
+ rel: "canonical",
+ href: "https://remotemcp.tech",
+ },
],
}),
shellComponent: RootDocument,
diff --git a/src/routes/_authed/chat.tsx b/src/routes/_authed/chat.tsx
index a9d1654..8fdab73 100644
--- a/src/routes/_authed/chat.tsx
+++ b/src/routes/_authed/chat.tsx
@@ -5,6 +5,28 @@ import { Suspense } from "react";
export const Route = createFileRoute("/_authed/chat")({
component: ChatLayout,
+ head: () => ({
+ meta: [
+ {
+ title: "Chat - Remote MCP",
+ },
+ {
+ name: "description",
+ content:
+ "Chat with AI assistants powered by Remote MCP servers. Test your MCP integrations with Claude, GPT-4, and other AI models.",
+ },
+ {
+ name: "robots",
+ content: "noindex, nofollow",
+ },
+ ],
+ links: [
+ {
+ rel: "canonical",
+ href: "https://remotemcp.tech/chat",
+ },
+ ],
+ }),
});
const ChatSkeleton = () => (
diff --git a/src/routes/_authed/runs.tsx b/src/routes/_authed/runs.tsx
index 7225927..b65365d 100644
--- a/src/routes/_authed/runs.tsx
+++ b/src/routes/_authed/runs.tsx
@@ -9,6 +9,28 @@ import { RunsTable } from "./-components/runs-table";
export const Route = createFileRoute("/_authed/runs")({
component: RunsPage,
validateSearch: runsSearchSchema,
+ head: () => ({
+ meta: [
+ {
+ title: "Runs - Remote MCP",
+ },
+ {
+ name: "description",
+ content:
+ "View and monitor your MCP server execution logs, track tool invocations, and debug AI assistant interactions.",
+ },
+ {
+ name: "robots",
+ content: "noindex, nofollow",
+ },
+ ],
+ links: [
+ {
+ rel: "canonical",
+ href: "https://remotemcp.tech/runs",
+ },
+ ],
+ }),
});
function RunsPage() {
diff --git a/src/routes/_authed/settings.tsx b/src/routes/_authed/settings.tsx
index 3f070c8..99ce042 100644
--- a/src/routes/_authed/settings.tsx
+++ b/src/routes/_authed/settings.tsx
@@ -44,6 +44,28 @@ import { useLocalStorage } from "usehooks-ts";
export const Route = createFileRoute("/_authed/settings")({
component: RouteComponent,
+ head: () => ({
+ meta: [
+ {
+ title: "Settings - Remote MCP",
+ },
+ {
+ name: "description",
+ content:
+ "Manage your Remote MCP account settings, configure AI providers, adjust MCP server preferences, and customize your experience.",
+ },
+ {
+ name: "robots",
+ content: "noindex, nofollow",
+ },
+ ],
+ links: [
+ {
+ rel: "canonical",
+ href: "https://remotemcp.tech/settings",
+ },
+ ],
+ }),
});
function RouteComponent() {
diff --git a/src/routes/index.tsx b/src/routes/index.tsx
index 89fcde5..0ebb7b5 100644
--- a/src/routes/index.tsx
+++ b/src/routes/index.tsx
@@ -88,6 +88,13 @@ export const Route = createFileRoute("/")({
content: "width=device-width, initial-scale=1",
},
],
+ links: [
+ // Preconnect to external domains
+ {
+ rel: "preconnect",
+ href: "https://github.com",
+ },
+ ],
};
},
});
diff --git a/src/routes/login.tsx b/src/routes/login.tsx
index 6c3cbfa..ce82aaa 100644
--- a/src/routes/login.tsx
+++ b/src/routes/login.tsx
@@ -39,6 +39,28 @@ export const Route = createFileRoute("/login")({
validateSearch: z.object({
from: z.string().optional(),
}),
+ head: () => ({
+ meta: [
+ {
+ title: "Login - Remote MCP",
+ },
+ {
+ name: "description",
+ content:
+ "Sign in to Remote MCP to manage your cloud MCP servers and connect AI assistants to your favorite apps. Login with GitHub or Google.",
+ },
+ {
+ name: "robots",
+ content: "noindex, nofollow",
+ },
+ ],
+ links: [
+ {
+ rel: "canonical",
+ href: "https://remotemcp.tech/login",
+ },
+ ],
+ }),
});
// Schema for form validation
diff --git a/vite.config.ts b/vite.config.ts
index 7cd4e19..b3ca3d1 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -19,6 +19,7 @@ const config = defineConfig({
externals: {
inline: ['zod', 'nanoid'],
},
+ compatibilityDate: '2025-11-13'
}),
viteReact(),
],