# MCP Client

Thư viện `huggingface_hub` hiện bao gồm [MCPClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/mcp#huggingface_hub.MCPClient), được thiết kế để trao cho các Mô hình Ngôn ngữ Lớn (LLM) khả năng tương tác với các công cụ bên ngoài thông qua [Model Context Protocol](https://modelcontextprotocol.io) (MCP). Client này mở rộng [AsyncInferenceClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/inference_client#huggingface_hub.AsyncInferenceClient) để tích hợp việc sử dụng công cụ một cách liền mạch.

[MCPClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/mcp#huggingface_hub.MCPClient) kết nối với các máy chủ MCP (các script `stdio` cục bộ hoặc dịch vụ `http`/`sse` từ xa) cung cấp các công cụ. Nó truyền các công cụ này cho một LLM (thông qua [AsyncInferenceClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/inference_client#huggingface_hub.AsyncInferenceClient)). Nếu LLM quyết định sử dụng một công cụ, [MCPClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/mcp#huggingface_hub.MCPClient) sẽ quản lý yêu cầu thực thi đến máy chủ MCP và chuyển kết quả đầu ra của Công cụ đó ngược lại cho LLM, thường là phát trực tiếp kết quả theo thời gian thực.

Chúng tôi cũng cung cấp lớp [Agent](/docs/huggingface_hub/v2.4.0/vi/package_reference/mcp#huggingface_hub.Agent) ở cấp độ cao hơn. 'Tiny Agent' này đơn giản hóa việc tạo các Agent hội thoại bằng cách quản lý vòng lặp chat và trạng thái, đóng vai trò là lớp bọc quanh [MCPClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/mcp#huggingface_hub.MCPClient).

## MCP Client[[huggingface_hub.MCPClient]]

#### huggingface_hub.MCPClient[[huggingface_hub.MCPClient]]

```python
huggingface_hub.MCPClient(model: typing.Optional[str] = None, provider: typing.Union[typing.Literal['baseten', 'cerebras', 'cohere', 'deepinfra', 'fal-ai', 'featherless-ai', 'fireworks-ai', 'groq', 'hf-inference', 'novita', 'nscale', 'openai', 'ovhcloud', 'publicai', 'replicate', 'scaleway', 'together', 'wavespeed', 'zai-org'], typing.Literal['auto'], NoneType] = None, base_url: typing.Optional[str] = None, api_key: typing.Optional[str] = None)
```

[Nguồn](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/inference/_mcp/mcp_client.py#L55)

**Tham số:**

model (`str`, `optional`) : Mô hình để chạy suy luận. Có thể là id mô hình được lưu trữ trên Hugging Face Hub, ví dụ `meta-llama/Meta-Llama-3-8B-Instruct` hoặc một URL trỏ đến Inference Endpoint đã triển khai hoặc các endpoint cục bộ hoặc từ xa khác.

provider (`str`, *tùy chọn*) : Tên của nhà cung cấp được sử dụng cho suy luận. Mặc định là "auto", tức là nhà cung cấp đầu tiên trong số các nhà cung cấp khả dụng cho mô hình, được sắp xếp theo thứ tự của người dùng tại https://hf.co/settings/inference-providers. Nếu model là một URL hoặc `base_url` được truyền vào, thì `provider` sẽ không được sử dụng.

base_url (`str`, *tùy chọn*) : URL gốc để chạy suy luận. Mặc định là None.

api_key (`str`, `optional`) : Token để xác thực. Nếu không được cung cấp, sẽ mặc định dùng token Hugging Face đã lưu cục bộ. Bạn cũng có thể sử dụng API key của nhà cung cấp của riêng mình để tương tác trực tiếp với dịch vụ của nhà cung cấp đó.

Client để kết nối với một hoặc nhiều máy chủ MCP và xử lý hoàn tất chat với các công cụ.

> [!WARNING]
> Lớp này mang tính thử nghiệm và có thể bị thay đổi gây lỗi trong tương lai mà không có thông báo trước.

#### add_mcp_server[[huggingface_hub.MCPClient.add_mcp_server]]

```python
add_mcp_server(type: typing.Literal['stdio', 'sse', 'http'], **params: typing.Any)
```

[Nguồn](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/inference/_mcp/mcp_client.py#L123)

**Tham số:**

type (`str`) : Kiểu của máy chủ cần kết nối. Có thể là một trong các giá trị sau: - "stdio": Máy chủ đầu vào/đầu ra chuẩn (cục bộ) - "sse": Máy chủ Server-sent events (SSE) - "http": Máy chủ StreamableHTTP

- ****params** (`dict[str, Any]`) : Các tham số của server, có thể là: - Đối với server stdio: - command (str): Lệnh để chạy MCP server - args (list[str], tùy chọn): Các đối số cho lệnh - env (dict[str, str], tùy chọn): Các biến môi trường cho lệnh - cwd (Union[str, Path, None], tùy chọn): Thư mục làm việc cho lệnh - allowed_tools (list[str], tùy chọn): Danh sách tên công cụ được phép từ server này - Đối với server SSE: - url (str): URL của server SSE - headers (dict[str, Any], tùy chọn): Các header cho kết nối SSE - timeout (float, tùy chọn): Thời gian chờ kết nối - sse_read_timeout (float, tùy chọn): Thời gian chờ đọc SSE - allowed_tools (list[str], tùy chọn): Danh sách tên công cụ được phép từ server này - Đối với server StreamableHTTP: - url (str): URL của server StreamableHTTP - headers (dict[str, Any], tùy chọn): Các header cho kết nối StreamableHTTP - timeout (timedelta, tùy chọn): Thời gian chờ kết nối - sse_read_timeout (timedelta, tùy chọn): Thời gian chờ đọc SSE - terminate_on_close (bool, tùy chọn): Có kết thúc khi đóng hay không - allowed_tools (list[str], tùy chọn): Danh sách tên công cụ được phép từ server này

Kết nối với máy chủ MCP

#### dọn dẹp[[huggingface_hub.MCPClient.cleanup]]

```python
cleanup()
```

[Nguồn](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/inference/_mcp/mcp_client.py#L109)

Dọn dẹp tài nguyên

#### process_single_turn_with_tools[[huggingface_hub.MCPClient.process_single_turn_with_tools]]

```python
process_single_turn_with_tools(messages: list, exit_loop_tools: typing.Optional[list[huggingface_hub.inference._generated.types.chat_completion.ChatCompletionInputTool]] = None, exit_if_first_chunk_no_tool: bool = False)
```

[Nguồn](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/inference/_mcp/mcp_client.py#L252)

**Tham số:**

messages (`list[dict]`) : Danh sách các đối tượng tin nhắn đại diện cho lịch sử hội thoại

exit_loop_tools (`list[ChatCompletionInputTool]`, *tùy chọn*) : Danh sách các công cụ sẽ khiến trình tạo thoát ra khi được gọi

exit_if_first_chunk_no_tool (`bool`, *tùy chọn*) : Thoát nếu không có công cụ nào trong các chunk đầu tiên. Mặc định là False.

**Trả về:**

các chunk [ChatCompletionStreamOutput](/docs/huggingface_hub/v2.4.0/vi/package_reference/inference_types#huggingface_hub.ChatCompletionStreamOutput) hoặc các đối tượng [ChatCompletionInputMessage](/docs/huggingface_hub/v2.4.0/vi/package_reference/inference_types#huggingface_hub.ChatCompletionInputMessage)

Xử lý truy vấn bằng `self.model` và các công cụ khả dụng, trả về các khối và kết quả công cụ.

## Agent[[huggingface_hub.Agent]]

#### huggingface_hub.Agent[[huggingface_hub.Agent]]

```python
huggingface_hub.Agent(model: Optional[str] = None, servers: Iterable[ServerConfig], provider: Optional[PROVIDER_OR_POLICY_T] = None, base_url: Optional[str] = None, api_key: Optional[str] = None, prompt: Optional[str] = None)
```

[Nguồn](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/inference/_mcp/agent.py#L13)

**Tham số:**

model (`str`, *tùy chọn*) : Mô hình để chạy suy luận. Có thể là id mô hình được lưu trữ trên Hugging Face Hub, ví dụ `meta-llama/Meta-Llama-3-8B-Instruct` hoặc một URL trỏ đến Inference Endpoint đã triển khai hoặc các endpoint cục bộ hoặc từ xa khác.

servers (`Iterable[dict]`) : Các máy chủ MCP cần kết nối. Mỗi máy chủ là một từ điển chứa khóa `type` và khóa `config`. Khóa `type` có thể là `"stdio"` hoặc `"sse"`, và khóa `config` là một từ điển chứa các đối số cho máy chủ.

provider (`str`, *tùy chọn*) : Tên của nhà cung cấp được sử dụng cho suy luận. Mặc định là "auto", tức là nhà cung cấp đầu tiên trong số các nhà cung cấp khả dụng cho mô hình, được sắp xếp theo thứ tự của người dùng tại https://hf.co/settings/inference-providers. Nếu model là một URL hoặc `base_url` được truyền vào, thì `provider` sẽ không được sử dụng.

base_url (`str`, *tùy chọn*) : URL gốc để chạy suy luận. Mặc định là None.

api_key (`str`, *tùy chọn*) : Token dùng để xác thực. Nếu không được cung cấp, sẽ mặc định dùng token Hugging Face đã lưu cục bộ. Bạn cũng có thể sử dụng API key của nhà cung cấp của riêng mình để tương tác trực tiếp với dịch vụ của nhà cung cấp đó.

prompt (`str`, *tùy chọn*) : Prompt hệ thống để sử dụng cho agent. Mặc định là prompt hệ thống mặc định trong `constants.py`.

Cài đặt một Agent đơn giản, là một vòng lặp while đơn giản được xây dựng trực tiếp trên [MCPClient](/docs/huggingface_hub/v2.4.0/vi/package_reference/mcp#huggingface_hub.MCPClient).

> [!WARNING]
> Lớp này mang tính thử nghiệm và có thể bị thay đổi gây lỗi trong tương lai mà không có thông báo trước.

#### chạy[[huggingface_hub.Agent.run]]

```python
run(user_input: str, abort_event: Optional[asyncio.Event] = None)
```

[Nguồn](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/inference/_mcp/agent.py#L57)

**Tham số:**

user_input (`str`) : Đầu vào của người dùng để chạy agent.

abort_event (`asyncio.Event`, *tùy chọn*) : Một sự kiện có thể được sử dụng để hủy tác nhân. Nếu sự kiện được đặt, tác nhân sẽ ngừng chạy.

Chạy agent với đầu vào người dùng đã cho.

