Skip to main content
Glama

GitMCP

inspection.spec.ts5.11 kB
import { test, expect } from "@playwright/test"; // Define the base target dev server URL (the one the Inspector connects to) const targetServerBaseUrl = "http://localhost:5173"; // Base URL without path or /sse // Define test cases with specific paths and expectations const testCases = [ { path: "mrdoob/three.js", // Expectations removed as the specific fetch test will be skipped for this path }, { path: "remix-run/react-router", expectedContentSnippet: "# React Router" }, { path: "answerdotai/fasthtml", expectedContentSnippet: "# FastHTML" } ]; test.describe("Dedicated repo servers", () => { test.describe("SSE", () => { // Loop through the defined test cases for (const testCase of testCases) { const { path, expectedContentSnippet } = testCase; const targetServerUrl = `${targetServerBaseUrl}/${path}`; // Construct full URL for connection // Test to verify listing tools (this should still run for all) test(`should list tools for ${path}`, async ({ page }) => { await page.goto("/"); await page.getByRole("combobox", { name: "Transport Type" }).click(); await page.getByRole("option", { name: "SSE" }).click(); await page.getByRole("textbox", { name: "URL" }).fill(targetServerUrl); await page.getByRole("button", { name: "Connect" }).click(); await expect(page.getByRole("button", { name: "List Tools" })).toBeVisible({ timeout: 5000 }); await page.getByRole("button", { name: "List Tools" }).click(); await expect(page.getByText("fetch_generic_url_content")).toBeVisible({ timeout: 10000, }); if (path === 'mrdoob/three.js') { // await expect(page.getByText('fetch_threejs_documentation')).toBeVisible({ timeout: 5000 }); // Check for the specific search tool for three.js await expect(page.getByText('search_threejs_documentation')).toBeVisible({ timeout: 5000 }); } else { // Check for generic fetch and search tools await expect(page.getByText(/^fetch_.*_documentation$/)).toBeVisible({ timeout: 5000 }); await expect(page.getByText(/^search_.*_documentation$/)).toBeVisible({ timeout: 5000 }); } }); // Test to verify running the generic fetch tool (this should still run for all) test(`should fetch documentation using generic tool for ${path}`, async ({ page }) => { await page.goto("/"); await page.getByRole("combobox", { name: "Transport Type" }).click(); await page.getByRole("option", { name: "SSE" }).click(); await page.getByRole("textbox", { name: "URL" }).fill(targetServerUrl); await page.getByRole("button", { name: "Connect" }).click(); await expect(page.getByRole("button", { name: "List Tools" })).toBeVisible({ timeout: 5000 }); await page.getByRole("button", { name: "List Tools" }).click(); await expect(page.getByText("fetch_generic_url_content")).toBeVisible({ timeout: 5000 }); await page.getByText('fetch_generic_url_content').click(); await page.getByRole('textbox', { name: 'url', exact: true }).fill('https://www.makeareadme.com/'); await page.getByRole('button', { name: 'Run Tool' }).click(); await expect(page.getByText('Success')).toBeVisible({ timeout: 10000 }); await expect(page.getByText('# Make a README')).toBeVisible(); }); // Test to verify running the specific fetch_X_documentation tool // Conditionally skip this test for mrdoob/three.js const shouldSkipFetchTest = path === 'mrdoob/three.js'; test(`should run fetch_X_documentation for ${path}`, async ({ page }) => { test.skip(shouldSkipFetchTest, 'Skipping fetch_X_documentation test for mrdoob/three.js as it uses a different tool name.'); await page.goto("/"); await page.getByRole("combobox", { name: "Transport Type" }).click(); await page.getByRole("option", { name: "SSE" }).click(); await page.getByRole("textbox", { name: "URL" }).fill(targetServerUrl); await page.getByRole("button", { name: "Connect" }).click(); await expect(page.getByRole("button", { name: "List Tools" })).toBeVisible({ timeout: 5000 }); await page.getByRole("button", { name: "List Tools" }).click(); const fetchToolButton = page.getByText(/^fetch_.*_documentation$/); await expect(fetchToolButton).toBeVisible({ timeout: 5000 }); await fetchToolButton.click(); await page.getByRole('button', { name: 'Run Tool' }).click(); await expect(page.getByText('Success')).toBeVisible({ timeout: 15000 }); // Use the expectedContentSnippet from the test case // Ensure expectedContentSnippet is defined before using it if (expectedContentSnippet) { await expect(page.getByText(expectedContentSnippet)).toBeVisible(); } else { console.warn(`No expectedContentSnippet defined for path: ${path}`); } }); } }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/idosal/git-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server