| |
| const DEFAULT_PLUGINS = [ |
| { |
| name: "exa", |
| title: "Exa", |
| description: "Real-time web search and code documentation", |
| url: "https://mcp.exa.ai/mcp", |
| transport: "http", |
| oauth: false, |
| toolNames: ["web_search_exa", "web_fetch_exa"], |
| }, |
| { |
| name: "tavily", |
| title: "Tavily", |
| description: "Real-time web search optimized for LLM agents", |
| url: "https://mcp.tavily.com/mcp", |
| transport: "http", |
| oauth: true, |
| toolNames: ["tavily_search", "tavily_extract", "tavily_crawl", "tavily_map"], |
| }, |
| ]; |
|
|
| |
| const LOCAL_STDIO_PLUGINS = [ |
| { |
| name: "browsermcp", |
| title: "Browser MCP", |
| description: "Control your running Chrome (requires Chrome extension)", |
| extensionUrl: "https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc", |
| command: "npx", |
| args: ["-y", "@browsermcp/mcp@latest"], |
| toolNames: ["browser_navigate", "browser_snapshot", "browser_click", "browser_type", "browser_screenshot", "browser_get_console_logs", "browser_wait", "browser_press_key", "browser_go_back", "browser_go_forward"], |
| }, |
| ]; |
|
|
| function buildManagedMcpServers(plugins) { |
| const list = Array.isArray(plugins) ? plugins : []; |
| const out = []; |
| const seen = new Set(); |
| for (const p of list) { |
| if (!p?.name || !p?.url || seen.has(p.name)) continue; |
| seen.add(p.name); |
| const entry = { |
| name: p.name, |
| url: p.url, |
| transport: p.transport || (/\/sse(\b|\/)/i.test(p.url) ? "sse" : "http"), |
| }; |
| if (p.oauth) entry.oauth = true; |
| if (Array.isArray(p.toolNames) && p.toolNames.length > 0) { |
| |
| |
| const prefix = `${p.name}-`; |
| const bare = new Set(); |
| for (const raw of p.toolNames) { |
| if (typeof raw !== "string" || !raw) continue; |
| let t = raw; |
| while (t.startsWith(prefix)) t = t.slice(prefix.length); |
| bare.add(t); |
| } |
| const policy = {}; |
| for (const t of bare) { |
| policy[t] = "allow"; |
| policy[`${prefix}${t}`] = "allow"; |
| } |
| entry.toolPolicy = policy; |
| } |
| out.push(entry); |
| } |
| return out; |
| } |
|
|
| module.exports = { DEFAULT_PLUGINS, LOCAL_STDIO_PLUGINS, buildManagedMcpServers }; |
|
|