AI-assistenter er gode til at skrive kode, men de gætter ofte, når du stiller dem et Umbraco-spørgsmål. De kan ikke se community-forummet, og svaret, du har brug for, ligger som regel i en tråd, nogen allerede har løst. UForum-MCP er en lille server, jeg har bygget for at løse det. Den lader en AI-assistent søge i Umbraco-forummet, den officielle dokumentation og GitHub direkte.
Artiklen forklarer, hvordan det virker, og viser hvor lidt kode en simpel MCP-server kræver.
Hvad er MCP?
Model Context Protocol (MCP) er en standard måde, en AI-assistent kan bruge eksterne værktøjer på. Du kører en MCP-server, forbinder den til en assistent som Cursor, og assistenten kan kalde de værktøjer, serveren tilbyder, i stedet for kun at støtte sig til det, den husker.
Hvad UForum-MCP kan
Serveren er en .NET 10 NuGet-pakke. Den tilbyder disse værktøjer:
- Søg i forummet efter relevante indlæg og emner, med direkte links til diskussionerne.
- Hent de seneste emner, så du kan se, hvad communityet taler om lige nu.
- List kategorierne, så en søgning kan fokusere på den rigtige del af forummet.
- Søg alle steder på én gang. Ét kald søger i forummet, den officielle dokumentation og GitHub sammen, og kan tage din Umbraco-version med.
- Træk kodestykker ud af resultaterne, med løsningskoden fremhævet for sig.
- Udkast til et forumindlæg, når der ikke findes en løsning, som et pænt indlæg med din Umbraco-version.
Hvordan den taler med forummet
Umbraco-forummet kører på Discourse, som udstiller sine data som JSON. Serveren kalder et par enkle endpoints:
search.json?q=...til søgningt/{topicId}.jsontil at læse ét emnelatest.jsontil nylig aktivitetcategories.jsontil listen over kategorier
Det er det meste af magien. Serveren omsætter assistentens forespørgsel til et af de kald og rydder op i resultatet, så assistenten kan læse det.
En lille MCP-server i C#
Her er en forenklet skitse, ikke pakkens rigtige kode, af en server med ét værktøj. Den bruger den officielle MCP C# SDK.
using System.ComponentModel;
using ModelContextProtocol.Server;
[McpServerToolType]
public static class ForumTools
{
[McpServerTool, Description("Search the Umbraco community forum.")]
public static async Task<string> SearchForum(
HttpClient http,
[Description("What to search for")] string query)
{
var url = $"https://forum.umbraco.com/search.json?q={Uri.EscapeDataString(query)}";
return await http.GetStringAsync(url);
}
}Og startup-koden, der hoster den:
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHttpClient();
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly();
await builder.Build().RunAsync();Beskrivelsesteksten betyder mere, end den ser ud til. Assistenten læser den for at beslutte, hvornår dit værktøj skal bruges, så skriv den tydeligt.
Tips, hvis du bygger din egen
- Start med ét værktøj og få det til at virke i din assistent, før du tilføjer flere.
- Returner rene resultater. Rå JSON virker, men kortere, pænere tekst bruger færre tokens og giver bedre svar.
- Bed om versionen. Umbraco ændrer sig meget mellem versioner, så et værktøj, der tager versionen med som input, finder bedre svar.
- Lad den sige "ikke fundet". Et godt forumindlæg, når intet er fundet, er mere nyttigt end et opdigtet svar.
Prøv det
UForum-MCP ligger på NuGet og kræver .NET 10 SDK eller nyere. Du finder den på NuGet-siden.