# Koble AI-assistenter til MyFoodNotes (MCP og HTTP API) MyFoodNotes har en egen MCP-server (Model Context Protocol) på ``` https://myfoodnotes.com/mcp ``` Den bruker transporten «Streamable HTTP». Du trenger ikke installere noe eller kjøre en egen server. ## Hva assistenten kan gjøre | Verktøy | Hva det gjør | | --- | --- | | `save_recipe` | Lagrer en ny oppskrift (tittel, beskrivelse, ingredienser, fremgangsmåte, porsjoner, tider, tagger, bilde- og kilde-URL) | | `search_recipes` | Søker i dine egne oppskrifter | | `get_recipe` | Henter én oppskrift med ingredienser og tagger | | `list_recipes` | Lister oppskriftene dine, nyeste først | Assistenten ser bare dine egne oppskrifter. Den kan ikke endre eller slette oppskrifter, og den ser ikke handlelister, ukeplan eller familiemedlemmer. ## Innlogging - **OAuth (anbefalt):** assistenten åpner MyFoodNotes, du logger inn og godkjenner. Ingen nøkkel å kopiere. Støtter OAuth 2.1 med PKCE og dynamisk klientregistrering. Oppdagelse: `/.well-known/oauth-protected-resource` og `/.well-known/oauth-authorization-server`. - **API-nøkkel:** for klienter uten OAuth, skript og xAI API. Lag en nøkkel under **Profil → API-nøkler og AI-tilkoblinger**, og send den som `Authorization: Bearer mfn_…`. Nøkkelen vises bare én gang. Du kan velge utløp (aldri, 30, 90 eller 365 dager) og trekke den tilbake når som helst. Tilkoblinger via OAuth vises under «Tilkoblede AI-assistenter» på profilen. Der kan du koble fra en assistent. ## Oppsett per assistent Ferdig oppsett med kopierknapp finnes på hjelpesiden: https://myfoodnotes.com/hjelp/ai-tilkobling ### ChatGPT Innstillinger → Apper og koblinger → Avansert → slå på utviklermodus. Opprett en ny kobling med URL `https://myfoodnotes.com/mcp` og autentisering OAuth. Logg inn og godkjenn. Krever utviklermodus, som bare finnes på betalte ChatGPT-abonnement (Plus, Pro, Business, Enterprise, Edu), ikke gratisplanen. ### Claude (claude.ai og Claude Desktop) Innstillinger → Koblinger → Legg til egendefinert kobling. URL `https://myfoodnotes.com/mcp`. Logg inn og godkjenn. ### Claude Code ``` claude mcp add --transport http myfoodnotes https://myfoodnotes.com/mcp ``` Kjør deretter `/mcp` i Claude Code for å logge inn. ### Cursor `~/.cursor/mcp.json`: ```json { "mcpServers": { "myfoodnotes": { "url": "https://myfoodnotes.com/mcp" } } } ``` Cursor ber deg logge inn. Alternativt kan du legge til `"headers": { "Authorization": "Bearer mfn_DIN_NØKKEL" }`. ### VS Code (Copilot) `.vscode/mcp.json`: ```json { "servers": { "myfoodnotes": { "type": "http", "url": "https://myfoodnotes.com/mcp" } } } ``` ### Grok Grok CLI: `grok mcp add --transport http myfoodnotes https://myfoodnotes.com/mcp` (med API-nøkkel som header om klienten ikke støtter OAuth). xAI API (Remote MCP Tools): ```json { "type": "mcp", "server_url": "https://myfoodnotes.com/mcp", "server_label": "myfoodnotes", "authorization": "Bearer mfn_DIN_NØKKEL" } ``` ### Andre klienter (bare stdio) ```json { "mcpServers": { "myfoodnotes": { "command": "npx", "args": ["-y", "mcp-remote", "https://myfoodnotes.com/mcp", "--header", "Authorization: Bearer mfn_DIN_NØKKEL"] } } } ``` ## Pro AI-tilkobling er en Pro-funksjon. Når Pro-krav er slått på, svarer verktøyene med en melding om å oppgradere, og HTTP API svarer `402` med `code: "TIER_LIMIT_API"`. ## HTTP API Base: `https://myfoodnotes.com/.netlify/functions/api-recipe`. Auth: `Authorization: Bearer mfn_…`. | Metode | Forespørsel | Svar | | --- | --- | --- | | `POST` | JSON-oppskrift i body | `201` med `recipe_id` (og `ignored_tags` om noen tagger ble hoppet over) | | `GET` | `?id=` | Én oppskrift | | `GET` | `?q=&limit=<1-50>` | Søk | | `GET` | `?page=&limit=<1-100>` | Liste | Eksempel: ```bash curl -X POST https://myfoodnotes.com/.netlify/functions/api-recipe \ -H "Authorization: Bearer mfn_DIN_NØKKEL" \ -H "Content-Type: application/json" \ -d '{"title":"Pannekaker","instructions":"Rør sammen og stek.","ingredients":[{"name":"mel","amount":3,"unit":"dl"}],"servings":4,"tags":["frokost"]}' ``` Felt: `title` (påkrevd), `instructions` (påkrevd), `description`, `ingredients` (`name`, `amount`, `unit`), `servings`, `prep_time`, `cook_time` (minutter), `tags`, `image_url`, `source_url`. ### Grenser - Body maks 100 KB. Tittel 200 tegn, beskrivelse 2 000, fremgangsmåte 20 000. - Maks 100 ingredienser (navn 200, enhet 30 tegn) og 20 tagger (50 tegn). - `image_url` og `source_url` må være `http(s)`, maks 2 048 tegn. - 60 forespørsler per minutt per nøkkel. Deretter `429` med `Retry-After`. - Maks 10 aktive API-nøkler per konto. ### Feilkoder | Kode | Betyr | | --- | --- | | `400` | Ugyldig input (feilmelding forklarer hva) | | `401` | Mangler, ugyldig, utløpt eller tilbaketrukket nøkkel | | `402` | Krever Pro (`TIER_LIMIT_API`) eller grensen for oppskrifter er nådd | | `404` | Oppskriften finnes ikke eller er ikke din | | `413` | For stor forespørsel | | `429` | For mange forespørsler, prøv igjen etter `Retry-After` sekunder | ## Sikkerhet - Nøkler lagres bare som SHA-256-hash. Del aldri nøkkelen, og legg den ikke i offentlige repoer. - En nøkkel gir lese- og lagretilgang til dine egne oppskrifter, ikke mer. - Trekk tilbake nøkler og koble fra assistenter du ikke bruker. ## Feilsøking - **401:** sjekk at nøkkelen er riktig og ikke utløpt, eller koble til på nytt. - **Verktøyene vises ikke:** start klienten på nytt etter at du har endret oppsettet. - **Pro-melding:** oppgrader på https://myfoodnotes.com/profile. - **Test:** bruk «Test tilkobling» på profilen.