Mở đầu: Tại sao cần giám sát MCP Server?

Trước khi đi vào chi tiết kỹ thuật, hãy cùng xem bức tranh chi phí AI năm 2026 đã thay đổi như thế nào. Theo dữ liệu đã được xác minh, giá cho mỗi triệu token (MTok) như sau: Với một ứng dụng xử lý 10 triệu token mỗi tháng, chi phí sẽ như sau:
ProviderGiá/MTok10M Tokens/Tháng
OpenAI GPT-4.1$8.00$80
Anthropic Claude Sonnet 4.5$15.00$150
Google Gemini 2.5 Flash$2.50$25
DeepSeek V3.2$0.42$4.20
HolySheep AI$0.42$4.20
Chênh lệch lên đến 35 lần giữa provider đắt nhất và rẻ nhất. Đó là lý do việc giám sát MCP Server trở nên quan trọng - bạn cần biết chính xác mình đang tiêu tốn bao nhiêu token, thời gian phản hồi ra sao, và có bất thường nào không.

MCP Server là gì và tại sao cần Prometheus metrics?

MCP (Model Context Protocol) Server là cầu nối giữa ứng dụng của bạn và các LLM API. Khi traffic tăng cao, việc không có hệ thống giám sát đồng nghĩa với việc bạn đang điều khiển xe trong sương mù - không biết tốc độ, không biết nhiên liệu còn bao nhiêu. Prometheus là tiêu chuẩn vàng cho việc thu thập metrics trong hệ thống cloud-native. Việc expose Prometheus metrics từ MCP Server mang lại:

Kiến trúc Prometheus Metrics Exposure cho MCP Server

1. Cài đặt thư viện Prometheus Client

pip install prometheus-client fastapi uvicorn httpx

2. Cấu hình MCP Server với Prometheus Metrics

# config.py
from prometheus_client import Counter, Histogram, Gauge, generate_latest, CONTENT_TYPE_LATEST
from prometheus_client import CollectorRegistry, start_http_server

Tạo registry riêng để tránh conflict

REGISTRY = CollectorRegistry()

Định nghĩa các metrics

REQUEST_COUNT = Counter( 'mcp_requests_total', 'Tổng số request MCP', ['model', 'status', 'provider'], registry=REGISTRY ) REQUEST_LATENCY = Histogram( 'mcp_request_duration_seconds', 'Thời gian xử lý request', ['model', 'provider'], buckets=[0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0], registry=REGISTRY ) TOKEN_USAGE = Counter( 'mcp_tokens_total', 'Số token đã sử dụng', ['model', 'type', 'provider'], # type: prompt/completion registry=REGISTRY ) ACTIVE_CONNECTIONS = Gauge( 'mcp_active_connections', 'Số kết nối đang hoạt động', ['provider'], registry=REGISTRY ) COST_ESTIMATE = Counter( 'mcp_cost_estimate_total', 'Chi phí ước tính (USD)', ['model', 'provider'], registry=REGISTRY )

Pricing lookup (USD per MToken - 2026)

MODEL_PRICING = { 'gpt-4.1': {'input': 2.0, 'output': 8.0}, 'claude-sonnet-4.5': {'input': 3.0, 'output': 15.0}, 'gemini-2.5-flash': {'input': 0.30, 'output': 2.50}, 'deepseek-v3.2': {'input': 0.07, 'output': 0.42}, }

HolySheep pricing (85%+ tiết kiệm)

HOLYSHEEP_PRICING = { 'gpt-4.1': {'input': 0.30, 'output': 1.20}, # Tiết kiệm 85% 'claude-sonnet-4.5': {'input': 0.45, 'output': 2.25}, 'gemini-2.5-flash': {'input': 0.05, 'output': 0.38}, 'deepseek-v3.2': {'input': 0.01, 'output': 0.06}, }

3. MCP Server Implementation với Metrics

# mcp_server.py
from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import Response
from contextlib import asynccontextmanager
import time
import httpx
from typing import Optional

Import từ config.py

from config