MCP sunucunuzu test etmeye başlamadan önce, kullanılabilir araçları ve hata ayıklama için en iyi uygulamaları anlamak önemlidir. Etkili test, sunucunuzun beklendiği gibi çalışmasını sağlar ve sorunları hızlıca tespit edip çözmenize yardımcı olur. Aşağıdaki bölüm, MCP uygulamanızı doğrulamak için önerilen yaklaşımları özetlemektedir.
Bu ders, doğru test yaklaşımının nasıl seçileceğini ve en etkili test aracını ele alır.
Bu dersin sonunda şunları yapabileceksiniz:
- Test için çeşitli yaklaşımları tanımlamak.
- Kodunuzu etkili bir şekilde test etmek için farklı araçları kullanmak.
MCP, sunucularınızı test etmenize ve hata ayıklamanıza yardımcı olacak araçlar sunar:
- MCP Inspector: Hem CLI aracı hem de görsel araç olarak çalıştırılabilen komut satırı aracı.
- Manuel test: curl gibi bir araç kullanarak web istekleri gönderebilirsiniz, ancak HTTP çalıştırabilen herhangi bir araç da işe yarar.
- Birim testi: Tercih ettiğiniz test çerçevesini kullanarak hem sunucu hem de istemci özelliklerini test etmek mümkündür.
Bu aracın kullanımını önceki derslerde anlattık ancak burada üst düzey olarak biraz bahsedelim. Node.js ile geliştirilmiş bir araçtır ve npx yürütülebilir dosyasını çağırarak kullanabilirsiniz. Bu dosya aracı geçici olarak indirir ve yükler, isteğiniz tamamlandığında kendini temizler.
MCP Inspector size şunları sağlar:
- Sunucu Yetkinliklerini Keşfetme: Mevcut kaynakları, araçları ve istemleri otomatik olarak tespit eder
- Araç Çalıştırmayı Test Etme: Farklı parametreleri deneyip yanıtları gerçek zamanlı görme
- Sunucu Meta Verilerini Görüntüleme: Sunucu bilgileri, şemalar ve yapılandırmaları inceleme
Aracın tipik bir çalıştırması şu şekildedir:
npx @modelcontextprotocol/inspector node build/index.jsYukarıdaki komut, bir MCP ve görsel arayüzünü başlatır ve tarayıcınızda yerel bir web arayüzü açar. Kayıtlı MCP sunucularınızı, mevcut araçlarını, kaynaklarını ve istemlerini gösteren bir kontrol paneli görmeyi bekleyebilirsiniz. Arayüz, araç çalıştırmayı etkileşimli olarak test etmenize, sunucu meta verilerini incelemenize ve gerçek zamanlı yanıtları görmenize olanak tanır; bu da MCP sunucu uygulamalarınızı doğrulamayı ve hata ayıklamayı kolaylaştırır.
Bu aracı CLI modunda da çalıştırabilirsiniz; bu durumda --cli parametresini eklersiniz. İşte sunucudaki tüm araçları listeleyen "CLI" modunda aracın çalıştırılmasına örnek:
npx @modelcontextprotocol/inspector --cli node build/index.js --method tools/listSunucu yetkinliklerini test etmek için inspector aracını çalıştırmanın yanı sıra, HTTP kullanabilen bir istemciyi, örneğin curl'u çalıştırmak gibi benzer bir yaklaşım da vardır.
Curl ile MCP sunucularını doğrudan HTTP istekleri kullanarak test edebilirsiniz:
# Example: Test server metadata
curl http://localhost:3000/v1/metadata
# Example: Execute a tool
curl -X POST http://localhost:3000/v1/tools/execute \
-H "Content-Type: application/json" \
-d '{"name": "calculator", "parameters": {"expression": "2+2"}}'Yukarıdaki curl kullanımından görebileceğiniz gibi, araç adını ve parametrelerini içeren bir yükle aracı çağırmak için POST isteği kullanıyorsunuz. Size en uygun yaklaşımı seçin. CLI araçları genellikle daha hızlı kullanılır ve betiklenebilir olmaları CI/CD ortamlarında faydalı olabilir.
Araçlarınız ve kaynaklarınız için birim testleri oluşturarak beklendiği gibi çalıştıklarından emin olun. İşte bazı örnek test kodları.
import pytest
from mcp.server.fastmcp import FastMCP
from mcp.shared.memory import (
create_connected_server_and_client_session as create_session,
)
# Mark the whole module for async tests
pytestmark = pytest.mark.anyio
async def test_list_tools_cursor_parameter():
"""Test that the cursor parameter is accepted for list_tools.
Note: FastMCP doesn't currently implement pagination, so this test
only verifies that the cursor parameter is accepted by the client.
"""
server = FastMCP("test")
# Create a couple of test tools
@server.tool(name="test_tool_1")
async def test_tool_1() -> str:
"""First test tool"""
return "Result 1"
@server.tool(name="test_tool_2")
async def test_tool_2() -> str:
"""Second test tool"""
return "Result 2"
async with create_session(server._mcp_server) as client_session:
# Test without cursor parameter (omitted)
result1 = await client_session.list_tools()
assert len(result1.tools) == 2
# Test with cursor=None
result2 = await client_session.list_tools(cursor=None)
assert len(result2.tools) == 2
# Test with cursor as string
result3 = await client_session.list_tools(cursor="some_cursor_value")
assert len(result3.tools) == 2
# Test with empty string cursor
result4 = await client_session.list_tools(cursor="")
assert len(result4.tools) == 2
Yukarıdaki kod şunları yapar:
- Fonksiyon olarak test oluşturmanıza ve assert ifadeleri kullanmanıza olanak sağlayan pytest çerçevesini kullanır.
- İki farklı araçla bir MCP Sunucusu oluşturur.
- Belirli koşulların sağlanıp sağlanmadığını kontrol etmek için
assertifadesini kullanır.
Tam dosyaya buradan bakabilirsiniz
Yukarıdaki dosyaya dayanarak, kendi sunucunuzu test ederek yeteneklerin gerektiği gibi oluşturulduğundan emin olabilirsiniz.
Tüm büyük SDK'larda benzer test bölümleri bulunur, böylece seçtiğiniz çalışma ortamına uyarlayabilirsiniz.
- Sonraki: Deployment
Feragatname:
Bu belge, AI çeviri servisi Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hatalar veya yanlışlıklar içerebileceğini lütfen unutmayın. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu oluşabilecek yanlış anlamalar veya yorum hatalarından sorumlu değiliz.
