Skip to content

Conversation

@buzz-code
Copy link

@buzz-code buzz-code commented Mar 17, 2025

Context

Added MCP marketplace, inspired from cline's pr (cline/cline#1841)

Implementation

Screenshots

before after
Screenshot 2025-03-17 at 17 28 14 Screenshot 2025-03-17 at 17 28 42

How to Test

Get in Touch


Important

Adds MCP Marketplace to ClineProvider with UI components for browsing and managing MCP servers.

  • Behavior:
    • Adds MCP Marketplace functionality to ClineProvider for fetching, downloading, and displaying MCP servers.
    • Handles errors and updates UI with mcpMarketplaceCatalog and mcpDownloadDetails messages.
  • UI Components:
    • Adds McpMarketplaceView, McpMarketplaceCard, and McpSubmitCard components for marketplace UI.
    • Implements search, filter, and sort features in McpMarketplaceView.
    • Adds tabs for installed servers and marketplace in McpView.
  • State Management:
    • Updates GlobalStateKey with mcpMarketplaceCatalog.
    • Adds new message types in ExtensionMessage and WebviewMessage for marketplace actions.

This description was created by Ellipsis for c9ddca0. It will automatically update as commits are pushed.

@changeset-bot
Copy link

changeset-bot bot commented Mar 17, 2025

⚠️ No Changeset found

Latest commit: f73d3c4

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@dosubot dosubot bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Mar 17, 2025
@ellipsis-dev
Copy link
Contributor

ellipsis-dev bot commented Mar 17, 2025

The pull request is quite large, with 1079 lines added across 11 files. While the changes primarily focus on integrating MCP marketplace functionality, there are several distinct components and updates included:

  1. Core Integration: Changes in ClineProvider.ts and globalState.ts focus on integrating MCP marketplace functionality and managing global state keys.
  2. Type Definitions: Updates in roo-code.d.ts, ExtensionMessage.ts, and WebviewMessage.ts extend type definitions to support MCP marketplace features.
  3. Shared Interfaces: The mcp.ts file introduces new interfaces for marketplace items and catalogs.
  4. UI Components: New React components like McpView.tsx, McpMarketplaceCard.tsx, McpMarketplaceView.tsx, and McpSubmitCard.tsx are added for the marketplace UI.
  5. Localization: Updates in mcp.json for localization strings related to the marketplace.

Given the size and scope of the changes, it might be beneficial to split the pull request into smaller, more focused PRs. For example:

  • One PR for core integration and type definition updates.
  • Another PR for UI components and localization updates.

This would make it easier to review and test each part independently. Please consider splitting the changes accordingly.

@dosubot dosubot bot added the enhancement New feature or request label Mar 17, 2025
{/* Logo */}
{item.logoUrl && (
<img
src={item.logoUrl}

Check failure

Code scanning / CodeQL

Client-side cross-site scripting High

Cross-site scripting vulnerability due to
user-provided value
.
{/* Logo */}
{item.logoUrl && (
<img
src={item.logoUrl}

Check warning

Code scanning / CodeQL

Client-side URL redirect Medium

Untrusted URL redirection depends on a
user-provided value
.
rowGap: 0, // Add this to remove vertical gap
}}>
<a
href={item.githubUrl}

Check failure

Code scanning / CodeQL

Client-side cross-site scripting High

Cross-site scripting vulnerability due to
user-provided value
.
rowGap: 0, // Add this to remove vertical gap
}}>
<a
href={item.githubUrl}

Check warning

Code scanning / CodeQL

Client-side URL redirect Medium

Untrusted URL redirection depends on a
user-provided value
.

private async fetchMcpMarketplaceFromApi(silent: boolean = false): Promise<McpMarketplaceCatalog | undefined> {
try {
const response = await axios.get("https://api.cline.bot/v1/mcp/marketplace", {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid hardcoding external API URLs (e.g. https://api.cline.bot/v1/mcp/marketplace). Consider placing endpoints in config or environment variables to ease deployment and testing. This follows our secure configuration best practices.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea, let me look into this.

}

private async openMcpMarketplaceServerDetails(mcpId: string) {
const response = await fetch(`https://api.cline.bot/v1/mcp/marketplace/item?mcpId=${mcpId}`)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding error handling for the fetch call in openMcpMarketplaceServerDetails so that network failures or unexpected responses don’t lead to unhandled exceptions.

@samhvw8
Copy link
Contributor

samhvw8 commented Mar 17, 2025

Can we move it into another class not the same with cline provider ?

@hannesrudolph hannesrudolph moved this from New to PR [Pre Approval Review] in Roo Code Roadmap Mar 17, 2025
@pashpashpash
Copy link

hey guys @mrubens you're welcome to use our marketplace api (:

@buzz-code
Copy link
Author

@samhvw8 I've moved the functions out of cline provider file

@samhvw8
Copy link
Contributor

samhvw8 commented Mar 20, 2025

@samhvw8 I've moved the functions out of cline provider file

@buzz-code cool, btw do you have discord or smt else ? can we chat via discord ?

Comment on lines +4 to +21
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
gap: "24px",
padding: "32px 20px",
marginTop: "16px",
}}>
{/* Logo */}
<img
src="https://storage.googleapis.com/cline_public_images/cline.png"
alt="Cline bot logo"
style={{
width: 64,
height: 64,
borderRadius: 8,
}}
/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we have integrated tailwind and shadcn
https://ui.shadcn.com/

it will be cool if you you can leverage it 💪,

Copy link
Collaborator

@mrubens mrubens left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generous offer aside, we shouldn't be hitting api.cline.bot. We should discuss the best way to support this with an API.

@jb510
Copy link

jb510 commented Apr 1, 2025

Generous offer aside, we shouldn't be hitting api.cline.bot. We should discuss the best way to support this with an API.

Why not both ¯_(ツ)_/¯.

Add the ability to add multiple MCP marketplace endpoints. Roo's and Cline's and ????'s.

@Iweisc
Copy link

Iweisc commented Apr 15, 2025

Hope this gets merged! ;) would love to see this!

@buzz-code
Copy link
Author

Closing because I don't have the time for it now

@buzz-code buzz-code closed this Apr 21, 2025
@github-project-automation github-project-automation bot moved this from PR [Pre Approval Review] to Done in Roo Code Roadmap Apr 21, 2025
@Iweisc
Copy link

Iweisc commented Apr 23, 2025

I am genuinely sad 😢 hope this gets implemented later

@samhvw8
Copy link
Contributor

samhvw8 commented Apr 23, 2025

@Iweisc we already implemented new version of Marketplace in #2772

that can share mcp, custom-mode .... etc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants