Skip to content

Commit 136bffd

Browse files
committed
feat: update README and enhance server management UI
- Replaced the screenshot in README.md with a demo GIF for better visual representation. - Updated the benefits section in README.md to clarify that team collaboration features are in beta. - Improved the layout of the feature comparison table in README.md for better readability. - Enhanced ServerCard component to display server logos if available, falling back to a GitHub icon if not. - Added a refresh button and an "Add Custom Server" button in the McpManage component for improved user interaction. - Introduced a dialog for adding custom servers in the McpManage component. - Updated ServerType to rename icon_url to logoUrl for consistency.
1 parent 002a388 commit 136bffd

File tree

7 files changed

+53
-16
lines changed

7 files changed

+53
-16
lines changed

README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Add, manage, and sync MCP (Model Context Protocol) servers across AI clients lik
3333

3434
**The fastest way to supercharge your AI workflow with 600+ curated MCP servers.**
3535

36-
![Screenshot](./images/manage.png)
36+
![Demo](./images/demo.gif)
3737

3838
### 🎯 Key Features
3939

@@ -48,7 +48,7 @@ Add, manage, and sync MCP (Model Context Protocol) servers across AI clients lik
4848

4949
### 💎 Game-Changing Benefits
5050

51-
**Sync MCP server configuration across all your MCP clients. Pro users get secure, encrypted backup of their `mcp_server_config` to our FastAPI backend. Team collaboration features coming soon!**
51+
**Sync MCP server configuration across all your MCP clients. Pro users get secure, encrypted backup of their `mcp_server_config` to our FastAPI backend. Team collaboration features (beta)!**
5252

5353
## 🚀 Quick Start
5454

@@ -63,17 +63,23 @@ Add, manage, and sync MCP (Model Context Protocol) servers across AI clients lik
6363
6464
| Feature | Free | Pro | Team |
6565
|-------------------------|-----------|---------|---------|
66+
| Multi-client management ||||
6667
| One-click install ||||
6768
| Sync across devices ||||
6869
| Encrypted sync ||||
6970
| Multi-team management ||||
7071
| Early access features ||||
7172

73+
## 🚀 Upgrade to MCP-Linker Pro or Team
74+
75+
Access cloud sync, unlimited clients, and more!
76+
👉 [View Tiers & Subscribe](https://mcp-linker.store/tiers)
77+
7278
## 📸 Screenshots
7379

74-
| 🔍 Server Discovery | ⚙️ Configuration |
75-
|---------------------|------------------|
76-
| ![Discover](./images/home.png) | ![Config](./images/config.png) |
80+
| Manage | 🔍 Server Discovery | ⚙️ Configuration |
81+
|---------------------|---------------------|------------------|
82+
![Manage](./images/manage.png)| ![Discover](./images/home.png) | ![Config](./images/config.png) |
7783

7884
---
7985

images/demo.gif

460 KB
Loading

images/manage.png

20.9 KB
Loading

src/components/Layout/Sidebar.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ export const Sidebar = ({ navs }: SidebarProps) => {
9292
{!isCollapsed && (
9393
<p className="font-medium">
9494
{user?.user_metadata.full_name ||
95+
user?.user_metadata.user_name ||
9596
user?.user_metadata.email.slice(0, 2) ||
9697
t("guest")}
9798
</p>

src/components/server/list/ServerCard.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,12 @@ export function ServerCard({
7777
<CardHeader className="px-2 py-2 pb-0">
7878
<div className="flex justify-between items-start">
7979
<div className="flex gap-3 items-start">
80-
<div className="p-2 bg-gray-100 rounded-full">
81-
{showGithubIcon && <Github size={18} />}
80+
<div className="bg-gray-100 rounded-full">
81+
{server.logoUrl ? (
82+
<img src={server.logoUrl} alt="icon" className="w-12 h-12 rounded-full" />
83+
) : (
84+
showGithubIcon && <Github size={24} />
85+
)}
8286
</div>
8387
<div>
8488
<CardTitle className="text-base">

src/pages/manage.tsx

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
1+
import { Dashboard } from "@/components/manage/Dashboard";
12
import { LocalTable } from "@/components/manage/LocalTable";
23
import { PersonalCloudTable } from "@/components/manage/PersonalCloudTable";
34
import { TeamCloudTable } from "@/components/manage/team/TeamCloudTable";
45
import { TeamLocalTable } from "@/components/manage/team/TeamLocalTable";
56
import { TeamSelector } from "@/components/manage/team/TeamSelector";
7+
import { ServerTemplateDialog } from "@/components/server";
68
import { ConfigFileSelector } from "@/components/settings/ConfigFileSelector";
7-
import { Dashboard } from "@/components/manage/Dashboard";
89
import { Button } from "@/components/ui/button";
910
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
1011
import { useAuth } from "@/hooks/useAuth";
1112
import { useTabStore } from "@/stores/tabStore";
1213
import { useTeamStore } from "@/stores/team";
1314
import { getEncryptionKey } from "@/utils/encryption";
14-
import { Cloud } from "lucide-react";
15+
import { Cloud, RefreshCcw } from "lucide-react";
1516
import { useEffect, useState } from "react";
17+
import { useTranslation } from "react-i18next";
1618
import { useNavigate } from "react-router";
1719

1820
export default function McpManage() {
@@ -26,6 +28,8 @@ export default function McpManage() {
2628
} = useTabStore();
2729
const { isAuthenticated } = useAuth();
2830
const { selectedTeamId } = useTeamStore();
31+
const { t } = useTranslation();
32+
const [isDialogOpen, setIsDialogOpen] = useState(false);
2933
const [encryptionKey, setEncryptionKey] = useState<string | null>(null);
3034
const [personalStats, setPersonalStats] = useState({
3135
total: 0,
@@ -45,6 +49,10 @@ export default function McpManage() {
4549
fetchKey();
4650
}, []);
4751

52+
const handleAddServer = () => {
53+
setIsDialogOpen(true);
54+
};
55+
4856
return (
4957
<div className="p-4 bg-background text-foreground">
5058
<Tabs
@@ -54,15 +62,26 @@ export default function McpManage() {
5462
>
5563
<div className="flex items-center justify-between mb-4">
5664
<h1 className="text-2xl font-bold">MCP Server Management</h1>
57-
<TabsList className="grid grid-cols-2 gap-2 bg-secondary">
58-
<TabsTrigger value="personal">Personal</TabsTrigger>
59-
<TabsTrigger value="team">Team</TabsTrigger>
60-
</TabsList>
65+
<span className="flex items-center gap-2">
66+
<Button
67+
className="flex"
68+
onClick={() => {
69+
navigate(0);
70+
}}
71+
>
72+
<RefreshCcw /> Refresh
73+
</Button>
74+
<Button onClick={handleAddServer}>{t("addCustomServer")}</Button>
75+
<TabsList className="grid grid-cols-2 gap-2 bg-secondary">
76+
<TabsTrigger value="personal">Personal</TabsTrigger>
77+
<TabsTrigger value="team">Team</TabsTrigger>
78+
</TabsList>
79+
</span>
6180
</div>
62-
81+
6382
{/* Dashboard */}
6483
<Dashboard personalStats={personalStats} teamStats={teamStats} />
65-
84+
6685
<div className="flex-1 min-h-0">
6786
{/* personal */}
6887
<TabsContent value="personal" className="flex-1 min-h-0">
@@ -147,6 +166,12 @@ export default function McpManage() {
147166
</TabsContent>
148167
</div>
149168
</Tabs>
169+
170+
<ServerTemplateDialog
171+
isOpen={isDialogOpen}
172+
setIsDialogOpen={setIsDialogOpen}
173+
isSell={false}
174+
/>
150175
</div>
151176
);
152177
}

src/types/ServerType.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export type ServerType = {
22
id: string;
33
name: string;
44
developer?: string;
5-
icon_url?: string;
5+
logoUrl?: string;
66
description: string;
77
category?: string;
88
source: string;
@@ -12,4 +12,5 @@ export type ServerType = {
1212
rating: number;
1313
views: number;
1414
isFavorited: boolean;
15+
tags?: string[]
1516
};

0 commit comments

Comments
 (0)