M menugo.al
🔗 Integrimet

⚡ MCP API Manuali (për AI/GPT)

Manuali i plotë i protokollit, skemat e mjeteve dhe autentifikimi për integrimet e botëve

Dokumentacioni

Serveri MCP menugo.al — Udhëzues për integrimin e AI / GPT

Ky dokument është i destinuar për asistentët AI, bot-et GPT dhe integrimet automatike. Përmban detaje të sakta të protokollit, skemat e mjeteve dhe fluksin e autentifikimit.

Informacioni i serverit

Vetia Vlera
Emri i serverit meni-user-data-mcp
Protokolli MCP 2024-11-05 (Streamable HTTP)
Transporti HTTP POST (stateless)
URL bazë https://api.menugo.al/mcp
Content-Type application/json
Formati JSON-RPC 2.0

Autentifikimi

Të gjitha thirrjet e instrumenteve kërkojnë header-in Authorization.

Opsioni 1: Çelësi API MCP i përdoruesit (rekomandohet)

Authorization: Bearer mk_XXXXXXXXXXXX...  (64 hex-символа)

Është i lidhur me një përdorues specifik. Boti sheh vetëm të dhënat e këtij përdoruesi.

Opsioni 2: Token JWT Cognito

Authorization: Bearer eyJraWQi...  (JWT id_token)

Përftohet përmes POST /auth/login. Skadon pas 1 ore.

Opsioni 3: Admin API Key

Authorization: Bearer <admin_api_key>

Akses i plotë në të gjitha të dhënat. Vetëm për administratorët.

Marrja e tokenit JWT

POST https://api.menugo.al/mcp/auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "password123"
}

Përgjigjja:

{
  "idToken": "eyJraWQi...",
  "accessToken": "eyJraWQi...",
  "refreshToken": "eyJjdHki...",
  "expiresIn": 3600,
  "tokenType": "Bearer"
}

Protokolli MCP

Inicializimi

POST https://api.menugo.al/mcp
Authorization: Bearer <token>
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {},
    "clientInfo": { "name": "my-bot", "version": "1.0" }
  }
}

Lista e instrumenteve

{ "jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {} }

Thirrja e instrumentit

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "имя_инструмента",
    "arguments": { ... }
  }
}

Përgjigjja (sukses): result.content[0].text — string JSON me të dhëna.
Përgjigjja (gabim): result.isError: true, result.content[0].text — teksti i gabimit.


Endpoint-et

Metoda Shtegu Autorizimi Përshkrimi
GET / Jo Informacion mbi serverin + lista e mjeteve
POST / Po MCP JSON-RPC
GET /health Jo Kontrolli → {"status":"ok"}
POST /auth/login Jo Hyrja → Token-at JWT
GET /api/keys Vetëm JWT Lista e çelësave API
POST /api/keys Vetëm JWT Krijo çelës API
DELETE /api/keys/{keyId} Vetëm JWT Revoko çelësin API

Të gjitha shtigjet janë relative ndaj https://api.menugo.al/mcp.


Udhëzuesi i plotë i mjeteve

Nivelet e aksesit

  • USER — E disponueshme për të gjithë përdoruesit e autorizuar (të dhënat për llogarinë e tyre)
  • ADMIN — Vetëm administratorët (akses i plotë)

Vetëshërbimi

Mjeti Aksesi Argumentet
whoami USER asnjë
my_profile USER asnjë
update_my_profile USER fields (object, i detyrueshëm)
my_locations USER asnjë
my_orders USER limit (int, opsional)
my_images USER type (enum: all, menu-photos, category-photos, locations, opsional)

Profilet e përdoruesve

Mjeti Aksesi Argumentet
list_users ADMIN limit (int, opsional)
get_user_profile USER/ADMIN userId (string, i detyrueshëm)
update_user_profile ADMIN userId (string, i detyrueshëm), fields (object, i detyrueshëm)
search_user_by_email ADMIN email (string, i detyrueshëm)

Lokacionet

Mjeti Aksesi Argumentet
list_locations USER/ADMIN userId (string, i detyrueshëm)
get_location_profile USER/ADMIN locationId (string, i detyrueshëm), userId (string, opsional — përcaktim automatik për përdoruesit e thjeshtë)
update_location_profile USER/ADMIN locationId (string, i detyrueshëm), fields (object, i detyrueshëm), userId (string, opsional)
get_location_menu USER/ADMIN locationId (string, i detyrueshëm), language (string, opsional), userId (string, opsional)

update_location_profile — fushat që mund të përditësohen: displayName, phone, address, facebookUrl, instagramUrl, status, settings, workingHours. Sinkronizohet automatikisht me CDN. Për të ndryshuar domenin, përdorni set_location_domain.

Menu

Mjeti Aksesi Argumentet
list_menu_items USER/ADMIN categoryId (string, opsional — për të dhëna të plota), userId (string, opsional)
get_menu_item USER/ADMIN itemId (string, i detyrueshëm), categoryId (string, opsional — kërkim automatik), userId (string, opsional)
update_menu_item USER/ADMIN itemId (string, i detyrueshëm), fields (object, i detyrueshëm), categoryId (string, opsional), userId (string, opsional)
create_menu_item USER/ADMIN locationId, categoryId, itemId, name (string, i detyrueshëm), price (number, i detyrueshëm), nameTranslations (object, opsional), description (string, opsional), status (enum, opsional), sortOrder (number, opsional), userId (string, opsional)
create_menu_category USER/ADMIN locationId, categoryId, name (string, i detyrueshëm), nameTranslations (object, opsional), status (enum, opsional), sortOrder (number, opsional), userId (string, opsional)
update_menu_category USER/ADMIN locationId, categoryId (string, i detyrueshëm), name (string, opsional), nameTranslations (object, opsional), status (enum, opsional), sortOrder (number, opsional), userId (string, opsional)
move_menu_item USER/ADMIN locationId, itemId, fromCategoryId, toCategoryId (string, i detyrueshëm), userId (string, opsional)
merge_categories USER/ADMIN locationId, sourceCategoryId, targetCategoryId (string, i detyrueshëm), keepSourceName (bool, opsional), userId (string, opsional)
delete_menu_category USER/ADMIN locationId, categoryId (string, i detyrueshëm), force (bool, opsional — fshi bashkë me artikujt), userId (string, opsional)
check_translations USER/ADMIN locationId (string, i detyrueshëm), languages (array, opsional — lista e gjuhëve për kontroll), userId (string, opsional)

check_translations — skanon të gjitha kategoritë dhe artikujt e menusë të lokacionit, gjen përkthimet që mungojnë në gjuhët e aktivizuara dhe kthen një raport të detajuar sipas gjuhëve me listën e kategorive dhe artikujve pa përkthime.

update_menu_item — fushat që mund të përditësohen: name, description, price, status, tags, variantGroups, addons, nameTranslations, descriptionTranslations, locationPrices, sortOrder. Sinkronizohet automatikisht me CDN.

Porositë

Mjeti Aksesi Argumentet
list_orders USER/ADMIN userId (opsional), domain (opsional), limit (int, opsional)
get_order USER/ADMIN orderId (string, i detyrueshëm), domain (string, opsional), locationId (string, opsional)

Domenet

Mjeti Aksesi Argumentet
check_domain_availability USER domainName (string, i detyrueshëm), currentDomainName (string, opsional)
set_location_domain USER/ADMIN locationId (string, i detyrueshëm), domainName (string, i detyrueshëm)
resolve_domain USER domain (string, i detyrueshëm)
list_domains ADMIN prefix (string, opsional)

CDN

Mjeti Aksesi Argumentet
get_cdn_profile USER domain (string, i detyrueshëm)
get_cdn_menu USER domain (string, i detyrueshëm), language (string, i detyrueshëm)
list_cdn_files USER domain (string, i detyrueshëm)
invalidate_cdn_cache ADMIN paths (string[], i detyrueshëm)

Imazhet

Mjeti Aksesi Argumentet
list_user_images USER/ADMIN userId (string, i detyrueshëm), type (enum, opsional)
get_image_upload_url USER type (enum: menu-photos, category-photos, locations, i detyrueshëm), itemId (string, opsional), locationId (string, opsional), filename (string, opsional), contentType (enum, opsional)
delete_image USER/ADMIN key (string, i detyrueshëm — çelësi i plotë S3 në i.menugo.al)

get_image_upload_url — kthen presigned URL (15 min). Pas ngarkimit, pipeline gjeneron automatikisht miniaturat (thumbnails) dhe sinkronizohet me CDN.

S3 (ruajtja)

Mjeti Aksesi Argumentet
s3_read USER/ADMIN bucket (enum), key (string) — i detyrueshëm
s3_write ADMIN bucket (enum: data.meni, cdn.menugo.al, o.menugo.al), key (string), data (object) — i detyrueshëm
s3_list USER/ADMIN bucket (enum), prefix (string) — i detyrueshëm, limit (int, opsional)
s3_delete ADMIN bucket (enum: data.meni, cdn.menugo.al, o.menugo.al), key (string) — i detyrueshëm

Enum për bucket: data.meni, cdn.menugo.al, i.menugo.al, o.menugo.al

Cognito

Mjeti Aksesi Argumentet
cognito_list_users ADMIN filter (string, opsional), limit (int, opsional)
cognito_get_user ADMIN username (string, i detyrueshëm)

Sistemi

Mjeti Aksesi Argumentet
get_system_stats ADMIN asnjë

Kontrolli i aksesit

  1. Përdoruesit e zakonshëm — vetëm të dhënat e tyre (sipas userId)
  2. Aksesi S3 është i kufizuar nga prefiksi users/{userId}/
  3. Për veglat e lokacioneve/menysë, userId përcaktohet automatikisht për përdoruesit e zakonshëm (vetëm administratorët e specifikojnë atë)
  4. Admin-only: list_users, search_user_by_email, update_user_profile, list_domains, invalidate_cdn_cache, s3_write, s3_delete, cognito_list_users, cognito_get_user, get_system_stats
  5. Menaxhimi i çelësave (/api/keys) kërkon Cognito JWT

Kodet e gabimeve

HTTP Kuptimi
200 Sukses (kontrolloni result.isError për gabimet e instrumenteve)
400 JSON i pavlefshëm ose mungon metoda
401 Mungon ose autentifikim i pavlefshëm
405 Metodë e gabuar HTTP
Gabimi i instrumentit Kuptimi
🔒 admin access required Kërkohet roli i adminit
🔒 access denied Përpjekje për qasje në të dhënat e të tjerëve
missing required argument: <name> Parametri i detyrueshëm nuk është dërguar
unknown tool: <name> Instrument i panjohur

Shembull sesioni

→ POST /  {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"bot","version":"1.0"}}}
← {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"serverInfo":{"name":"meni-user-data-mcp","version":"1.0.0"}}}

→ POST /  {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"whoami","arguments":{}}}
← {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"{\"userId\":\"abc-123\",\"email\":\"user@example.com\"}"}]}}

Konfigurimi i klientit

Claude Desktop

{
  "mcpServers": {
    "meni": {
      "url": "https://api.menugo.al/mcp",
      "headers": { "Authorization": "Bearer <API_KEY>" }
    }
  }
}

cURL

curl -X POST https://api.menugo.al/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <API_KEY>" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"whoami","arguments":{}}}'