From 4880c498893ea7e9748a140974997da507ca2e8b Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 10:21:46 -0400 Subject: [PATCH 1/5] Docs: Add Kiwi Flight Search Extension Tutorial --- documentation/docs/mcp/kiwi-flight-search.md | 111 ++++++ documentation/static/servers.json | 366 ++++++++++--------- 2 files changed, 300 insertions(+), 177 deletions(-) create mode 100644 documentation/docs/mcp/kiwi-flight-search.md diff --git a/documentation/docs/mcp/kiwi-flight-search.md b/documentation/docs/mcp/kiwi-flight-search.md new file mode 100644 index 000000000000..a2acddfa1c56 --- /dev/null +++ b/documentation/docs/mcp/kiwi-flight-search.md @@ -0,0 +1,111 @@ +--- +title: Kiwi Flight Search Extension +description: Add Kiwi Flight Search MCP Server as a Goose Extension +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import YouTubeShortEmbed from '@site/src/components/YouTubeShortEmbed'; +import CLIExtensionInstructions from '@site/src/components/CLIExtensionInstructions'; +import GooseDesktopInstaller from '@site/src/components/GooseDesktopInstaller'; +import GooseBuiltinInstaller from '@site/src/components/GooseBuiltinInstaller'; +import { PanelLeft } from 'lucide-react'; + + +This tutorial covers how to add the [Kiwi Flight Search MCP Server](https://mcp.kiwi.com) as a Goose extension to enable flight search, price comparison, and booking functionality directly from your AI assistant. + +:::tip TLDR + + + Use `Add custom extension` in Settings → Extensions to add a `Streamable HTTP` extension type with: + + + Use `goose configure` to add a `Remote Extension (Streaming HTTP)` extension type with: + + + + **Endpoint URL** + ``` + https://mcp.kiwi.com + ``` +::: + +## Configuration + + + + 1. Click the button in the top-left to open the sidebar + 2. Click `Extensions` + 3. Click `Add custom extension` + 4. On the `Add custom extension` modal, enter the following: + - **Extension Name**: Kiwi Flight Search + - **Type**: Streamable HTTP + - **Endpoint**: `https://mcp.kiwi.com` + 5. Click `Add Extension` to save the extension + 6. Navigate to the chat + + + + + + + + +## Example Usage + +Let's search for flights between any two locations on specific dates. You can search by city names or airport codes, and the extension will find available flights with pricing, duration, and booking links. + +### Goose Prompt + +``` +Can you help me book a flight from Paris to Rome for August 9? +``` + +### Goose Output + +``` +I'd be happy to help you search for flights from Paris to Rome for August 9th! Let me search for available options for you. + +## ✈️ Flight Options: Paris → Rome (August 9, 2025) + +### 💰 **Best Prices** (Cheapest Options) + +| Route | Departure → Arrival | Class | Price | Book | +|-------|-------------------|-------|-------|------| +| Paris ORY → Rome FCO | 09/08 22:10 → 00:10+1 (2h 0m) | Economy | €138 | [Book Now](https://on.kiwi.com/ZyIJ2r) | +| Paris ORY → Rome FCO | 09/08 09:05 → 11:10 (2h 5m) | Economy | €154 | [Book Now](https://on.kiwi.com/31IDMW) | +| Paris ORY → Rome FCO | 09/08 06:25 → 08:25 (2h 0m) | Economy | €157 | [Book Now](https://on.kiwi.com/2dNs3f) | + +### ⚡ **Shortest Flights** (Fastest Duration) + +| Route | Departure → Arrival | Class | Price | Book | +|-------|-------------------|-------|-------|------| +| Paris ORY → Rome FCO | 09/08 06:25 → 08:25 (2h 0m) | Economy | €157 | [Book Now](https://on.kiwi.com/2dNs3f) | +| Paris ORY → Rome FCO | 09/08 22:10 → 00:10+1 (2h 0m) | Economy | €138 | [Book Now](https://on.kiwi.com/ZyIJ2r) | +| Paris CDG → Rome FCO | 09/08 21:10 → 23:10 (2h 0m) | Economy | €187 | [Book Now](https://on.kiwi.com/62jyt7) | + +### 🕐 **Other Good Options** + +| Route | Departure → Arrival | Class | Price | Book | +|-------|-------------------|-------|-------|------| +| Paris ORY → Rome FCO | 09/08 12:00 → 14:05 (2h 5m) | Economy | €164 | [Book Now](https://on.kiwi.com/m55oIC) | +| Paris ORY → Rome FCO | 09/08 21:10 → 23:10 (2h 0m) | Economy | €165 | [Book Now](https://on.kiwi.com/tkAU0T) | + +## 📋 **Summary & Recommendations** + +**🏆 Best Overall Value:** The **€138 evening flight** (ORY 22:10 → FCO 00:10+1) offers the best price with the shortest flight time, though it arrives after midnight. + +**🌅 Best Morning Option:** The **€157 early flight** (ORY 06:25 → FCO 08:25) gets you to Rome early in the day with a quick 2-hour flight. + +**⏰ Best Daytime Flight:** The **€154 mid-morning flight** (ORY 09:05 → FCO 11:10) offers great value and convenient timing. + +All direct flights are around 2 hours, departing from either Paris Orly (ORY) or Charles de Gaulle (CDG) to Rome Fiumicino (FCO). + +Have a wonderful trip to Rome! 🇮🇹 Fun fact: Rome has more fountains than any other city in the world - over 2,000 of them! Don't forget to toss a coin into the Trevi Fountain to ensure your return to the Eternal City! ⛲✨ + +``` diff --git a/documentation/static/servers.json b/documentation/static/servers.json index 99f9ad950d16..6549af049181 100644 --- a/documentation/static/servers.json +++ b/documentation/static/servers.json @@ -1,149 +1,4 @@ [ - { - "id": "developer", - "name": "Developer", - "description": "Built-in developer tools for file editing and shell command execution", - "command": "", - "link": "https://github.com/block/goose/tree/main/crates/goose-mcp/src/developer", - "installation_notes": "This is a built-in extension that comes with Goose by default. No installation required.", - "is_builtin": true, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "computercontroller", - "name": "Computer Controller", - "description": "Built-in computer controls for webscraping, file caching, and automations", - "command": "", - "link": "https://github.com/block/goose/tree/main/crates/goose-mcp/src/computercontroller", - "installation_notes": "This is a built-in extension that comes with Goose and can be enabled on the Extensions page.", - "is_builtin": true, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "memory", - "name": "Memory", - "description": "Built-in memory system for persistent context and information storage", - "command": "", - "link": "https://github.com/block/goose/tree/main/crates/goose-mcp/src/memory", - "installation_notes": "This is a built-in extension that comes with Goose and can be enabled on the Extensions page.", - "is_builtin": true, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "knowledge_graph_memory", - "name": "Knowledge Graph Memory", - "description": "Graph-based memory system for persistent knowledge storage", - "command": "npx -y @modelcontextprotocol/server-memory", - "link": "https://github.com/modelcontextprotocol/servers/tree/main/src/memory", - "installation_notes": "Install using npx package manager. Note: Default memory graph location may be hard to find where npx installs the module.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "fetch", - "name": "Fetch", - "description": "Web content fetching and processing capabilities", - "command": "uvx mcp-server-fetch", - "link": "https://github.com/modelcontextprotocol/servers/tree/main/src/fetch", - "installation_notes": "Install using uvx package manager. Note: Some sites may block access via robots.txt.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "tavily", - "name": "Tavily Web Search", - "description": "Web search capabilities powered by Tavily", - "command": "npx -y tavily-mcp", - "link": "https://github.com/tavily-ai/tavily-mcp", - "installation_notes": "Install using uvx package manager. Requires Tavily API key.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [ - { - "name": "TAVILY_API_KEY", - "description": "API key for Tavily web search service", - "required": true - } - ] - }, - { - "id": "figma", - "name": "Figma", - "description": "Figma design tool integration", - "command": "npx -y @hapins/figma-mcp", - "link": "https://github.com/hapins/figma-mcp", - "installation_notes": "Install using npx package manager. Requires Figma access token from user settings.", - "is_builtin": false, - "endorsed": false, - "environmentVariables": [ - { - "name": "FIGMA_ACCESS_TOKEN", - "description": "Access token from Figma user settings", - "required": true - } - ] - }, - { - "id": "pdf_read", - "name": "PDF Reader", - "description": "Read large and complex PDF documents", - "command": "uvx mcp-read-pdf", - "link": "https://github.com/michaelneale/mcp-read-pdf", - "installation_notes": "Install using uvx package manager.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "vscode", - "name": "VSCode", - "description": "Provides a VSCode IDE integration for development workflows", - "command": "npx vscode-mcp-server", - "link": "https://github.com/block/vscode-mcp", - "installation_notes": "Install using npx package manager.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "speech_mcp", - "name": "Speech Interface", - "description": "Voice interaction with audio visualization for Goose - enables real-time voice interaction, audio/video transcription, text-to-speech conversion, and multi-speaker audio generation", - "command": "uvx -p 3.10.14 speech-mcp@latest", - "link": "https://github.com/Kvadratni/speech-mcp", - "installation_notes": "Install using uvx package manager. Requires PortAudio to be installed on your system for PyAudio to capture audio from your microphone.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] - }, - { - "id": "pieces", - "name": "Pieces", - "description": "Provides access to your Pieces long-term memory. You need to have Pieces installed to use this.", - "url": "http://localhost:39300/model_context_protocol/2024-11-05/sse", - "link": "https://pieces.app?utm_source=goose&utm_medium=collab&utm_campaign=mcp", - "installation_notes": "You need to install Pieces first, and have this running.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [], - "type": "remote" - }, - { - "id": "playwright", - "name": "Playwright", - "description": "Interact with web pages through structured accessibility snapshots using Playwright", - "command": "npx @playwright/mcp@latest", - "link": "https://github.com/microsoft/playwright-mcp", - "installation_notes": "Install using npx package manager.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] - }, { "id": "agentql-mcp", "name": "AgentQL", @@ -295,6 +150,28 @@ "endorsed": false, "environmentVariables": [] }, + { + "id": "computercontroller", + "name": "Computer Controller", + "description": "Built-in computer controls for webscraping, file caching, and automations", + "command": "", + "link": "https://github.com/block/goose/tree/main/crates/goose-mcp/src/computercontroller", + "installation_notes": "This is a built-in extension that comes with Goose and can be enabled on the Extensions page.", + "is_builtin": true, + "endorsed": true, + "environmentVariables": [] + }, + { + "id": "container-use", + "name": "Container Use", + "description": "Integrate container workflows with Goose using the Container-Use MCP", + "command": "npx -y mcp-remote https://container-use.com/mcp", + "link": "https://container-use.com", + "installation_notes": "Requires Node.js and Docker.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, { "id": "context7", "name": "Context7", @@ -306,6 +183,17 @@ "endorsed": true, "environmentVariables": [] }, + { + "id": "developer", + "name": "Developer", + "description": "Built-in developer tools for file editing and shell command execution", + "command": "", + "link": "https://github.com/block/goose/tree/main/crates/goose-mcp/src/developer", + "installation_notes": "This is a built-in extension that comes with Goose by default. No installation required.", + "is_builtin": true, + "endorsed": true, + "environmentVariables": [] + }, { "id": "elevenlabs-mcp", "name": "ElevenLabs", @@ -323,6 +211,34 @@ } ] }, + { + "id": "fetch", + "name": "Fetch", + "description": "Web content fetching and processing capabilities", + "command": "uvx mcp-server-fetch", + "link": "https://github.com/modelcontextprotocol/servers/tree/main/src/fetch", + "installation_notes": "Install using uvx package manager. Note: Some sites may block access via robots.txt.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, + { + "id": "figma", + "name": "Figma", + "description": "Figma design tool integration", + "command": "npx -y @hapins/figma-mcp", + "link": "https://github.com/hapins/figma-mcp", + "installation_notes": "Install using npx package manager. Requires Figma access token from user settings.", + "is_builtin": false, + "endorsed": false, + "environmentVariables": [ + { + "name": "FIGMA_ACCESS_TOKEN", + "description": "Access token from Figma user settings", + "required": true + } + ] + }, { "id": "filesystem-mcp", "name": "Filesystem", @@ -352,6 +268,16 @@ ], "type": "streamable-http" }, + { + "id": "gitmcp", + "name": "GitMCP", + "description": "Gets latest documentation for any GitHub project", + "command": "npx -y mcp-remote https://gitmcp.io/docs", + "link": "https://github.com/idosal/git-mcp", + "is_builtin": false, + "endorsed": false, + "environmentVariables": [] + }, { "id": "google-drive-mcp", "name": "Google Drive", @@ -386,6 +312,16 @@ } ] }, + { + "id": "goose-docs", + "name": "Goose Docs", + "description": "GitMCP for Goose documentation", + "command": "npx mcp-remote https://block.gitmcp.io/goose/", + "link": "https://github.com/idosal/git-mcp", + "is_builtin": false, + "endorsed": false, + "environmentVariables": [] + }, { "id": "jetbrains", "name": "JetBrains", @@ -397,6 +333,29 @@ "endorsed": true, "environmentVariables": [] }, + { + "id": "kiwi-flight-search", + "name": "Kiwi Flight Search", + "description": "Search and book flights", + "url": "https://mcp.kiwi.com", + "link": "https://mcp-install-instructions.alpic.cloud/servers/kiwi-com-flight-search", + "installation_notes": "This is a remote extension. Configure using the endpoint URL in Goose settings.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [], + "type": "streamable-http" + }, + { + "id": "knowledge_graph_memory", + "name": "Knowledge Graph Memory", + "description": "Graph-based memory system for persistent knowledge storage", + "command": "npx -y @modelcontextprotocol/server-memory", + "link": "https://github.com/modelcontextprotocol/servers/tree/main/src/memory", + "installation_notes": "Install using npx package manager. Note: Default memory graph location may be hard to find where npx installs the module.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, { "id": "mbot-mcp", "name": "MBot", @@ -408,6 +367,17 @@ "endorsed": false, "environmentVariables": [] }, + { + "id": "memory", + "name": "Memory", + "description": "Built-in memory system for persistent context and information storage", + "command": "", + "link": "https://github.com/block/goose/tree/main/crates/goose-mcp/src/memory", + "installation_notes": "This is a built-in extension that comes with Goose and can be enabled on the Extensions page.", + "is_builtin": true, + "endorsed": true, + "environmentVariables": [] + }, { "id": "mongodb", "name": "MongoDB", @@ -458,6 +428,40 @@ "endorsed": false, "environmentVariables": [] }, + { + "id": "pdf_read", + "name": "PDF Reader", + "description": "Read large and complex PDF documents", + "command": "uvx mcp-read-pdf", + "link": "https://github.com/michaelneale/mcp-read-pdf", + "installation_notes": "Install using uvx package manager.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, + { + "id": "pieces", + "name": "Pieces", + "description": "Provides access to your Pieces long-term memory. You need to have Pieces installed to use this.", + "url": "http://localhost:39300/model_context_protocol/2024-11-05/sse", + "link": "https://pieces.app?utm_source=goose&utm_medium=collab&utm_campaign=mcp", + "installation_notes": "You need to install Pieces first, and have this running.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [], + "type": "remote" + }, + { + "id": "playwright", + "name": "Playwright", + "description": "Interact with web pages through structured accessibility snapshots using Playwright", + "command": "npx @playwright/mcp@latest", + "link": "https://github.com/microsoft/playwright-mcp", + "installation_notes": "Install using npx package manager.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, { "id": "postgres-mcp", "name": "PostgreSQL", @@ -530,6 +534,17 @@ "endorsed": false, "environmentVariables": [] }, + { + "id": "speech_mcp", + "name": "Speech Interface", + "description": "Voice interaction with audio visualization for Goose - enables real-time voice interaction, audio/video transcription, text-to-speech conversion, and multi-speaker audio generation", + "command": "uvx -p 3.10.14 speech-mcp@latest", + "link": "https://github.com/Kvadratni/speech-mcp", + "installation_notes": "Install using uvx package manager. Requires PortAudio to be installed on your system for PyAudio to capture audio from your microphone.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, { "id": "square-mcp", "name": "Square", @@ -552,6 +567,23 @@ } ] }, + { + "id": "tavily", + "name": "Tavily Web Search", + "description": "Web search capabilities powered by Tavily", + "command": "npx -y tavily-mcp", + "link": "https://github.com/tavily-ai/tavily-mcp", + "installation_notes": "Install using uvx package manager. Requires Tavily API key.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [ + { + "name": "TAVILY_API_KEY", + "description": "API key for Tavily web search service", + "required": true + } + ] + }, { "id": "tutorial-mcp", "name": "Tutorial", @@ -563,6 +595,17 @@ "endorsed": false, "environmentVariables": [] }, + { + "id": "vscode", + "name": "VSCode", + "description": "Provides a VSCode IDE integration for development workflows", + "command": "npx vscode-mcp-server", + "link": "https://github.com/block/vscode-mcp", + "installation_notes": "Install using npx package manager.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] + }, { "id": "youtube-transcript-mcp", "name": "YouTube Transcript", @@ -573,36 +616,5 @@ "is_builtin": false, "endorsed": false, "environmentVariables": [] - }, - { - "id": "goose-docs", - "name": "Goose Docs", - "description": "GitMCP for Goose documentation", - "command": "npx mcp-remote https://block.gitmcp.io/goose/", - "link": "https://github.com/idosal/git-mcp", - "is_builtin": false, - "endorsed": false, - "environmentVariables": [] - }, - { - "id": "gitmcp", - "name": "GitMCP", - "description": "Gets latest documentation for any GitHub project", - "command": "npx -y mcp-remote https://gitmcp.io/docs", - "link": "https://github.com/idosal/git-mcp", - "is_builtin": false, - "endorsed": false, - "environmentVariables": [] - }, - { - "id": "container-use", - "name": "Container Use", - "description": "Integrate container workflows with Goose using the Container-Use MCP", - "command": "npx -y mcp-remote https://container-use.com/mcp", - "link": "https://container-use.com", - "installation_notes": "Requires Node.js and Docker.", - "is_builtin": false, - "endorsed": true, - "environmentVariables": [] } -] +] \ No newline at end of file From 44e010b60b5ec8c1d2795d8d06ac9bc4220d09fd Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 10:23:18 -0400 Subject: [PATCH 2/5] Put extensions in alphabetical order --- documentation/src/pages/extensions/index.tsx | 75 ++++++++++++++------ 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/documentation/src/pages/extensions/index.tsx b/documentation/src/pages/extensions/index.tsx index d96496977ab3..53348adb5f79 100644 --- a/documentation/src/pages/extensions/index.tsx +++ b/documentation/src/pages/extensions/index.tsx @@ -95,27 +95,60 @@ export default function HomePage() { : "No servers available."} ) : ( -
- {servers - .sort((a, b) => { - // Sort built-in servers first - if (a.is_builtin && !b.is_builtin) return -1; - if (!a.is_builtin && b.is_builtin) return 1; - return 0; - }) - .map((server) => ( - - - - ))} +
+ {/* Built-in Extensions */} + {servers.filter(server => server.is_builtin).length > 0 && ( +
+

+ Built-in Extensions +

+
+ {servers + .filter(server => server.is_builtin) + .sort((a, b) => a.name.localeCompare(b.name)) + .map((server) => ( + + + + ))} +
+
+ )} + + {/* Community Extensions */} + {servers.filter(server => !server.is_builtin).length > 0 && ( +
+

+ Community Extensions +

+
+ {servers + .filter(server => !server.is_builtin) + .sort((a, b) => a.name.localeCompare(b.name)) + .map((server) => ( + + + + ))} +
+
+ )}
)} From 2162529958bc74208a83fcd25f6507876c2577c1 Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 10:44:59 -0400 Subject: [PATCH 3/5] update extension library in deploy preview --- documentation/src/utils/mcp-servers.ts | 41 ++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/documentation/src/utils/mcp-servers.ts b/documentation/src/utils/mcp-servers.ts index e7f9b2636656..56819c37396e 100644 --- a/documentation/src/utils/mcp-servers.ts +++ b/documentation/src/utils/mcp-servers.ts @@ -1,10 +1,47 @@ import type { MCPServer } from "../types/server"; -const SERVERS_URL = "/goose/servers.json"; +// Get the servers.json URL based on the current environment +function getServersUrl(): string { + if (typeof window !== 'undefined') { + // Client-side: construct URL based on current location + const pathname = window.location.pathname; + const hostname = window.location.hostname; + + // Check if we're in local development + if (hostname === 'localhost' || hostname === '127.0.0.1') { + // Local development - Docusaurus serves static files from the baseUrl + // Since baseUrl is /goose/, static files are served from /goose/ + return '/goose/servers.json'; + } + + // Production or PR preview - extract the base path + if (pathname.includes('/goose/')) { + const gooseIndex = pathname.indexOf('/goose/'); + const afterGoose = pathname.substring(gooseIndex + 6); // +6 for "/goose/" + + if (afterGoose.startsWith('pr-preview/')) { + // For PR previews like /goose/pr-preview/pr-123/ + const prMatch = afterGoose.match(/^pr-preview\/pr-\d+\//); + if (prMatch) { + return pathname.substring(0, gooseIndex + 6) + prMatch[0] + 'servers.json'; + } + } + // For production /goose/ + return pathname.substring(0, gooseIndex + 6) + 'servers.json'; + } + + // Fallback + return '/servers.json'; + } + + // Server-side rendering - use relative path that works with baseUrl + return '/goose/servers.json'; +} export async function fetchMCPServers(): Promise { try { - const response = await fetch(SERVERS_URL); + const serversUrl = getServersUrl(); + const response = await fetch(serversUrl); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } From 8ac168a4cf4d5a339c2da71191e01f4fc15bcf37 Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 10:50:36 -0400 Subject: [PATCH 4/5] Revert "update extension library in deploy preview" This reverts commit 2162529958bc74208a83fcd25f6507876c2577c1. --- documentation/src/utils/mcp-servers.ts | 41 ++------------------------ 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/documentation/src/utils/mcp-servers.ts b/documentation/src/utils/mcp-servers.ts index 56819c37396e..e7f9b2636656 100644 --- a/documentation/src/utils/mcp-servers.ts +++ b/documentation/src/utils/mcp-servers.ts @@ -1,47 +1,10 @@ import type { MCPServer } from "../types/server"; -// Get the servers.json URL based on the current environment -function getServersUrl(): string { - if (typeof window !== 'undefined') { - // Client-side: construct URL based on current location - const pathname = window.location.pathname; - const hostname = window.location.hostname; - - // Check if we're in local development - if (hostname === 'localhost' || hostname === '127.0.0.1') { - // Local development - Docusaurus serves static files from the baseUrl - // Since baseUrl is /goose/, static files are served from /goose/ - return '/goose/servers.json'; - } - - // Production or PR preview - extract the base path - if (pathname.includes('/goose/')) { - const gooseIndex = pathname.indexOf('/goose/'); - const afterGoose = pathname.substring(gooseIndex + 6); // +6 for "/goose/" - - if (afterGoose.startsWith('pr-preview/')) { - // For PR previews like /goose/pr-preview/pr-123/ - const prMatch = afterGoose.match(/^pr-preview\/pr-\d+\//); - if (prMatch) { - return pathname.substring(0, gooseIndex + 6) + prMatch[0] + 'servers.json'; - } - } - // For production /goose/ - return pathname.substring(0, gooseIndex + 6) + 'servers.json'; - } - - // Fallback - return '/servers.json'; - } - - // Server-side rendering - use relative path that works with baseUrl - return '/goose/servers.json'; -} +const SERVERS_URL = "/goose/servers.json"; export async function fetchMCPServers(): Promise { try { - const serversUrl = getServersUrl(); - const response = await fetch(serversUrl); + const response = await fetch(SERVERS_URL); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } From d21f293250f3e5a06a60f76a227d8e8066a0e5bf Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 12:50:37 -0400 Subject: [PATCH 5/5] remove misleading booking language --- documentation/docs/mcp/kiwi-flight-search.md | 4 ++-- documentation/static/servers.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/documentation/docs/mcp/kiwi-flight-search.md b/documentation/docs/mcp/kiwi-flight-search.md index a2acddfa1c56..fd23464bf3ed 100644 --- a/documentation/docs/mcp/kiwi-flight-search.md +++ b/documentation/docs/mcp/kiwi-flight-search.md @@ -12,7 +12,7 @@ import GooseBuiltinInstaller from '@site/src/components/GooseBuiltinInstaller'; import { PanelLeft } from 'lucide-react'; -This tutorial covers how to add the [Kiwi Flight Search MCP Server](https://mcp.kiwi.com) as a Goose extension to enable flight search, price comparison, and booking functionality directly from your AI assistant. +This tutorial covers how to add the [Kiwi Flight Search MCP Server](https://mcp.kiwi.com) as a Goose extension to enable flight search and price comparison. :::tip TLDR @@ -63,7 +63,7 @@ Let's search for flights between any two locations on specific dates. You can se ### Goose Prompt ``` -Can you help me book a flight from Paris to Rome for August 9? +Can you help me search for a flight from Paris to Rome for August 9? ``` ### Goose Output diff --git a/documentation/static/servers.json b/documentation/static/servers.json index 6549af049181..3b39f564885e 100644 --- a/documentation/static/servers.json +++ b/documentation/static/servers.json @@ -336,7 +336,7 @@ { "id": "kiwi-flight-search", "name": "Kiwi Flight Search", - "description": "Search and book flights", + "description": "Search for flights", "url": "https://mcp.kiwi.com", "link": "https://mcp-install-instructions.alpic.cloud/servers/kiwi-com-flight-search", "installation_notes": "This is a remote extension. Configure using the endpoint URL in Goose settings.",