Ö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ərar | Tö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əcmi | Filtrlə və xülasə et | Nəticə kontekstə düşür — 5 MB JSON büdcəni yeyir |
| Xəta idarəsi | Anlaşılan mətn qaytar | Model 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ər | Server-in özündə minimum icazə | Agent icazələri deyil, server icazələri həqiqi hüdudu qoyur |
// 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.