46 lines
961 B
Python
46 lines
961 B
Python
"""MCP 客户端管理:工具发现、调用与 OpenAI 工具映射。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import hashlib
|
|
import json
|
|
import os
|
|
import select
|
|
import shutil
|
|
import subprocess
|
|
import threading
|
|
import time
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
from typing import Any, Callable, Dict, Iterable, List, Optional, Tuple, TYPE_CHECKING
|
|
|
|
import httpx
|
|
|
|
from config import MCP_PROTOCOL_VERSION, MCP_DEFAULT_TIMEOUT_SECONDS
|
|
from modules.mcp_server_registry import MCPServerRegistry
|
|
|
|
if TYPE_CHECKING:
|
|
from modules.user_container_manager import ContainerHandle
|
|
|
|
|
|
@dataclass
|
|
class MCPToolBinding:
|
|
alias: str
|
|
server_id: str
|
|
server_name: str
|
|
remote_name: str
|
|
transport: str
|
|
timeout_seconds: int
|
|
|
|
|
|
@dataclass
|
|
class MCPClientPoolEntry:
|
|
"""长连接 MCP 客户端池条目。"""
|
|
|
|
server_id: str
|
|
signature: str
|
|
client: Any
|
|
timeout_seconds: int
|
|
created_at: float
|
|
last_used_at: float
|