-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathcompatible-clients.ts
More file actions
154 lines (147 loc) · 4.44 KB
/
Copy pathcompatible-clients.ts
File metadata and controls
154 lines (147 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
export const mcpTransports = [
"stdio",
"streamable-http",
"sse",
] as const;
export type McpTransport = (typeof mcpTransports)[number];
type McpSupport = {
transports: readonly [McpTransport, ...McpTransport[]];
};
export type CompatibleClient = {
name: string;
description: string;
homepageUrl: string;
instructionsUrl?: string;
sourceUrl?: string;
logo?: {
lightSrc: string;
darkSrc?: string;
alt?: string;
scale?: number;
};
supports: {
skills?: true;
mcp?: McpSupport;
};
};
export const compatibleClients: readonly CompatibleClient[] = [
{
name: "VS Code",
description:
"Visual Studio Code combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle.",
homepageUrl: "https://code.visualstudio.com/",
instructionsUrl:
"https://code.visualstudio.com/docs/agent-customization/agent-plugins",
sourceUrl: "https://github.com/microsoft/vscode",
logo: {
lightSrc: "/images/logos/vscode/light.svg",
darkSrc: "/images/logos/vscode/dark.svg",
},
supports: {
skills: true,
mcp: {
transports: ["stdio", "streamable-http", "sse"],
},
},
},
{
name: "Cursor",
description:
"Cursor is an AI editor and coding agent. Use it to understand your codebase, plan and build features, fix bugs, review changes, and work with the tools you already use.",
homepageUrl: "https://cursor.com/",
instructionsUrl: "https://cursor.com/docs/plugins",
logo: {
lightSrc: "/images/logos/cursor/light.svg",
darkSrc: "/images/logos/cursor/dark.svg",
},
supports: {
skills: true,
mcp: {
transports: ["stdio", "streamable-http", "sse"],
},
},
},
{
name: "GitHub Copilot",
description:
"GitHub Copilot is an AI coding assistant that helps developers build, understand, and ship software across editors, terminals, GitHub, and its desktop app.",
homepageUrl: "https://github.com/features/copilot",
instructionsUrl:
"https://docs.github.com/en/copilot/concepts/agents/about-plugins",
logo: {
lightSrc: "/images/logos/github/light.svg",
darkSrc: "/images/logos/github/dark.svg",
},
supports: {
skills: true,
mcp: {
transports: ["stdio", "streamable-http", "sse"],
},
},
},
{
name: "ChatGPT & Codex",
description:
"ChatGPT brings together agents for different kinds of work, including Codex for software development and ChatGPT Work for broader work. Use ChatGPT across desktop, web, and mobile, with Codex also available in your editor and terminal.",
homepageUrl: "https://chatgpt.com/codex/",
instructionsUrl: "https://developers.openai.com/plugins",
sourceUrl: "https://github.com/openai/codex",
logo: {
lightSrc: "/images/logos/chatgpt/light.svg",
darkSrc: "/images/logos/chatgpt/dark.svg",
alt: "ChatGPT",
},
supports: {
skills: true,
mcp: {
transports: ["stdio", "streamable-http"],
},
},
},
{
name: "Kiro",
description:
"Kiro helps you do your best work by bringing structure to AI coding with spec-driven development.",
homepageUrl: "https://kiro.dev/",
instructionsUrl: "https://kiro.dev/docs/powers/",
logo: {
lightSrc: "/images/logos/kiro/light.svg",
darkSrc: "/images/logos/kiro/dark.svg",
},
supports: {
skills: true,
mcp: {
transports: ["stdio", "streamable-http", "sse"],
},
},
},
];
const markdownMcpTransportLabels: Record<McpTransport, string> = {
stdio: "stdio",
"streamable-http": "Streamable HTTP",
sse: "legacy SSE",
};
export const renderCompatibleClientsMarkdown = (): string =>
compatibleClients
.map((client) => {
const lines = [
`## [${client.name}](${client.homepageUrl})`,
"",
client.description,
"",
client.supports.skills ? "- Agent Skills" : null,
client.supports.mcp
? `- MCP: ${client.supports.mcp.transports
.map((transport) => markdownMcpTransportLabels[transport])
.join(", ")}`
: null,
client.instructionsUrl
? `- [Setup instructions](${client.instructionsUrl})`
: null,
client.sourceUrl ? `- [Source code](${client.sourceUrl})` : null,
];
return lines
.filter((line): line is string => line !== null)
.join("\n");
})
.join("\n\n");