Skip to main content
Glama

Specialized AI Search Tools

by brendon92

🤖 MCP Server - Specialized AI Search Tools

Zaawansowany Model Context Protocol (MCP) Server z wyspecjalizowanymi narzędziami wyszukiwania dla agentów AI, zbudowany w Node.js i TypeScript.

NOTE

Model Context Protocol (MCP) to otwarty standard umożliwiający integrację niestandardowych narzędzi z asystentami AI, takimi jak Claude Desktop, Cursor AI i innymi.


📖 O Model Context Protocol (MCP)

Czym jest MCP?

Model Context Protocol (MCP) to otwarty standard wprowadzony przez Anthropic, który standaryzuje sposób, w jaki aplikacje AI komunikują się z zewnętrznymi narzędziami, usługami i źródłami danych. MCP eliminuje potrzebę tworzenia dedykowanych integracji dla każdego narzędzia, oferując uniwersalny protokół komunikacji.

Kluczowe Założenia Projektowe

  1. Standardyzacja Integracji: MCP zapewnia jednolity sposób łączenia AI z różnymi systemami, eliminując fragmentację w ekosystemie AI

  2. Modularność: Serwery MCP są niezależnymi modułami, które można łatwo dodawać, usuwać i konfigurować

  3. Bezpieczeństwo: Protokół został zaprojektowany z myślą o bezpieczeństwie, z kontrolą dostępu i walidacją danych

  4. Elastyczność: Obsługa różnych transportów (STDIO, HTTP+SSE) i formatów danych

  5. Open Source: Otwarty standard dostępny dla wszystkich, promujący interoperacyjność

Architektura MCP

MCP składa się z trzech głównych komponentów:

1. Tools (Narzędzia)

Funkcje, które AI może wywołać do wykonania konkretnych akcji:

  • Definicja: Każde narzędzie ma nazwę, opis i schemat parametrów (JSON Schema)

  • Wykonanie: Narzędzie przyjmuje parametry i zwraca wynik

  • Przykłady: Wyszukiwanie w bazie danych, wysyłanie emaili, wykonywanie obliczeń

2. Resources (Zasoby)

Dane, do których AI może uzyskać dostęp:

  • Definicja: Zasób ma URI, nazwę, opis i typ MIME

  • Dostęp: AI może odczytać zawartość zasobu na żądanie

  • Przykłady: Pliki w systemie, wpisy w bazie danych, dokumenty w chmurze

3. Prompts (Prompty)

Szablony promptów, które AI może wykorzystać:

  • Definicja: Prompt ma nazwę, opis i opcjonalne argumenty

  • Użycie: AI może wywołać prompt z argumentami, aby wygenerować gotowy prompt

  • Przykłady: Szablony do code review, generowania dokumentacji, analizy danych

Jak Działa MCP?

┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ AI Client │◄──────►│ MCP Server │◄──────►│ External │ │ (Claude, │ MCP │ (This │ API │ Services │ │ Cursor) │Protocol│ Project) │ Calls │ (APIs, DB) │ └─────────────┘ └──────────────┘ └─────────────┘
  1. Inicjalizacja: Klient AI łączy się z serwerem MCP przez wybrany transport (STDIO/HTTP+SSE)

  2. Odkrywanie: Klient pobiera listę dostępnych narzędzi, zasobów i promptów

  3. Użycie: AI wywołuje narzędzia lub odczytuje zasoby w odpowiedzi na zapytania użytkownika

  4. Wyniki: Serwer MCP wykonuje operacje i zwraca wyniki do klienta AI

Transporty MCP

  • STDIO (Standard Input/Output): Dla lokalnych integracji, proces komunikuje się przez stdin/stdout

  • HTTP+SSE (Server-Sent Events): Dla zdalnych serwerów, komunikacja przez HTTP z SSE dla strumieniowania

  • WebSocket: (Planowane) Dla aplikacji webowych wymagających dwukierunkowej komunikacji

Zalety MCP

Uniwersalność: Jeden protokół dla wszystkich integracji
Bezpieczeństwo: Kontrola dostępu i walidacja na poziomie protokołu
Skalowalność: Łatwe dodawanie nowych narzędzi bez modyfikacji klienta
Interoperacyjność: Różne klienty AI mogą używać tych samych serwerów MCP
Modularność: Każdy serwer MCP jest niezależnym modułem funkcjonalności


✨ Wyspecjalizowane Narzędzia Wyszukiwania

🛒 E-commerce Search

Wyszukiwanie produktów w popularnych sklepach internetowych:

  • Obsługiwane platformy: Amazon, eBay, Allegro, AliExpress, Etsy

  • Filtry:

    • 💰 Zakres cenowy (min-max)

    • ⭐ Oceny (minimalna ocena, liczba opinii)

    • 🚚 Dostępność i opcje wysyłki

    • 🏷️ Kategorie produktów

    • 🌍 Region sprzedawcy

    • 📦 Stan produktu (nowy, używany, odnowiony)

  • Sortowanie: cena, popularność, oceny, data dodania

  • Zwraca: tytuł, cena, ocena, link, zdjęcie, dostępność

🔬 Scientific Publications Search

Wyszukiwanie publikacji naukowych i artykułów badawczych:

  • Obsługiwane bazy: arXiv, PubMed, Google Scholar, IEEE Xplore, ResearchGate

  • Filtry:

    • 📅 Zakres dat publikacji

    • 🏫 Afiliacja autorów

    • 📄 Typ publikacji (artykuł, konferencja, preprint)

    • 🔬 Dziedzina nauki

    • 📊 Liczba cytowań (minimum)

    • 🌐 Język publikacji

  • Sortowanie: relevancja, data, cytowania

  • Zwraca: tytuł, autorzy, abstrakt, DOI, PDF link, cytowania

💻 Hosting & Repositories Search

Wyszukiwanie kodu, pakietów i zasobów deweloperskich:

  • Obsługiwane platformy: GitHub, GitLab, npm, PyPI, Docker Hub, Maven Central

  • Filtry:

    • 💻 Język programowania

    • ⭐ Minimalna liczba gwiazdek/pobrań

    • 📅 Ostatnia aktualizacja (aktywność projektu)

    • 📜 Licencja (MIT, Apache, GPL, itp.)

    • 🏷️ Tagi i tematy

    • 👥 Liczba kontrybutorów

  • Sortowanie: gwiazdki, forki, ostatnia aktualizacja, relevancja

  • Zwraca: nazwa, opis, autor, gwiazdki, język, licencja, link

📱 Social Media Search

Wyszukiwanie treści w mediach społecznościowych:

  • Obsługiwane platformy: Twitter/X, Reddit, LinkedIn, YouTube, Hacker News

  • Filtry:

    • 📅 Zakres czasowy (ostatnia godzina, dzień, tydzień, miesiąc)

    • 🌍 Język i lokalizacja

    • 👤 Autor/kanał

    • 💬 Minimalna liczba interakcji (lajki, komentarze, udostępnienia)

    • 🏷️ Hashtagi i słowa kluczowe

    • 📊 Typ treści (tekst, obraz, wideo, link)

  • Sortowanie: popularność, data, relevancja

  • Zwraca: treść, autor, data, interakcje, link, media

🌐 General Web Search

Uniwersalne wyszukiwanie w internecie:

  • Obsługiwane silniki: Google, Bing, DuckDuckGo, Brave Search

  • Filtry:

    • 📄 Formaty plików (PDF, DOCX, XLSX, CSV, JSON, XML, PPT)

    • 🌍 Język i region

    • 📅 Zakres dat

    • 🔒 SafeSearch

    • 🌐 Domena (np. tylko .edu, .gov)

    • 📍 Dokładna fraza vs. podobne wyniki

  • Sortowanie: relevancja, data

  • Zwraca: tytuł, URL, snippet, data publikacji, typ pliku


🔧 Dodatkowe Funkcjonalności

🌐 WebFetch Tool

Pobieranie i parsowanie treści stron internetowych:

  • Pobieranie HTML z dowolnego URL

  • Parsowanie z wykorzystaniem Cheerio

  • Ekstrakcja: tekst, nagłówki, linki, metadane, obrazy

  • Obsługa selektorów CSS

  • Timeout i error handling

  • User-agent customization

🔄 Type Conversion Tools

Konwersja między różnymi formatami danych:

  • Obsługiwane formaty: JSON, XML, YAML, CSV, TOML

  • Konwersje: JSON ↔ XML ↔ YAML ↔ CSV ↔ TOML

  • Pretty printing i minification

  • Walidacja struktury danych

  • Obsługa zagnieżdżonych struktur

📊 Data Aggregation

Agregacja wyników z wielu źródeł:

  • Równoległe wyszukiwanie w wielu platformach

  • Deduplikacja wyników

  • Normalizacja formatów odpowiedzi

  • Ranking i sortowanie zagregowanych wyników

  • Statystyki i podsumowania

🛠️ Extensible Architecture

Łatwe dodawanie własnych narzędzi:

  • Bazowa klasa BaseTool z wspólną logiką

  • Automatyczna walidacja z Zod

  • Centralna rejestracja narzędzi

  • Standardowy error handling

  • Plugin system dla nowych źródeł danych


📚 Dokumentacja Funkcjonalności i Przykłady

🎯 Scenariusze Użycia

Scenariusz 1: Research Assistant

Cel: Pomoc w badaniach naukowych poprzez agregację informacji z wielu źródeł

Przepływ:

  1. Użytkownik: "Znajdź najnowsze publikacje o quantum computing"

  2. AI wywołuje scientific_publications_search z parametrami:

    { query: "quantum computing", database: "arxiv", dateFrom: "2024-01-01", sortBy: "date" }
  3. AI następnie wywołuje repositories_search:

    { query: "quantum computing implementation", platform: "github", language: "python", minStars: 100 }
  4. AI agreguje wyniki i generuje podsumowanie

Wartość: Automatyczna agregacja informacji z różnych źródeł w jednym miejscu

Scenariusz 2: Product Research & Comparison

Cel: Porównanie produktów z różnych platform e-commerce

Przepływ:

  1. Użytkownik: "Porównaj ceny iPhone 15 Pro na różnych platformach"

  2. AI równolegle wywołuje narzędzia dla każdej platformy:

    • ecommerce_search (platform: "amazon")

    • ecommerce_search (platform: "ebay")

    • ecommerce_search (platform: "allegro")

  3. AI agreguje wyniki, normalizuje formaty i porównuje ceny

  4. Zwraca tabelę porównawczą z najlepszymi ofertami

Wartość: Oszczędność czasu na ręcznym przeszukiwaniu wielu sklepów

Scenariusz 3: Developer Tool Discovery

Cel: Znalezienie odpowiednich bibliotek i narzędzi dla projektu

Przepływ:

  1. Użytkownik: "Znajdź biblioteki do walidacji danych w TypeScript"

  2. AI wywołuje repositories_search:

    { query: "data validation", platform: "github", language: "typescript", minStars: 500, sortBy: "stars" }
  3. AI następnie używa webfetch do pobrania dokumentacji najlepszych wyników

  4. Zwraca listę z opisami, ocenami i linkami do dokumentacji

Wartość: Szybkie znalezienie sprawdzonych narzędzi

📋 Szczegółowa Dokumentacja Narzędzi

🛒 E-commerce Search Tool

Funkcjonalność: Wyszukiwanie produktów w popularnych sklepach internetowych z zaawansowanymi filtrami

Parametry wejściowe:

interface EcommerceSearchParams { query: string; // Fraza wyszukiwania platform: 'amazon' | 'ebay' | 'allegro' | 'alexpress' | 'etsy'; priceMin?: number; // Minimalna cena priceMax?: number; // Maksymalna cena minRating?: number; // Minimalna ocena (1-5) minReviews?: number; // Minimalna liczba opinii category?: string; // Kategoria produktu region?: string; // Region (kod kraju) condition?: 'new' | 'used' | 'refurbished'; sortBy?: 'price' | 'rating' | 'popularity' | 'date'; limit?: number; // Maksymalna liczba wyników (domyślnie 10) }

Format odpowiedzi:

interface EcommerceSearchResult { platform: string; totalResults: number; results: Array<{ title: string; price: number; currency: string; rating: number; reviewCount: number; url: string; imageUrl?: string; availability: 'in_stock' | 'out_of_stock' | 'limited'; shippingInfo?: string; }>; }

Przykład użycia:

// Wywołanie przez AI { query: "laptop gaming", platform: "allegro", priceMin: 2000, priceMax: 5000, minRating: 4.5, minReviews: 10, sortBy: "rating" }

🔬 Scientific Publications Search Tool

Funkcjonalność: Wyszukiwanie publikacji naukowych w bazach danych z filtrowaniem po datach, autorach i cytowaniach

Parametry wejściowe:

interface ScientificSearchParams { query: string; database: 'arxiv' | 'pubmed' | 'scholar' | 'ieee' | 'researchgate'; dateFrom?: string; // Format: YYYY-MM-DD dateTo?: string; // Format: YYYY-MM-DD authorAffiliation?: string; // Afiliacja autora publicationType?: 'article' | 'conference' | 'preprint'; field?: string; // Dziedzina nauki minCitations?: number; // Minimalna liczba cytowań language?: string; // Kod języka (ISO 639-1) sortBy?: 'relevance' | 'date' | 'citations'; limit?: number; }

Format odpowiedzi:

interface ScientificSearchResult { database: string; totalResults: number; results: Array<{ title: string; authors: string[]; abstract: string; doi?: string; pdfUrl?: string; publicationDate: string; citationCount: number; journal?: string; keywords?: string[]; }>; }

💻 Repositories Search Tool

Funkcjonalność: Wyszukiwanie projektów, bibliotek i pakietów w repozytoriach kodu

Parametry wejściowe:

interface RepositorySearchParams { query: string; platform: 'github' | 'gitlab' | 'npm' | 'pypi' | 'docker' | 'maven'; language?: string; // Język programowania minStars?: number; // Minimalna liczba gwiazdek minDownloads?: number; // Minimalna liczba pobrań (dla npm/pypi) lastUpdated?: string; // Ostatnia aktualizacja po dacie license?: string; // Typ licencji (MIT, Apache, GPL, etc.) topics?: string[]; // Tagi/tematy minContributors?: number; // Minimalna liczba kontrybutorów sortBy?: 'stars' | 'forks' | 'updated' | 'relevance'; limit?: number; }

Format odpowiedzi:

interface RepositorySearchResult { platform: string; totalResults: number; results: Array<{ name: string; description: string; author: string; stars: number; forks: number; language: string; license?: string; url: string; lastUpdated: string; topics?: string[]; }>; }

📱 Social Media Search Tool

Funkcjonalność: Wyszukiwanie treści w mediach społecznościowych z filtrowaniem po czasie i popularności

Parametry wejściowe:

interface SocialMediaSearchParams { query: string; platform: 'twitter' | 'reddit' | 'linkedin' | 'youtube' | 'hackernews'; timeRange?: 'hour' | 'day' | 'week' | 'month' | 'year'; language?: string; author?: string; // Nazwa użytkownika/kanału minInteractions?: number; // Minimalna liczba lajków/komentarzy hashtags?: string[]; // Hashtagi contentType?: 'text' | 'image' | 'video' | 'link'; sortBy?: 'popularity' | 'date' | 'relevance'; limit?: number; }

🌐 General Web Search Tool

Funkcjonalność: Uniwersalne wyszukiwanie w internecie z filtrowaniem po typach plików i domenach

Parametry wejściowe:

interface WebSearchParams { query: string; engine: 'google' | 'bing' | 'duckduckgo' | 'brave'; fileType?: 'pdf' | 'docx' | 'xlsx' | 'csv' | 'json' | 'xml' | 'ppt'; language?: string; region?: string; dateFrom?: string; dateTo?: string; domain?: string; // np. ".edu", ".gov" exactPhrase?: boolean; // Dokładna fraza vs. podobne wyniki safeSearch?: boolean; sortBy?: 'relevance' | 'date'; limit?: number; }

🔄 Type Conversion Tool

Funkcjonalność: Konwersja między różnymi formatami danych (JSON, XML, YAML, CSV, TOML)

Przykład użycia:

// Konwersja JSON do YAML { inputFormat: "json", outputFormat: "yaml", data: '{"name": "test", "value": 123}', prettyPrint: true }

🌐 WebFetch Tool

Funkcjonalność: Pobieranie i parsowanie treści stron internetowych

Parametry:

interface WebFetchParams { url: string; selector?: string; // CSS selector dla ekstrakcji fragmentu extractImages?: boolean; extractLinks?: boolean; timeout?: number; // Timeout w sekundach }

Format odpowiedzi:

interface WebFetchResult { url: string; title?: string; text: string; html?: string; metadata?: { description?: string; keywords?: string[]; author?: string; }; images?: string[]; links?: string[]; }

🔧 Development

Struktura projektu

mcp-server/ ├── src/ │ ├── index.ts # Entry point │ ├── server.ts # MCP Server setup │ ├── tools/ # Narzędzia wyszukiwania │ │ ├── index.ts # Eksport wszystkich narzędzi │ │ ├── base.ts # Bazowa klasa │ │ ├── ecommerce/ # E-commerce search tools │ │ │ ├── amazon.ts │ │ │ ├── ebay.ts │ │ │ └── allegro.ts │ │ ├── scientific/ # Scientific search tools │ │ │ ├── arxiv.ts │ │ │ ├── pubmed.ts │ │ │ └── scholar.ts │ │ ├── repositories/ # Code repository tools │ │ │ ├── github.ts │ │ │ ├── npm.ts │ │ │ └── pypi.ts │ │ ├── social/ # Social media tools │ │ │ ├── twitter.ts │ │ │ ├── reddit.ts │ │ │ └── youtube.ts │ │ ├── websearch.ts # General web search │ │ ├── webfetch.ts # Web scraping │ │ └── conversion.ts # Type conversion │ ├── types/ # TypeScript types │ └── utils/ # Utilities │ ├── logger.ts │ ├── cache.ts │ └── validators.ts ├── tests/ # Testy ├── examples/ # Przykłady konfiguracji └── dist/ # Skompilowany kod

Skrypty npm

# Development npm run dev # Uruchomienie w trybie dev (watch mode) npm run build # Build produkcyjny npm start # Uruchomienie serwera # Testing npm test # Uruchomienie testów npm run test:watch # Testy w trybie watch npm run test:coverage # Coverage report # Linting npm run lint # ESLint check npm run lint:fix # ESLint auto-fix npm run format # Prettier formatting

Dodawanie nowego źródła wyszukiwania

  1. Utwórz nowy plik w odpowiednim katalogu, np. src/tools/ecommerce/shopify.ts:

import { z } from 'zod'; import { BaseTool } from '../base.js'; const ShopifySearchSchema = z.object({ query: z.string().describe('Search query'), priceMin: z.number().optional().describe('Minimum price'), priceMax: z.number().optional().describe('Maximum price'), limit: z.number().default(10).describe('Number of results'), }); export class ShopifySearchTool extends BaseTool { name = 'ecommerce_shopify'; description = 'Search for products on Shopify stores'; schema = ShopifySearchSchema; async execute(params: z.infer<typeof ShopifySearchSchema>) { // Implementacja wyszukiwania w Shopify const results = await this.searchShopify(params); return { platform: 'shopify', results, }; } private async searchShopify(params: any) { // Logika API call do Shopify } }
  1. Zarejestruj w src/tools/index.ts:

import { ShopifySearchTool } from './ecommerce/shopify.js'; export const tools = [ // ... existing tools new ShopifySearchTool(), ];

🧪 Testing

# Wszystkie testy npm test # Testy dla konkretnej kategorii npm test -- ecommerce npm test -- scientific # Coverage npm run test:coverage

🏗️ Architektura Projektu

Założenia Architektoniczne

  1. Modularność: Każde narzędzie wyszukiwania jest niezależnym modułem, łatwym do dodania/usunięcia

  2. Walidacja Schematów: Wszystkie parametry narzędzi są walidowane przez Zod przed wykonaniem

  3. Error Handling: Centralny system obsługi błędów z informatywnymi komunikatami

  4. Caching: Inteligentne cachowanie wyników wyszukiwań dla poprawy wydajności

  5. Extensibility: Bazowa klasa BaseTool umożliwia łatwe dodawanie nowych narzędzi

Struktura Komunikacji

┌─────────────────────────────────────────────────────────┐ │ AI Client (Claude/Cursor) │ └────────────────────┬────────────────────────────────────┘ │ MCP Protocol (JSON-RPC) │ ┌────────────────────▼────────────────────────────────────┐ │ MCP Server (This Project) │ │ ┌────────────────────────────────────────────────────┐ │ │ │ Tool Registry │ │ │ │ - E-commerce Search Tools │ │ │ │ - Scientific Publication Tools │ │ │ │ - Repository Search Tools │ │ │ │ - Social Media Tools │ │ │ │ - Web Search Tools │ │ │ └────────────────────────────────────────────────────┘ │ │ │ │ │ ┌──────────────────▼────────────────────────────────┐ │ │ │ BaseTool Abstract Class │ │ │ │ - Schema Validation (Zod) │ │ │ │ - Error Handling │ │ │ │ - Logging │ │ │ └────────────────────────────────────────────────────┘ │ └────────────────────┬────────────────────────────────────┘ │ HTTP/API Calls │ ┌────────────────────▼────────────────────────────────────┐ │ External APIs & Services │ │ - Google Search API │ │ - Amazon Product API │ │ - GitHub API │ │ - arXiv API │ │ - Twitter API │ │ - ... (20+ services) │ └──────────────────────────────────────────────────────────┘

Wzorce Projektowe

1. Strategy Pattern

Każde narzędzie wyszukiwania implementuje wspólny interfejs BaseTool, ale ma własną strategię wykonania:

abstract class BaseTool { abstract name: string; abstract description: string; abstract schema: ZodSchema; abstract execute(params: unknown): Promise<unknown>; }

2. Factory Pattern

Centralna rejestracja narzędzi w tools/index.ts:

export const tools = [ new AmazonSearchTool(), new GitHubSearchTool(), // ... inne narzędzia ];

3. Adapter Pattern

Normalizacja różnych formatów odpowiedzi API do jednolitego formatu MCP:

class SearchResultAdapter { normalize(apiResponse: unknown): MCPToolResult { // Konwersja do standardowego formatu } }

Przepływ Danych

  1. Żądanie od AI: Klient AI wysyła żądanie wywołania narzędzia z parametrami

  2. Walidacja: Parametry są walidowane przez schemat Zod

  3. Wykonanie: Narzędzie wykonuje zapytanie do zewnętrznego API

  4. Przetwarzanie: Odpowiedź API jest parsowana i normalizowana

  5. Caching: Wynik jest cachowany (jeśli włączone)

  6. Odpowiedź: Znormalizowany wynik jest zwracany do klienta AI

Obsługa Błędów

  • Walidacja Parametrów: Błędy walidacji są zwracane przed wykonaniem

  • API Errors: Błędy zewnętrznych API są przechwytywane i konwertowane na format MCP

  • Timeout Protection: Wszystkie żądania mają timeouty, aby uniknąć zawieszenia

  • Retry Logic: Opcjonalne automatyczne ponawianie przy błędach sieciowych


🛠️ Tech Stack

Core Technologies

  • Runtime: Node.js 20+ - Najnowsze funkcje ES2023, wydajność i stabilność

  • Language: TypeScript 5.7+ - Type safety, lepsze IDE support, refactoring

  • MCP SDK: @modelcontextprotocol/sdk - Oficjalne SDK dla protokołu MCP

Validation & Schema

  • Zod: Walidacja schematów JSON Schema dla parametrów narzędzi

  • Type Safety: Pełne typowanie TypeScript dla wszystkich komponentów

HTTP & Networking

  • Axios: HTTP client z interceptors, retry logic i error handling

  • Cheerio: Server-side HTML parsing (jQuery-like API) dla web scraping

Data Processing

  • xml2js: Parsowanie XML do obiektów JavaScript

  • js-yaml: Parsowanie i generowanie YAML

  • csv-parse: Parsowanie plików CSV

Performance & Caching

  • node-cache: In-memory caching dla wyników wyszukiwań

  • LRU Cache: Strategia cache'owania dla często używanych zapytań

Development Tools

  • Jest: Framework testowy z coverage reports

  • ESLint: Linting kodu z regułami TypeScript

  • Prettier: Automatyczne formatowanie kodu

  • ts-node: TypeScript execution environment dla development

Security

  • dotenv: Zarządzanie zmiennymi środowiskowymi

  • helmet: (Planowane) Security headers dla HTTP transport

  • rate-limiter: (Planowane) Ochrona przed nadużyciami API


📖 Zasoby

MCP Protocol - Oficjalne Źródła

Open-Source Repozytoria MCP Server

TypeScript/Node.js Implementacje

Flutter/Dart Implementacje (dla integracji z AI Code Box)

Integracja z Flutter/Dart (AI Code Box)

Dla projektu AI Code Box w Flutter, możesz zintegrować ten MCP Server na kilka sposobów:

Opcja 1: HTTP/SSE Transport Uruchom Node.js MCP Server jako osobny proces i połącz się przez HTTP+SSE używając mcp_dart:

import 'package:mcp_dart/mcp_dart.dart'; final client = MCPClient( transport: StreamableHTTPTransport(url: 'http://localhost:3000/mcp'), ); await client.connect();

Opcja 2: Native Dart MCP Server Użyj biblioteki mcp_dart do stworzenia natywnego serwera MCP w Dart, portując narzędzia z tego projektu.

Opcja 3: Bridge Pattern Stwórz bridge między Node.js MCP Server a Flutter aplikacją przez REST API.

Zalecane biblioteki:

  • mcp_dart - Pełne SDK MCP dla Dart

  • mcp_flutter - Flutter-specific MCP toolkit

  • dio - HTTP client dla komunikacji z Node.js serverem

Inne Implementacje

Artykuły i Najlepsze Praktyki

Podstawowe Wprowadzenie do MCP

  • MCP Explained: The New Standard Connecting AI to Everything - Polecany! Kompleksowe wyjaśnienie MCP, jego architektury, komponentów (tools, resources, prompts) oraz jak MCP standaryzuje integrację AI z zewnętrznymi systemami. Artykuł zawiera praktyczne przykłady i case studies.

  • Model Context Protocol (MCP) in AI - Polecany! Szczegółowe omówienie MCP jako otwartego standardu łączącego AI z systemami danych. Artykuł opisuje założenia projektowe, architekturę i praktyczne zastosowania MCP w ekosystemie AI.

Zaawansowane Implementacje

Przeglądy i Analizy

Badania i Benchmarki

API Documentation


🔒 Bezpieczeństwo

Najlepsze Praktyki

Implementacja serwera MCP wymaga szczególnej uwagi na bezpieczeństwo, ponieważ serwer może mieć dostęp do wrażliwych danych i zewnętrznych systemów.

1. Uwierzytelnianie i Autoryzacja

  • API Keys: Przechowuj klucze API w zmiennych środowiskowych, nigdy w kodzie

  • Szyfrowanie: Używaj szyfrowania dla wrażliwych danych (np. flutter_secure_storage dla Flutter)

  • Role-Based Access Control (RBAC): Implementuj kontrolę dostępu do narzędzi i zasobów

  • Rate Limiting: Ogranicz liczbę żądań na użytkownika/IP, aby zapobiec nadużyciom

2. Walidacja Danych

  • Input Validation: Waliduj wszystkie dane wejściowe używając Zod lub podobnych narzędzi

  • Sanitization: Oczyszczaj dane przed przetwarzaniem (szczególnie dla web scraping)

  • Schema Validation: Używaj silnych schematów walidacji dla wszystkich parametrów narzędzi

3. Bezpieczeństwo API

  • HTTPS Only: Wymuszaj połączenia HTTPS dla wszystkich zewnętrznych API calls

  • Timeout Protection: Ustaw rozsądne timeouty dla wszystkich żądań zewnętrznych

  • Error Handling: Nie ujawniaj wrażliwych informacji w komunikatach błędów

  • Request Signing: Podpisuj żądania do zewnętrznych API (np. Amazon Product Advertising API)

4. Ochrona przed Atakami

  • Prompt Injection: Waliduj i filtruj dane przed wysłaniem do LLM

  • SQL Injection: Używaj parametryzowanych zapytań (jeśli używasz bazy danych)

  • XSS Protection: Sanityzuj dane HTML przed wyświetleniem

  • CSRF Protection: Implementuj tokeny CSRF dla operacji modyfikujących dane

5. Monitoring i Logging

  • Audit Logs: Loguj wszystkie operacje na wrażliwych danych

  • Error Tracking: Monitoruj błędy i nieprawidłowe próby dostępu

  • Performance Monitoring: Śledź wydajność i wykrywaj anomalie

6. Konfiguracja Środowiska

  • Environment Variables: Używaj .env dla konfiguracji, dodaj .env do .gitignore

  • Secrets Management: Rozważ użycie narzędzi do zarządzania sekretami (np. AWS Secrets Manager, HashiCorp Vault)

  • Least Privilege: Nadawaj minimalne wymagane uprawnienia

Zasoby Bezpieczeństwa

WARNING

Zawsze testuj swoje narzędzia w środowisku izolowanym przed wdrożeniem produkcyjnym. Nie ufaj danym wejściowym i zawsze waliduj parametry przed wykonaniem operacji.


🚧 Roadmap

Faza 1: Core Infrastructure ✅

  • Struktura projektu

  • Bazowa klasa narzędzi

  • System walidacji

  • Logging

Faza 2: Basic Search Tools (W trakcie)

  • General web search (Google, Bing)

  • WebFetch tool

  • Type conversion tools

  • MCP server setup

Faza 3: Specialized Search

  • E-commerce search (Amazon, eBay, Allegro)

  • Scientific publications (arXiv, PubMed)

  • Code repositories (GitHub, npm, PyPI)

  • Social media (Twitter, Reddit, YouTube)

Faza 4: Advanced Features

  • Caching system

  • Data aggregation

  • Advanced filtering

  • Rate limiting

  • Error recovery

Faza 5: Polish & Optimization

  • Comprehensive tests

  • Performance optimization

  • Documentation

  • Example integrations


📄 Licencja

MIT License - możesz swobodnie używać i modyfikować ten projekt.


🤝 Contributing

Contributions are welcome! Jeśli chcesz dodać nowe źródło wyszukiwania lub poprawić istniejące:

  1. Fork projektu

  2. Utwórz branch (git checkout -b feature/new-search-source)

  3. Commit zmian (git commit -m 'Add new search source')

  4. Push do brancha (git push origin feature/new-search-source)

  5. Otwórz Pull Request


💡 Use Cases

Research Assistant

Agent: Znajdź najnowsze publikacje o "quantum computing" na arXiv, następnie wyszukaj implementacje na GitHub i podsumuj stan badań.

Product Comparison

Agent: Porównaj ceny iPhone 15 Pro na Amazon, eBay i Allegro, pokaż najlepsze oferty z dobrymi ocenami.

Developer Tools Discovery

Agent: Znajdź popularne biblioteki TypeScript do walidacji danych, sprawdź ich dokumentację i przykłady użycia.

Trend Analysis

Agent: Sprawdź co jest teraz popularne na Reddit i Twitter w temacie AI, znajdź powiązane artykuły naukowe i projekty na GitHub.

📦 Instalacja i Konfiguracja

NOTE

Ta sekcja zawiera podstawowe informacje o instalacji. Szczegółowa dokumentacja funkcjonalności znajduje się w sekcjach powyżej.

Wymagania

  • Node.js 20.x lub wyższy

  • npm lub yarn

  • API Keys (opcjonalne, w zależności od używanych narzędzi)

Szybki Start

# Klonowanie i instalacja git clone <repo-url> cd mcp-server npm install # Konfiguracja (opcjonalna) cp .env.example .env # Edytuj .env i dodaj API keys # Build i uruchomienie npm run build npm start

Integracja z Klientami AI

Cursor AI: Dodaj do ~/.cursor/config.json:

{ "mcpServers": { "specialized-search": { "command": "node", "args": ["/absolute/path/to/mcp-server/dist/index.js"] } } }

Claude Desktop: Edytuj plik konfiguracyjny (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json)

Flutter/Dart: Zobacz sekcję Integracja z Flutter/Dart w dokumentacji zasobów.

TIP

Większość narzędzi ma darmowe tier API. Serwer działa z dostępnymi narzędziami - narzędzia bez skonfigurowanych kluczy są automatycznie wyłączone.


Status projektu: 🚧 W trakcie implementacji - Faza 1 & 2

Projekt jest aktywnie rozwijany. Podstawowa infrastruktura gotowa, implementacja narzędzi wyszukiwania w toku!

-
security - not tested
F
license - not found
-
quality - not tested

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/brendon92/mcp-server'

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