Szybka odpowiedź
Jak dodać wyszukiwanie Google do Claude Desktop lub Cursor za pomocą serwera MCP?
Zapisz poniższy 40-liniowy serwer w Pythonie, zainstaluj mcp[cli] i httpx, a następnie zarejestruj go w ustawieniach MCP swojego klienta z kluczem API SerpCrypto w env. Klient otrzyma wtedy narzędzie google_search, które zwraca aktualne wyniki wyszukiwania Google. Każde wywołanie narzędzia to jedno wyszukiwanie za 1 kredyt, od 0,30 USD/1K wyszukiwań; kredyty są opłacane kryptowalutą bez KYC.
Serwer MCP w skrócie
| Język | Python 3.10+ z oficjalnym SDK mcp (FastMCP) i httpx |
|---|---|
| Transport | stdio: klient uruchamia skrypt i rozmawia z nim |
| Narzędzie | google_search(query, gl, hl, num_results) |
| Wyjście | Tekst AI Overview, gdy jest wyświetlany, a następnie tytuł, link i snippet dla każdego wyniku |
| Klucz | Zmienna środowiskowa SERPCRYPTO_API_KEY, ustawiana w konfiguracji klienta |
| Koszt | 1 kredyt za każde udane wywołanie narzędzia; błędy są bezpłatne |
Co robi serwer?
Udostępnia jedno narzędzie, google_search, przez Model Context Protocol. Gdy model je wywoła, serwer wysyła jedno zapytanie do https://serpcrypto.com/api/v1/search, a następnie zamienia JSON na krótki zwykły tekst: AI Overview, jeśli Google go wyświetliło, oraz najważniejsze wyniki z tytułem, linkiem i snippetem.
Krótki tekst ma znaczenie. Pełna strona wyników w JSON jest długa, a każdy znak odesłany do modelu zużywa kontekst. Serwer zachowuje do dziesięciu wyników i przycina overview do 800 znaków; zmień te limity w kodzie, jeśli Twój klient ma na więcej miejsca.
To kod do skopiowania i wklejenia, nie opublikowany pakiet: nie ma oficjalnego pakietu MCP SerpCrypto do zainstalowania. Plik należy do Ciebie i możesz dodawać narzędzia, na przykład do engine=google_news.
"""serpcrypto_mcp.py: an MCP server that gives AI clients a Google search tool.
Install once: pip install "mcp[cli]" httpx
Run by your MCP client over stdio; the API key comes from the environment.
"""
import os
import httpx
from mcp.server.fastmcp import FastMCP
API_URL = "https://serpcrypto.com/api/v1/search"
mcp = FastMCP("serpcrypto-search")
@mcp.tool()
async def google_search(query: str, gl: str = "us", hl: str = "en", num_results: int = 5) -> str:
"""Search Google and return the top results (title, link, snippet) and the AI Overview text if any.
gl is a two-letter country code (us, gb, de...), hl a language code (en, de, pt-BR...).
Each call uses one SerpCrypto search credit.
"""
headers = {"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]}
params = {"q": query, "gl": gl, "hl": hl}
async with httpx.AsyncClient(timeout=90) as client:
r = await client.get(API_URL, params=params, headers=headers)
if r.status_code != 200:
return f"Search failed with HTTP {r.status_code}: {r.text[:300]}"
data = r.json()
lines = []
overview = data.get("ai_overview") or {}
if overview.get("text"):
lines.append("AI Overview: " + overview["text"][:800])
for item in data.get("organic_results", [])[: max(1, min(num_results, 10))]:
lines.append(f"{item['position']}. {item['title']}\n{item['link']}\n{item.get('snippet', '')}")
return "\n\n".join(lines) or "No results."
if __name__ == "__main__":
mcp.run() # stdio transportDlaczego narzędzie nazywa się google_search, a nie web_search?
Kilku klientów ma już narzędzie o nazwie web_search, które korzysta z własnego dostawcy. Odmienna nazwa pozwala uniknąć kolizji i mówi modelowi, co otrzymuje: wyniki wyszukiwania Google dla wybranego przez siebie kraju i języka. Docstring to opis, który czyta model, więc podaje parametry i koszt wywołania.
Jak dodać go do Claude Desktop?
Otwórz plik konfiguracyjny claude_desktop_config.json: w macOS znajduje się w ~/Library/Application Support/Claude/, w Windows w %APPDATA%\Claude\. Dodaj serwer w sekcji mcpServers, z bezwzględną ścieżką do skryptu i swoim kluczem w env, a następnie uruchom ponownie Claude Desktop.
Jeśli python nie ma na ścieżce widocznej dla Claude Desktop, użyj pełnej ścieżki do interpretera, na przykład tej wewnątrz Twojego środowiska wirtualnego.
{
"mcpServers": {
"serpcrypto-search": {
"command": "python",
"args": ["/absolute/path/to/serpcrypto_mcp.py"],
"env": {
"SERPCRYPTO_API_KEY": "paste-your-key-here"
}
}
}
}Jak dodać go do Claude Code i Cursor?
W Claude Code zarejestruj go z terminala poleceniem claude mcp add; -e ustawia zmienną środowiskową, a wszystko po -- to polecenie do uruchomienia. W Cursor umieść ten sam blok mcpServers co powyżej w ~/.cursor/mcp.json dla każdego projektu albo w .cursor/mcp.json w obrębie jednego projektu.
Inne klienty MCP, które uruchamiają serwery stdio, przyjmują te same trzy rzeczy: polecenie, jego argumenty i zmienne środowiskowe. Strona OpenClaw pokazuje polecenia dla OpenClaw.
claude mcp add serpcrypto-search \
-e SERPCRYPTO_API_KEY=paste-your-key-here \
-- python /absolute/path/to/serpcrypto_mcp.pyJak bezpiecznie przechowywać klucz API?
Trzymaj go w bloku env konfiguracji klienta lub w profilu powłoki, nigdy wewnątrz serpcrypto_mcp.py. Dzięki temu skrypt można udostępniać lub zatwierdzać w repozytorium bez klucza. Jeśli klucz wycieknie, unieważnij go w panelu i utwórz nowy: Klucze API, które możesz tworzyć i unieważniać w dowolnym momencie z panelu.
Daj serwerowi MCP osobny klucz. Zużycie na klucz pokaże wtedy, ile wyszukiwań wykonuje asystent, oddzielnie od Twoich skryptów.
Ile kredytów zużyje asystent?
Jeden za każde udane wywołanie narzędzia. Czat, w którym model wyszukuje trzy razy, kosztuje trzy kredyty. Przy pakiecie 25 000 wyszukiwań za 18,75 USD to tysiące wspomaganych pytań, a Prepaid kredyty wyszukiwania nigdy nie wygasają: niewykorzystane wyszukiwania pozostają na Twoim koncie, dopóki ich nie wykorzystasz.
Aby ograniczyć zużycie, obniż num_results (nie zmienia to ceny, ale skraca odpowiedzi) i poleć modelowi w instrukcjach, by wyszukiwał tylko wtedy, gdy potrzebuje świeżych faktów.
Pytania o MCP
Czy serwer działa ze zdalnymi klientami MCP?
Ta wersja korzysta ze stdio, więc klient musi uruchamiać go na tej samej maszynie. FastMCP może też serwować przez HTTP; jeśli wystawisz go w sieci, postaw przed nim uwierzytelnianie, bo każdy, kto do niego dotrze, wydaje Twoje kredyty.
Czy narzędzie może zamiast tego przeszukiwać Bing lub Google News?
Tak. Dodaj argument engine lub drugie narzędzie, które wysyła engine=bing albo engine=google_news w params. Każda wyszukiwarka kosztuje tyle samo: 1 kredyt za wyszukiwanie.
Dlaczego klient zgłasza, że narzędzie zawiodło?
Uruchom skrypt ręcznie tym samym Pythonem, aby zobaczyć błędy. Typowe przyczyny to brakujący pakiet mcp lub httpx, zła ścieżka w konfiguracji albo pusty SERPCRYPTO_API_KEY, przez co API odpowiada 401.
Czy do klucza API potrzebuję karty kredytowej lub KYC?
Nie. SerpCrypto sprzedaje przedpłacone kredyty opłacane w BTC, USDT, USDC, ETH, SOL, LTC, bez dowodu, bez selfie i bez dokumentów. Logowanie numerem konta; email jest opcjonalny.