Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.

Commit 22d845c

Browse files
authored
Remove the MCP marketplace (#12326)
* Remove the MCP marketplace * Remove unused URL utility
1 parent ff16c9c commit 22d845c

171 files changed

Lines changed: 31 additions & 10091 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PRIVACY.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ Roo Code respects your privacy and is committed to transparency about how we han
1111
- **Prompts & AI Requests**: When you use AI-powered features, your prompts and relevant project context are sent to your chosen AI model provider (e.g., OpenAI, Anthropic, OpenRouter) to generate responses. We do not store or process this data. These AI providers have their own privacy policies and may store data per their terms of service. If you choose Roo Code Cloud as the provider (proxy mode), prompts may transit Roo Code servers only to forward them to the upstream model and are not stored.
1212
- **API Keys & Credentials**: If you enter an API key (e.g., to connect an AI model), it is stored locally on your device and never sent to us or any third party, except the provider you have chosen.
1313
- **Telemetry (Usage Data)**: We collect anonymous feature usage and error data to help us improve Roo Code. This telemetry is powered by PostHog and includes your VS Code machine ID, feature usage patterns, and exception reports. This telemetry does **not** collect personally identifiable information, your code, or AI prompts. You can opt out of this telemetry at any time through the settings.
14-
- **Marketplace Requests**: When you browse or search the Marketplace for Model Configuration Profiles (MCPs) or Custom Modes, Roo Code makes a secure API call to Roo Code's backend servers to retrieve listing information. These requests send only the query parameters (e.g., extension version, search term) necessary to fulfill the request and do not include your code, prompts, or personally identifiable information.
1514

1615
### **How We Use Your Data (If Collected)**
1716

apps/web-roo-code/src/components/homepage/features.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export const features: Feature[] = [
2626
icon: Users2,
2727
title: "Specialized modes",
2828
description:
29-
"Planning, Architecture, Debugging and beyond: Roo's modes stay on-task and deliver. They even know when to hand off work to other modes. Create your own or download from the marketplace.",
29+
"Planning, Architecture, Debugging and beyond: Roo's modes stay on-task and deliver. They even know when to hand off work to other modes. Create your own modes for your workflow.",
3030
},
3131
{
3232
icon: ReplaceAll,

packages/types/src/__tests__/cloud.test.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,6 @@ describe("organizationSettingsSchema with features", () => {
9494
},
9595
},
9696
features: {},
97-
hiddenMcps: ["test-mcp"],
98-
hideMarketplaceMcps: true,
99-
mcps: [],
10097
providerProfiles: {},
10198
}
10299
const result = organizationSettingsSchema.safeParse(input)

packages/types/src/cloud.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { RooCodeEventName } from "./events.js"
66
import { TaskStatus, taskMetadataSchema } from "./task.js"
77
import { globalSettingsSchema } from "./global-settings.js"
88
import { providerSettingsWithIdSchema } from "./provider-settings.js"
9-
import { mcpMarketplaceItemSchema } from "./marketplace.js"
109
import { clineMessageSchema, queuedMessageSchema, tokenUsageSchema } from "./message.js"
1110

1211
const extensionAppPropertiesSchema = z.object({
@@ -170,9 +169,6 @@ export const organizationSettingsSchema = z.object({
170169
defaultSettings: organizationDefaultSettingsSchema,
171170
allowList: organizationAllowListSchema,
172171
features: organizationFeaturesSchema.optional(),
173-
hiddenMcps: z.array(z.string()).optional(),
174-
hideMarketplaceMcps: z.boolean().optional(),
175-
mcps: z.array(mcpMarketplaceItemSchema).optional(),
176172
providerProfiles: z.record(z.string(), providerSettingsWithIdSchema).optional(),
177173
})
178174

packages/types/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export * from "./global-settings.js"
1414
export * from "./history.js"
1515
export * from "./image-generation.js"
1616
export * from "./ipc.js"
17-
export * from "./marketplace.js"
1817
export * from "./mcp.js"
1918
export * from "./message.js"
2019
export * from "./mode.js"

packages/types/src/marketplace.ts

Lines changed: 0 additions & 93 deletions
This file was deleted.

packages/types/src/vscode-extension-host.ts

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@ import type { HistoryItem } from "./history.js"
66
import type { ModeConfig, PromptComponent } from "./mode.js"
77
import type { Experiments } from "./experiment.js"
88
import type { ClineMessage, QueuedMessage } from "./message.js"
9-
import {
10-
type MarketplaceItem,
11-
type MarketplaceInstalledMetadata,
12-
type InstallMarketplaceItemOptions,
13-
marketplaceItemSchema,
14-
} from "./marketplace.js"
159
import type { TodoItem } from "./todo.js"
1610
import type { CloudUserInfo, CloudOrganizationMembership, OrganizationAllowList, ShareVisibility } from "./cloud.js"
1711
import type { SerializedCustomToolDefinition } from "./custom-tool.js"
@@ -75,9 +69,6 @@ export interface ExtensionMessage {
7569
| "indexingStatusUpdate"
7670
| "indexCleared"
7771
| "codebaseIndexConfig"
78-
| "marketplaceInstallResult"
79-
| "marketplaceRemoveResult"
80-
| "marketplaceData"
8172
| "shareTaskSuccess"
8273
| "codeIndexSettingsSaved"
8374
| "codeIndexSecretStatus"
@@ -115,7 +106,6 @@ export interface ExtensionMessage {
115106
| "chatButtonClicked"
116107
| "settingsButtonClicked"
117108
| "historyButtonClicked"
118-
| "marketplaceButtonClicked"
119109
| "cloudButtonClicked"
120110
| "didBecomeVisible"
121111
| "focusInput"
@@ -159,13 +149,9 @@ export interface ExtensionMessage {
159149
setting?: string
160150
value?: any // eslint-disable-line @typescript-eslint/no-explicit-any
161151
hasContent?: boolean
162-
items?: MarketplaceItem[]
163152
userInfo?: CloudUserInfo
164153
organizationAllowList?: OrganizationAllowList
165154
tab?: string
166-
marketplaceItems?: MarketplaceItem[]
167-
organizationMcps?: MarketplaceItem[]
168-
marketplaceInstalledMetadata?: MarketplaceInstalledMetadata
169155
errors?: string[]
170156
visibility?: ShareVisibility
171157
rulesFolderPath?: string
@@ -355,9 +341,6 @@ export type ExtensionState = Pick<
355341

356342
autoCondenseContext: boolean
357343
autoCondenseContextPercent: number
358-
marketplaceItems?: MarketplaceItem[]
359-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
360-
marketplaceInstalledMetadata?: { project: Record<string, any>; global: Record<string, any> }
361344
profileThresholds: Record<string, number>
362345
hasOpenedModeSelector: boolean
363346
openRouterImageApiKey?: string
@@ -512,14 +495,6 @@ export interface WebviewMessage {
512495
| "setAutoEnableDefault"
513496
| "focusPanelRequest"
514497
| "openExternal"
515-
| "filterMarketplaceItems"
516-
| "marketplaceButtonClicked"
517-
| "installMarketplaceItem"
518-
| "installMarketplaceItemWithParameters"
519-
| "cancelMarketplaceInstall"
520-
| "removeInstalledMarketplaceItem"
521-
| "marketplaceInstallResult"
522-
| "fetchMarketplaceData"
523498
| "switchTab"
524499
| "shareTaskSuccess"
525500
| "exportMode"
@@ -576,7 +551,7 @@ export interface WebviewMessage {
576551
text?: string
577552
taskId?: string
578553
editedMessageContent?: string
579-
tab?: "settings" | "history" | "mcp" | "modes" | "chat" | "marketplace" | "cloud"
554+
tab?: "settings" | "history" | "mcp" | "modes" | "chat" | "cloud"
580555
disabled?: boolean
581556
context?: string
582557
dataUri?: string
@@ -628,8 +603,6 @@ export interface WebviewMessage {
628603
// eslint-disable-next-line @typescript-eslint/no-explicit-any
629604
settings?: any
630605
url?: string // For openExternal
631-
mpItem?: MarketplaceItem
632-
mpInstallOptions?: InstallMarketplaceItemOptions
633606
// eslint-disable-next-line @typescript-eslint/no-explicit-any
634607
config?: Record<string, any> // Add config to the payload
635608
visibility?: ShareVisibility // For share visibility
@@ -715,21 +688,11 @@ export interface IndexClearedPayload {
715688
error?: string
716689
}
717690

718-
export const installMarketplaceItemWithParametersPayloadSchema = z.object({
719-
item: marketplaceItemSchema,
720-
parameters: z.record(z.string(), z.any()),
721-
})
722-
723-
export type InstallMarketplaceItemWithParametersPayload = z.infer<
724-
typeof installMarketplaceItemWithParametersPayloadSchema
725-
>
726-
727691
export type WebViewMessagePayload =
728692
| CheckpointDiffPayload
729693
| CheckpointRestorePayload
730694
| IndexingStatusPayload
731695
| IndexClearedPayload
732-
| InstallMarketplaceItemWithParametersPayload
733696
| UpdateTodoListPayload
734697
| EditQueuedMessagePayload
735698

packages/types/src/vscode.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export const commandIds = [
3131

3232
"plusButtonClicked",
3333
"historyButtonClicked",
34-
"marketplaceButtonClicked",
3534
"popoutButtonClicked",
3635
"cloudButtonClicked",
3736
"settingsButtonClicked",

src/activate/registerCommands.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,6 @@ const getCommandsMap = ({ context, outputChannel, provider }: RegisterCommandOpt
117117

118118
visibleProvider.postMessageToWebview({ type: "action", action: "historyButtonClicked" })
119119
},
120-
marketplaceButtonClicked: () => {
121-
const visibleProvider = getVisibleProviderOrLog(outputChannel)
122-
if (!visibleProvider) return
123-
visibleProvider.postMessageToWebview({ type: "action", action: "marketplaceButtonClicked" })
124-
},
125120
newTask: handleNewTask,
126121
setCustomStoragePath: async () => {
127122
const { promptForCustomStoragePath } = await import("../utils/storage")

src/core/config/CustomModesManager.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ export class CustomModesManager {
508508
await this.onUpdate()
509509
}
510510

511-
public async deleteCustomMode(slug: string, fromMarketplace = false): Promise<void> {
511+
public async deleteCustomMode(slug: string): Promise<void> {
512512
try {
513513
const settingsPath = await this.getCustomModesFilePath()
514514
const roomodesPath = await this.getWorkspaceRoomodes()
@@ -540,7 +540,7 @@ export class CustomModesManager {
540540

541541
// Delete associated rules folder
542542
if (modeToDelete) {
543-
await this.deleteRulesFolder(slug, modeToDelete, fromMarketplace)
543+
await this.deleteRulesFolder(slug, modeToDelete)
544544
}
545545

546546
// Clear cache when modes are deleted
@@ -558,7 +558,7 @@ export class CustomModesManager {
558558
* @param slug - The mode slug
559559
* @param mode - The mode configuration to determine the scope
560560
*/
561-
private async deleteRulesFolder(slug: string, mode: ModeConfig, fromMarketplace = false): Promise<void> {
561+
private async deleteRulesFolder(slug: string, mode: ModeConfig): Promise<void> {
562562
try {
563563
// Determine the scope based on source (project or global)
564564
const scope = mode.source || "global"
@@ -587,10 +587,9 @@ export class CustomModesManager {
587587
} catch (error) {
588588
logger.error(`Failed to delete rules folder for mode ${slug}: ${error}`)
589589
// Notify the user about the failure
590-
const messageKey = fromMarketplace
591-
? "common:marketplace.mode.rulesCleanupFailed"
592-
: "common:customModes.errors.rulesCleanupFailed"
593-
vscode.window.showWarningMessage(t(messageKey, { rulesFolderPath }))
590+
vscode.window.showWarningMessage(
591+
t("common:customModes.errors.rulesCleanupFailed", { rulesFolderPath }),
592+
)
594593
// Continue even if folder deletion fails
595594
}
596595
}

0 commit comments

Comments
 (0)