MCP最佳实践
本文档总结了在开发和使用MCP协议时的最佳实践,帮助您构建更稳定、高效和可维护的MCP应用。
服务器开发最佳实践
1. 错误处理
完善的错误处理机制
from mcp.server import Server
from mcp.types import ErrorCode
async def handle_tool_call(tool_name: str, arguments: dict):
try:
# 参数验证
if not validate_arguments(arguments):
return {
"error": {
"code": ErrorCode.INVALID_PARAMS,
"message": "参数验证失败"
}
}
# 执行工具
result = await execute_tool(tool_name, arguments)
return {"content": result}
except ValueError as e:
return {
"error": {
"code": ErrorCode.INVALID_PARAMS,
"message": str(e)
}
}
except Exception as e:
# 记录错误但不暴露敏感信息
logger.error(f"工具执行失败: {e}")
return {
"error": {
"code": ErrorCode.INTERNAL_ERROR,
"message": "工具执行失败,请稍后重试"
}
}
2. 资源管理
合理使用资源
import asyncio
from contextlib import asynccontextmanager
class ResourceManager:
def __init__(self):
self.active_resources = {}
self.max_resources = 10
@asynccontextmanager
async def acquire_resource(self, resource_id: str):
if len(self.active_resources) >= self.max_resources:
raise Exception("资源池已满")
resource = await create_resource(resource_id)
self.active_resources[resource_id] = resource
try:
yield resource
finally:
await resource.cleanup()
del self.active_resources[resource_id]