ACP ve MCP: İki Protokolün Teknik Karşılaştırması
Geçen hafta bir meslektaşım sordu: "MCP öğrendim ama şimdi bir de ACP çıkmış, kafam karıştı. Bunlar aynı şey mi?" Bu yazıda her iki protokolü teknik detaylarıyla karşılaştıracağız.
TL;DR - Hızlı Özet
- MCP (Model Context Protocol): Anthropic tarafından geliştirildi, Model-Araç iletişimi odaklı, Client-Server mimarisi, Production-ready
- ACP (Agent Communication Protocol): IBM Research tarafından geliştirildi, Agent-Agent iletişimi odaklı, Peer-to-Peer mimarisi, Early stage
Önce Problemleri Anlayalım
AI sistemleri geliştirirken iki temel iletişim problemiyle karşılaşıyoruz:
Problem 1: Dikey İletişim Bir AI modeli veritabanına nasıl erişecek? API'ları nasıl çağıracak? Dosyaları nasıl okuyacak?
Problem 2: Yatay İletişim
Birden fazla AI agent birlikte çalışırken nasıl koordine olacak? Görevleri nasıl paylaşacak?
MCP birinci problemi, ACP ikinci problemi çözüyor.
MCP Mimarisi
MCP, client-server modelinde çalışır. Host (Claude Desktop, VS Code) bir MCP client'ı barındırır ve birden fazla MCP server'a bağlanabilir.
Mimari Yapı:
- HOST (IDE/App) içinde MCP CLIENT bulunur
- MCP CLIENT birden fazla server'a bağlanır: GitHub Server, Slack Server, Database Server
- Her server bağımsız çalışır ve kendi tool'larını sunar
MCP'nin Üç Primitive'i
# 1. TOOLS - Model'in çağırabileceği fonksiyonlar
@server.tool()
async def query_database(query: str) -> str:
"""Veritabanında SQL sorgusu çalıştır"""
result = await db.execute(query)
return json.dumps(result)
# 2. RESOURCES - Model'in okuyabileceği veriler
@server.resource("config://app")
async def get_config() -> Resource:
"""Uygulama konfigürasyonunu döndür"""
return Resource(
uri="config://app",
mimeType="application/json",
text=json.dumps(config)
)
# 3. PROMPTS - Önceden tanımlı şablonlar
@server.prompt()
async def code_review(code: str) -> Prompt:
"""Kod review promptu oluştur"""
return Prompt(
messages=[
{"role": "user", "content": f"Review this code:\n{code}"}
]
)
ACP Mimarisi
ACP, peer-to-peer modelinde çalışır. Her agent eşit statüdedir ve birbirleriyle doğrudan iletişim kurabilir.
Mimari Yapı:
- Agent A (Planner) ↔ Agent B (Executor) ↔ Agent C (Reviewer)
- Tüm agent'lar bir Message Bus üzerinden haberleşir
- Çift yönlü iletişim mümkün
ACP'nin Temel Kavramları
1. Agent Card - Her agent'ın kimlik kartı:
{
"name": "data-analyst-agent",
"version": "1.0.0",
"description": "Veri analizi yapan agent",
"capabilities": {
"canReceiveTasks": true,
"canDelegateTasks": true,
"supportedMessageTypes": ["task", "query", "notification"]
},
"skills": [
{
"id": "analyze-csv",
"description": "CSV dosyalarını analiz eder",
"inputSchema": {
"type": "object",
"properties": {
"filePath": { "type": "string" },
"analysisType": { "type": "string", "enum": ["summary", "correlation", "trend"] }
}
}
}
],
"endpoint": "https://agents.example.com/data-analyst"
}
2. Message Types - Agent'lar arası mesaj tipleri:
# Task Assignment
{
"type": "task",
"id": "task-123",
"from": "orchestrator-agent",
"to": "data-analyst-agent",
"payload": {
"action": "analyze-csv",
"params": {"filePath": "/data/sales.csv", "analysisType": "trend"}
},
"deadline": "2026-01-02T10:00:00Z"
}
# Status Update
{
"type": "status",
"taskId": "task-123",
"status": "in_progress",
"progress": 45,
"message": "Veri temizleme tamamlandı, analiz başlıyor"
}
# Task Result
{
"type": "result",
"taskId": "task-123",
"status": "completed",
"output": {
"trend": "increasing",
"growthRate": 12.5,
"insights": ["Q4 satışları %15 arttı", "..."]
}
}
Detaylı Karşılaştırma
İletişim Yönü:
- MCP: Tek yönlü (Model → Tool)
- ACP: Çift yönlü (Agent ↔ Agent)
Keşif Mekanizması:
- MCP: Server capabilities listesi
- ACP: Agent Card + Discovery Protocol
State Management:
- MCP: Stateless
- ACP: Stateful (task tracking)
Hata Yönetimi:
- MCP: Try-catch, retry
- ACP: Dead letter queue, compensation
Güvenlik:
- MCP: API key, OAuth
- ACP: mTLS, Agent attestation
Ölçeklenebilirlik:
- MCP: Vertical (daha güçlü server)
- ACP: Horizontal (daha fazla agent)
Kullanım Senaryosu:
- MCP: Tool integration
- ACP: Multi-agent orchestration
Birlikte Kullanım Senaryosu
E-ticaret sistemi örneği üzerinden görelim:
Mimari:
- En üstte Orchestrator Agent bulunur
- Orchestrator, ACP ile 3 alt agent'a bağlıdır: Order Agent, Stock Agent, Cargo Agent
- Her alt agent, MCP ile kendi backend'ine bağlıdır:
- Order Agent → Order DB (MCP Server)
- Stock Agent → ERP API (MCP Server)
- Cargo Agent → Cargo API (MCP Server)
İş Akışı:
- Müşteri sipariş verir
- Orchestrator Agent görevi dağıtır (ACP)
- Order Agent siparişi kaydeder (MCP → Order DB)
- Stock Agent stok kontrolü yapar (MCP → ERP)
- Cargo Agent kargo oluşturur (MCP → Cargo API)
- Agent'lar durumu Orchestrator'a bildirir (ACP)
Kod Örneği: Hibrit Sistem
# ACP Agent that uses MCP tools internally
from acp import Agent, Task
from mcp import Client as MCPClient
class DataAnalystAgent(Agent):
def __init__(self):
super().__init__(
name="data-analyst",
capabilities=["analyze", "visualize"]
)
# Internal MCP client for tool access
self.mcp_client = MCPClient()
self.mcp_client.connect("database-server")
async def handle_task(self, task: Task):
if task.action == "analyze-sales":
# Use MCP to query database
data = await self.mcp_client.call_tool(
"query_database",
{"query": "SELECT * FROM sales WHERE date > '2025-01-01'"}
)
# Process data
analysis = self.analyze(data)
# Return result via ACP
return {
"status": "completed",
"output": analysis
}
async def delegate_subtask(self, subtask: Task, target_agent: str):
# Use ACP to delegate to another agent
await self.send_message(
to=target_agent,
message_type="task",
payload=subtask
)
Ne Zaman Hangisini Kullanmalı?
Sadece MCP Yeterli
- Tek bir AI modeli + dış sistemler
- Claude Desktop, Cursor, VS Code Copilot entegrasyonu
- Basit otomasyon: "Veritabanından veri çek, API'ya gönder"
- Tool-calling senaryoları
ACP Gerekli
- Birden fazla bağımsız agent
- Karmaşık iş akışları ve görev dağılımı
- Farklı takımlar farklı agent'lar geliştiriyor
- Enterprise seviye orchestration
- Long-running tasks ve state management
İkisi Birlikte
- Agent'lar arası koordinasyon (ACP) + Her agent'ın tool erişimi (MCP)
- Microservices benzeri AI architecture
- Complex workflows with external integrations
Sonuç
MCP ve ACP rakip değil, tamamlayıcı protokoller:
- MCP: AI'ın "elleri" - dış dünyayla etkileşim
- ACP: AI'ın "beyni" - agent koordinasyonu
Şu an için MCP öğrenmek daha pratik çünkü production-ready ve yaygın kullanımda. ACP'yi takip edin ama henüz erken - IBM'in bu protokolü nasıl geliştireceğini göreceğiz.
Kaynaklar:
- MCP Specification
- ACP GitHub
- MCP Python SDK
- Bu eğitimin MCP modülleri