6 min czytaniaFunkcje

Serwer MCP Elido dla Claude Desktop, Cursor i Claude Code

Uruchom serwer MCP Elido z monorepo, podłącz go do Claude Desktop, Cursor i Claude Code i sprawdź, które z pięciu narzędzi faktycznie dziś działają.

Marius Voß
DevRel · edge infra

Serwer MCP Elido to mały proces Node, który pozwala Claude Desktop, Cursor lub Claude Code tworzyć krótkie linki, listować je i czytać szeregi czasowe kliknięć z poziomu czatu. Mieszka w monorepo w packages/mcp-server, mówi MCP przez stdio i rozmawia z tym samym REST API co wszystko inne.

Jedna poprawka na początek, bo wcześniejsza wersja tego przewodnika się myliła: pakietu nie ma na npm i nie jest jeszcze publiczny. Na dzień 2026-11-11 npm view @elido/mcp-server zwraca 404; publiczne wydanie wkrótce. Do tego czasu uruchamiasz go z lokalnego buildu. Wszystko poniżej sprawdzono z kodem w packages/mcp-server i services/api-core.

Czym jest MCP

Model Context Protocol to otwarty standard pozwalający klientowi AI wywoływać narzędzia żyjące poza modelem. Klient uruchamia serwer lub łączy się z nim, prosi o listę narzędzi i wysyła wywołania narzędzi jako wiadomości JSON-RPC. Serwer wykonuje pracę i zwraca tekst, który czyta model. Model nigdy nie trzyma Twojego klucza API; trzyma go serwer.

Specyfikacja definiuje dwa transporty, stdio dla procesów lokalnych i Streamable HTTP dla zdalnych (specyfikacja MCP, najnowsza rewizja 2026-07-28, dostęp 2026-10-25). Serwer Elido implementuje tylko stdio.

Diagram architektury: Claude Desktop i Cursor łączą się przez transport stdio JSON-RPC z lokalnym serwerem MCP Elido, który wykonuje uwierzytelnione żądania Bearer do REST API Elido, a klucz API zostaje wewnątrz serwera, więc model go nigdy nie widzi Strona integracji Elido z Claude, ChatGPT, Cursor, Claude Code, Gemini i innymi konektorami wraz z przewodnikami konfiguracji

Co robi serwer

Jest napisany ręcznie, bez oficjalnego @modelcontextprotocol/sdk, aby pozostać bez zależności. W src/index.ts odpowiada na cztery rzeczy: initialize (raportując wersję protokołu 2024-11-05), tools/list, tools/call i powiadomienie notifications/initialized. Wszystko inne dostaje błąd "method not found". Nie ma zasobów, promptów ani handlerów ping.

Każde wywołanie narzędzia staje się uwierzytelnionym żądaniem REST do ELIDO_API_BASE (domyślnie https://api.elido.app) z Authorization: Bearer <key> i nagłówkiem User-Agent: elido-mcp-server/0.1.0. Nieudane wywołania wracają jako błąd zawierający status HTTP i pierwsze 400 znaków odpowiedzi.

NarzędzieŻądanie, które wysyłaStatus
create_linkPOST /v1/workspaces/{id}/linksDziała; wybiera pierwszą domenę, jeśli żadnej nie podano
list_linksGET /v1/workspaces/{id}/links?limit&offsetDziała; limit od 1 do 100
query_analyticsGET /v1/workspaces/{id}/analytics/timeseriesDziała; zwraca {"items":[{"ts","count"}]}
generate_qrPOST /v1/workspaces/{id}/qrNie znaleziono pasującej trasy w api-core
list_workspacesGET /v1/workspacesDziała; listuje przestrzenie robocze, do których należy wywołujący

O generate_qr: api-core udostępnia publiczne POST /v1/qr/generate i projekt per link pod GET /v1/workspaces/{id}/links/{link_id}/qr, ale nic pod ścieżką, którą wywołuje narzędzie. Dopóki to nie zostanie uzgodnione, nie budowałbym na tym przepływu pracy. Jest w backlogu.

Zbuduj go i zdobądź klucz API

Monorepo jest prywatne, więc poniższe kroki dotyczą sytuacji, gdy masz kod źródłowy pakietu (publiczne wydanie wkrótce). Zbuduj pakiet:

pnpm install
pnpm --filter @elido/mcp-server build

To tworzy packages/mcp-server/dist/index.js. Potrzebujesz Node 20 lub nowszego (engines w jego package.json).

Dla klucza otwórz Dashboard, potem API keys (/dashboard/api-keys), nazwij klucz od agenta i wybierz rolę. Formularz oferuje viewer, editor i admin, a editor jest domyślny. Klucze Elido niosą rolę w przestrzeni roboczej, a nie zakresy per narzędzie. Klucz viewer to opcja tylko do odczytu: może listować i czytać analitykę, a API odrzuca create_link. Ustaw datę wygaśnięcia, jeśli klucz jest na próbę. Skopiuj klucz, gdy jest pokazany, i trzymaj go poza kontrolą wersji.

Konfiguracja Claude Desktop

Claude Desktop czyta claude_desktop_config.json. Lokalizację konfiguracji i kartę ustawień Developer opisano w dokumentacji MCP (łączenie serwerów lokalnych, dostęp 2026-10-25). W macOS plik to ~/Library/Application Support/Claude/claude_desktop_config.json, a w Windows %APPDATA%\Claude\claude_desktop_config.json.

{
  "mcpServers": {
    "elido": {
      "command": "node",
      "args": [
        "/absolute/path/to/url-shortener/packages/mcp-server/dist/index.js"
      ],
      "env": {
        "ELIDO_API_KEY": "elido_your_key_here",
        "ELIDO_WORKSPACE_ID": "42"
      }
    }
  }
}

Użyj ścieżki bezwzględnej. ELIDO_WORKSPACE_ID jest opcjonalne tylko wtedy, gdy klucz widzi dokładnie jedną przestrzeń roboczą; serwer wywołuje wtedy raz GET /v1/workspaces i buforuje id. Przy dwóch lub więcej przestrzeniach rzuca błąd z poleceniem ustawienia zmiennej, więc ustaw ją od początku.

Po zapisaniu zrestartuj Claude Desktop. Jeśli serwer się nie pojawia, najpierw uruchom to samo polecenie w terminalu. Brak klucza nie zatrzymuje procesu, wypisuje ostrzeżenie na stderr, a każde wywołanie narzędzia potem zawodzi.

Konfiguracja Cursor i Claude Code

Cursor czyta ten sam kształt mcpServers z .cursor/mcp.json w projekcie lub z ~/.cursor/mcp.json dla wszystkich projektów (dokumentacja MCP Cursor, dostęp 2026-10-25). Wklej powyższy blok, dodaj plik do .gitignore, bo zawiera aktywny klucz, i sprawdź serwer w ustawieniach MCP Cursora.

Claude Code dodaje serwer stdio z wiersza poleceń (dokumentacja MCP Claude Code, dostęp 2026-10-25):

claude mcp add --env ELIDO_API_KEY=elido_your_key_here --env ELIDO_WORKSPACE_ID=42 \
  --transport stdio elido -- node /absolute/path/to/packages/mcp-server/dist/index.js

Klucze w pliku konfiguracyjnym są jawnym tekstem. Na współdzielonej maszynie daj każdej osobie własny klucz, aby ślad audytu coś znaczył.

Dwie sesje z prawdziwymi kształtami żądań

To ilustracyjne rozmowy, a nie nagrania, a liczby są zmyślone. Argumenty narzędzi i pola wyniku zgadzają się z kodem.

Skróć link kampanii. Prosisz Claude o skrócenie https://shop.example.com/spring ze slugiem spring i tagiem spring. Wywołuje create_link z destination_url, slug, title i tags. Ponieważ nie przekazano domain_id, serwer najpierw pobiera GET /v1/workspaces/{id}/domains i używa pierwszej zwróconej. Jeśli Twoja przestrzeń ma kilka domen, przekaż domain_id sam. API odpowiada rekordem linku z short_url, a Claude wstawia go do szkicu. Jeśli slug jest zajęty, API zwraca 409 "slug already exists for this domain", a Claude może wybrać inny.

Pełny obieg create_link: agent LLM żąda create_link z adresem URL, slugiem i tagami, narzędzie MCP tłumaczy wywołanie i rozwiązuje przestrzeń roboczą, api-core obsługuje POST i zapisuje rekord linku, a rekord krótkiego linku wraca, więc agent wstawia krótki URL do czatu

Odczytaj kliknięcia z ostatniego tygodnia. Prosisz o dzienne kliknięcia jednego linku w czasie berlińskim. Claude wywołuje query_analytics z link_id, from, to, interval: "day" i tz: "Europe/Berlin". Daty mają format YYYY-MM-DD, a API odrzuca zakres, w którym from nie jest przed to, więc jako to podaj dzień po swoim ostatnim dniu. Jeśli je pominiesz, zakres to ostatnie 30 dni. Wynik to {"items": [{"ts": "...", "count": 312}, ...]}. Nie ma pola total, więc poproś Claude o zsumowanie liczb. Tylko kliknięcia: przez to narzędzie nie przychodzi podział na kraje, urządzenia ani referrery.

Bezpieczeństwo i limity

Role, nie zakresy. Wybierz najniższą rolę, która wykonuje zadanie. Viewer dla agentów raportujących, editor dla tych, które tworzą linki, admin tylko ze szczególnego powodu.

Co opuszcza Twoją maszynę. Serwer wysyła żądania do Twojej bazy API Elido i nigdzie indziej. To, co Twój klient AI wysyła do własnego dostawcy, reguluje polityka tego dostawcy.

Ślad audytu. Utworzenie klucza emituje zdarzenie audytu api_key.created, a utworzenie linku link.created. Nie zweryfikowałem, jak zdarzenie jest przypisywane do konkretnego klucza, więc nie polegaj na dzienniku audytu przy odróżnianiu dwóch agentów. Daj każdemu własny klucz i obserwuj listę kluczy.

Limity zapytań. Wywołania liczą się do limitu przestrzeni roboczej: 10 żądań na sekundę w Free, 30 w Pro i 100 w Business, z zapasem serii 20, 60 i 200 (services/api-core/internal/httpserver/server.go). Agent tworzący setki linków powinien użyć POST /v1/workspaces/{id}/links/bulk przez API, jak w imporcie zbiorczym z Arkusza Google.

Zdalny MCP. To byłby hostowany endpoint z OAuth, dzięki któremu łącznik Claude mógłby dotrzeć do Elido bez lokalnego procesu. Jest planowany, nie zbudowany, a katalog integracji w panelu wymienia tylko serwer lokalny. Na razie używaj jego.

Dryf protokołu. Serwer deklaruje 2024-11-05, podczas gdy aktualna rewizja specyfikacji to 2026-07-28. Nie testowaliśmy go z każdym wydaniem klienta, więc po aktualizacji sprawdź status serwera w swoim kliencie.

Co dalej

Powyższe luki są w backlogu: opublikować pakiet, naprawić generate_qr, dodać Streamable HTTP i zdalny endpoint, dodać więcej narzędzi (aktualizacja, usuwanie, podziały geograficzne) i atrybucję audytu per klucz. Inną drogę do tego samego pomysłu agenta opisuje przewodnik po Gemini i przewodnik po ChatGPT; o higienie kluczy mówi uprawnienia kluczy API dla narzędzi linków.

Powiązane na blogu

Najczęściej zadawane pytania

Czy serwer MCP Elido jest na npm?

Jeszcze nie. Pakietu nie ma na npm (`npm view @elido/mcp-server` zwraca 404 na dzień 2026-11-11), więc `npx -y @elido/mcp-server` zawodzi. Publiczne wydanie wkrótce. Do tego czasu serwer działa tylko z lokalnego buildu pakietu (packages/mcp-server w naszym prywatnym monorepo), a klienta MCP kierujesz na skompilowany plik dist/index.js.

Jakie narzędzia udostępnia serwer MCP Elido?

Pięć: create_link, list_links, query_analytics, generate_qr i list_workspaces. Pierwsze cztery potrzebują przestrzeni roboczej, która pochodzi z ELIDO_WORKSPACE_ID albo z tego, że klucz widzi dokładnie jedną przestrzeń. generate_qr wywołuje trasę, której nie znaleźliśmy w api-core, więc traktuj je jako zawodne, dopóki nie zostanie naprawione.

Jak zrobić klucz MCP tylko do odczytu?

Utwórz klucz API z rolą viewer w panelu. Klucze niosą rolę w przestrzeni roboczej (viewer, editor lub admin, domyślnie editor), a nie zakresy per narzędzie. Klucz viewer może listować linki i czytać analitykę, a create_link wraca jako błąd uprawnień z API.

Czy Elido ma zdalny adres URL MCP dla łączników Claude?

Jeszcze nie. Nie ma hostowanego endpointu MCP z OAuth, zdalny serwer jest planowany. Używaj lokalnego serwera stdio, który udostępnia pięć narzędzi wymienionych wyżej.

Jakiego transportu MCP i wersji protokołu używa serwer?

Tylko stdio, z JSON-RPC 2.0 rozdzielanym liniami. Na initialize odpowiada wersją protokołu 2024-11-05 i obsługuje tools/list oraz tools/call. Aktualna specyfikacja MCP definiuje także transport Streamable HTTP, którego ten serwer nie implementuje.

Czy wywołania narzędzi liczą się do mojego limitu zapytań?

Tak. Serwer jest zwykłym klientem API, więc obowiązuje limit na przestrzeń roboczą: 10 żądań na sekundę w Free, 30 w Pro i 100 w Business, z seriami 20, 60 i 200. Dla setek linków użyj endpointu tworzenia zbiorczego zamiast jednego wywołania narzędzia na każdy.

Wypróbuj Elido

Wklej URL, otrzymaj krótki link

Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.

Bez rejestracji. Załóż darmowe konto i korzystaj z 50 linków miesięcznie.

Wypróbuj Elido

Skracarka URL hostowana w UE: własne domeny, głęboka analityka i otwarte API. Darmowy plan - bez karty kredytowej.

Tagi
elido mcp server
model context protocol
claude desktop mcp
cursor mcp
claude code mcp
url shortener api

Czytaj dalej