Sparround

Öz MCP server-ini yazmaq

Öz server-inizi yazmaq üçün rəsmi SDK-lar var — bir neçə dildə. SDK JSON-RPC mübadiləsini, transportu və protokol detallarını öz üzərinə götürür; sizin işiniz alətləri təyin etməkdir.

Hər alət üçün üç şey lazımdır:

1. Ad — unikal identifikator.

2. Təsvir — modelin gördüyü yeganə izahat.

3. Input sxemi — JSON Schema; parametrlərin tipi və hansının məcburi olduğu.

Sonra alətin real icra funksiyası: sorğu göndərir, nəticəni qaytarır.

QərarTövsiyəSəbəb
Alətin ölçüsüBir alət — bir aydın vəzifə20 parametrli universal alət modeli çaşdırır
Nəticənin həcmiFiltrlə və xülasə etNəticə kontekstə düşür — 5 MB JSON büdcəni yeyir
Xəta idarəsiAnlaşılan mətn qaytarModel xətanı oxuyub düzəliş edə bilir
Yazma əməliyyatlarıAyrıca alət, açıq adlandırılmış"Oxudum" ilə "dəyişdim" qarışmamalıdır
İcazələrServer-in özündə minimum icazəAgent icazələri deyil, server icazələri həqiqi hüdudu qoyur
typescript
// Conceptual shape — see the official SDK docs for exact API names.
// The points that matter: the description, the schema, the result size.

const GET_BUILD_STATUS = {
  name: "get_build_status",
  // This is ALL the model sees — what it does, what it returns, when to use it
  description:
    "Returns the status of the latest build for a branch from the CI system: " +
    "result (success/failure), duration, and the names of failing tests. " +
    "Use when the user asks about build status or investigates a CI failure.",
  inputSchema: {
    type: "object",
    properties: {
      branch: {
        type: "string",
        description: "Branch name, for example 'main' or 'feature/orders'",
      },
    },
    required: ["branch"],
  },
};

async function handleGetBuildStatus({ branch }) {
  const res = await ci.getLatestBuild(branch);

  // IMPORTANT: do not return the whole response. The result enters the context.
  // Return only what the agent needs in order to decide.
  return {
    status: res.status,
    durationSeconds: res.duration,
    failedTests: res.failures?.slice(0, 20).map((f) => f.name) ?? [],
    totalFailures: res.failures?.length ?? 0,
    url: res.webUrl,
  };
}

Alət tərifinin əsas hissələri. Ən çox səhv edilən yer — nəticənin filtrlənməməsi: server-in tam JSON cavabını qaytarmaq kontekst büdcəsini bir sorğuda yeyə bilər.

Server-i yazmazdan əvvəl MCP Inspector ilə sınamağı planlaşdırın: bu, rəsmi debug alətidir və server-i AI client olmadan yoxlamağa imkan verir. Alət siyahısı düzgündürmü, sxem doğrudurmu, nəticə gözlənilən formatdadırmı — bunların hamısı Claude Code-a qoşmadan yoxlanıla bilər.

Android komandası üçün server yazmağa dəyən sahələr:

  • Daxili feature flag sistemi — hansı flag-lar var, hansı dəyərdədir, kim dəyişib.
  • Daxili API sənədləşməsi — backend-in real sxemi (agent onu təxmin etmək əvəzinə oxusun).
  • Release/deployment sistemi — hansı versiya hansı kanaldadır (oxuma; yazma ayrıca qərar).
  • Daxili dizayn sistemi — token-lər, komponent qaydaları.

Hamısında ortaq cəhət: bu məlumat modelin təlim datasında yoxdur və hər dəfə əl ilə köçürülür.

📚 Mənbələr və sənədlər

  • MCP server qurmaqrəsmimodelcontextprotocol.io

    SDK-lar, alət təyini və işə salma üzrə rəsmi bələdçi.

  • MCP referens serverlərirəsmigithub.com

    Rəsmi nümunə implementasiyalar — alət dizaynı üçün yaxşı istinad.