Munin i Cursor.
Supporttråden, der meldte fejlen, og filen, der indeholder den, har aldrig været i samme vindue. Én `mcp.json`-post, og det er de — med Cursors værktøjsgodkendelse præcis der, hvor Munins allerede står.

Hver eneste udvikler har danset denne dans. En fejlrapport lander i supportværktøjet. Du læser den der, oversætter den til dine egne ord, går til editoren, retter den, og går så tilbage og oversætter rettelsen til noget, en kunde kan læse. To systemer, to ordforråd og et menneske i midten, hvis job er at skrive om. Rettelsen tager ti minutter. Rundturen tager en time.
Hvad giver Munin i Cursor dig egentlig?
Din kundeplatform som værktøjer inde i editoren. Munin serverer mere end 200 MCP-værktøjer på ét endpoint, så Cursors agent kan læse supporttråden, der meldte en fejl, slå op, hvem der meldte den, søge i din videnbase efter det eksisterende svar, og skrive svaret — i det samme vindue, hvor den læser stack tracen.
Det nyttige er ikke bekvemmeligheden. Det er, at agenten har kundens nøjagtige ord og dit kildetræ i én kontekst på samme tid.
Hvordan tilføjer du Munin til Cursor?
Én post i mcp.json. Cursor læser .cursor/mcp.json i et projekt til projektafgrænsede servere, eller ~/.cursor/mcp.json i din hjemmemappe til servere, du vil have overalt. Lav en adminnøgle under Indstillinger → API-nøgler først; den vises én gang.
{
"mcpServers": {
"munin": {
"url": "https://mcp.getmunin.com",
"headers": {
"Authorization": "Bearer ${env:MUNIN_API_KEY}"
}
}
}
}Den ${env:MUNIN_API_KEY} er ikke pynt. Cursor opløser variabler i command, args, env, url og headers, så du kan holde legitimationen i din skalprofil i stedet for at tjekke den ind. Gør det — .cursor/mcp.json er en fil i dit repo, og en indsat adminnøgle er en indsat adminnøgle.
Driver du selv i stedet? Peg den mod http://localhost:3001/mcp. Munin understøtter også afgrænset OAuth, og Cursor understøtter OAuth til servere, der kræver det, hvilket er det bedre valg til alt, et menneske styrer.
Når den ikke forbinder, ligger loggene i Output-panelet (Cmd+Shift+U, eller Ctrl+Shift+U på Windows og Linux) under MCP Logs — de viser initialisering, værktøjskald og autentificeringsfejl. Og du kan slå serveren fra uden at slette den i Cursors MCP-indstillinger (Customize → MCP), hvilket er værd at vide, når 200-og-noget værktøjer er mere, end du vil have i en session.
Hvordan ser sløjfen ud i praksis?
Én søgning, ét opslag, én rettelse, ét svar — alt sammen inde i editoren. Agenten finder supportsamtalen ud fra de ord, kunden faktisk brugte, finder ud af, hvem der meldte den, og hvem andre der ramte det samme, retter koden med klagen og kildetræet i én kontekst, og svarer så i kundens egen tråd og lægger forklaringen ind som et udkast i videnbasen.
Fire trin, der før var fire faner:
- 01Læs rapporten i editoren.
conv_search_messagesfinder tråden ud fra den vending, kunden brugte — ikke den, du ville have brugt. Den forskel er som regel der, hvor fejlen gemmer sig. - 02Find ud af, hvem der er ramt.
crm_lookup_contactfinder den, der meldte,conv_list_conversationsfinder alle andre, der beskrev samme adfærd. To personer er en fejlrapport; elleve er en prioritering. - 03Ret den med konteksten intakt. Agenten har kundens formulering, de ramte konti og dit kildetræ i én kontekst. Intet oversættelsestrin.
- 04Luk sløjfen.
conv_send_messagesvarer i kundens egen tråd, ogkb_propose_curation_candidatelægger forklaringen ind som et udkast i videnbasen, så den næste, der spørger, får et svar i stedet for en sag.
Finder det her faktisk fejl, eller flytter det bare sager rundt?
Det finder dem, fordi signalet ligger i formuleringen, og formuleringen ligger i trådene. En triagekørsel, du kan skrive som en færdighed, klynger samtaler efter sprog om ødelagt adfærd, skiller reelle defekter fra forvirring, og lægger interne noter på repræsentative tråde — hvor det nyttige resultat er skellet mellem »det her er ødelagt« og »det her er forvirrende«, som er forskellige sager til forskellige teams.
Kør den, før du planlægger en sprint, ikke under en. Færdigheder er markdown, du kan læse og redigere, og du bør læse denne, før du stoler på dens dømmekraft om, hvad der tæller som en defekt. Det, der gør den læsning billig, er, at opskriften er en fil frem for en leverandørs sorte boks: ændr klyngereglen, stram stopbetingelsen, gem den, kør den igen på den samme uge af tråde. Triagelogik begravet i nogens dashboard er ikke noget, du kan åbne, redigere eller diskutere med.
Hvad forhindrer agenten i at svare en kunde ved et uheld?
To lag, og de flugter pænt. Cursor beder om godkendelse, før den bruger MCP-værktøjer som standard, og viser dig argumenterne, før den kører — så et conv_send_message-kald er noget, du ser og bekræfter, ikke noget, du opdager bagefter.
Under det gælder Munins egen asymmetri uanset klient. Billige, reversible handlinger som at tagge eller give en tråd titel skriver direkte; uigenkaldelige — at løfte en agentskrevet videnartikel, at slå to kontakter sammen — kan kun foreslås ind i en gennemgangskø. Det destruktive udsagnsord ligger slet ikke i agentens hænder til at begynde med, og det er den del, der overlever, at nogen slår bekræftelser fra.
Forhåndsgodkender du værktøjer til autokørsel i Cursors indstillinger, så forhåndsgodkend kun dem, der kun læser, og lad skrivningerne spørge. Dømmekraften er produktet; klikkeriet var det aldrig.
En supporttråd er ikke-betroet input
Alt, en kunde skriver, kan ende i agentens kontekst, og det gør en sag til en plausibel vektor for prompt-injektion. Behandl den sådan.
Modtrækket er afgrænsning, ikke årvågenhed: brug en legitimation begrænset til de moduler, opgaven kræver, hold skriveværktøjer bag godkendelse, og husk, at Munins adminnøgle er fuld adgang til organisationen. Læg ikke sådan en i en repofil.
Hvem passer denne opsætning ikke til?
Teams, hvor support og udvikling er forskellige mennesker med forskelligt værktøj. Værdien her er specifikt for udviklere, der også svarer kunder — små teams, virksomheder der laver udviklerværktøj, alle steder hvor den, der læser sagen, også kan rette koden. En dedikeret supportchef vil have en kø med SLA-ure og CSAT-scorer, og Zendesk og Intercom har brugt godt over et årti på at bygge præcis det; er det den afdeling, du bemander, så køb en af dem. Sammenligningen af helpdesks med åben kildekode dækker, hvor de selvdrevne alternativer står på det samme spørgsmål.
Det er heller ingen erstatning for selv at læse ting. En agent, der opsummerer elleve tråde, vil glatte over den ene underligt formulerede rapport, der forklarer hele fejlen — hvilket er netop derfor, triagekørslen lægger interne noter på repræsentative tråde frem for at række dig et resumé, og derfor conv_search_messages returnerer kundens egen sætning i stedet for en omskrivning af den.
For det team, det her faktisk passer til, er regnestykket usædvanligt. Supporttråden, kontakten der åbnede den, videnartiklen der burde have besvaret den, og kildefilen der forårsagede den, ligger ét Postgres-skema og én værktøjskatalog fra hinanden — så rundturen, der før kostede en time, koster omtrent lige så lang tid som rettelsen. Det er den afstand, det her kollapser, og det er den rigtige at kollapse, når den, der holder begge ender, er den samme person.
Ofte stillede spørgsmål
Hvordan tilføjer jeg en ekstern MCP-server til Cursor?
Tilføj den i .cursor/mcp.json til ét projekt eller ~/.cursor/mcp.json globalt, med en url og et headers-objekt til autentificering. Cursor opløser ${env:NAME} i begge felter, så hold tokens i dit miljø frem for i filen.
Hvor ligger Cursors MCP-logge?
Åbn Output-panelet med Cmd+Shift+U (Ctrl+Shift+U på Windows og Linux) og vælg MCP Logs i listen. Den viser serverinitialisering, værktøjskald og autentificeringsfejl — og det er der, de fleste »den vil ikke forbinde«-problemer løser sig.
Vil agenten sende beskeder til rigtige kunder? Kun med godkendelse. Cursor spørger før MCP-værktøjskald som standard og viser argumenterne først. Separat lader Munin kun agenter foreslå uigenkaldelige handlinger som at løfte agentskrevne videnartikler eller slå kontakter sammen — de lander i en gennemgangskø uanset hvilken klient der er forbundet.
Kan jeg begrænse, hvilke Munin-værktøjer Cursor ser? Ja. Afgræns API-nøglen til de moduler, du har brug for, da Munin styrer værktøjssynlighed efter publikum i værktøjslaget. Du kan også slå hele serveren fra midlertidigt i Cursors MCP-indstillinger (Customize → MCP).
Virker det her også med Claude Code eller ChatGPT? Ja. Munin serverer standard-MCP uden klientspecifik adfærd, så Claude Code, Claude Desktop, ChatGPT, Codex, Gemini og egne kørere forbinder alle til det samme endpoint. Der findes en separat gennemgang til Claude Code, og en til at køre det fra ChatGPT uden terminal.
Har jeg brug for Munin Cloud?
Nej. Egen drift er docker compose up og serverer MCP på /mcp på din backend-port, gratis for altid under MIT. Cloud hostes i EU med et gratisniveau og den samme værktøjsflade.
Den korte version
- Én
mcp.json-post medurlogheaderslægger 200+ Munin-værktøjer i Cursor. Brug${env:MUNIN_API_KEY}— den fil bor i dit repo. .cursor/mcp.jsontil ét projekt,~/.cursor/mcp.jsontil overalt. Logge under Output-panelet → MCP Logs.- Sløjfen: find tråden ud fra kundens formulering, se hvem andre der ramte den, ret den med begge kontekster i ét vindue, svar og læg svaret ind som et KB-udkast.
- Cursor beder om godkendelse før værktøjskald; Munin lader kun agenter foreslå videnløft og sammenlægninger. To lag, der er enige.
- Det her er bygget til udviklere, der også svarer kunder — små teams og virksomheder der laver udviklerværktøj, hvor den, der læser sagen, er den, der kan rette den.
Tilføj serveren, og spørg så Cursor, hvilke samtaler fra sidste uge der beskriver, at noget er ødelagt. MCP-værktøjsreferencen lister hver eneste af dem, og Munin Cloud er gratis at starte på.
Fejlrapporten og fejlen var altid det samme objekt. Kun dit værktøj var uenigt.