# Klien MCP

Perpustakaan `huggingface_hub` kini mencakup [MCPClient](/docs/huggingface_hub/v2.4.0/id/package_reference/mcp#huggingface_hub.MCPClient), yang dirancang untuk memberdayakan Large Language Models (LLM) dengan kemampuan berinteraksi dengan Tools eksternal melalui [Model Context Protocol](https://modelcontextprotocol.io) (MCP). Klien ini memperluas [AsyncInferenceClient](/docs/huggingface_hub/v2.4.0/id/package_reference/inference_client#huggingface_hub.AsyncInferenceClient) untuk mengintegrasikan penggunaan Tools secara mulus.

[MCPClient](/docs/huggingface_hub/v2.4.0/id/package_reference/mcp#huggingface_hub.MCPClient) terhubung ke server MCP (skrip `stdio` lokal atau layanan `http`/`sse` jarak jauh) yang mengekspos tool. Komponen ini memberikan tool tersebut ke LLM (melalui [AsyncInferenceClient](/docs/huggingface_hub/v2.4.0/id/package_reference/inference_client#huggingface_hub.AsyncInferenceClient)). Jika LLM memutuskan untuk menggunakan sebuah tool, [MCPClient](/docs/huggingface_hub/v2.4.0/id/package_reference/mcp#huggingface_hub.MCPClient) mengelola permintaan eksekusi ke server MCP dan meneruskan keluaran Tool kembali ke LLM, sering kali dengan streaming hasil secara real-time.

Kami juga menyediakan kelas [Agent](/docs/huggingface_hub/v2.4.0/id/package_reference/mcp#huggingface_hub.Agent) yang lebih tinggi. 'Tiny Agent' ini menyederhanakan pembuatan Agent percakapan dengan mengelola loop chat dan state, bertindak sebagai pembungkus di sekitar [MCPClient](/docs/huggingface_hub/v2.4.0/id/package_reference/mcp#huggingface_hub.MCPClient).

## Klien MCP[[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)
```

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

**Parameter:**

model (`str`, `optional`) : Model untuk menjalankan inferensi. Bisa berupa model id yang dihosting di Hugging Face Hub, misalnya `meta-llama/Meta-Llama-3-8B-Instruct`, atau URL ke Inference Endpoint yang telah di-deploy atau endpoint lokal/remote lainnya.

provider (`str`, *opsional*) : Nama penyedia yang akan digunakan untuk inferensi. Nilai defaultnya adalah "auto", yaitu penyedia pertama yang tersedia untuk model tersebut, diurutkan berdasarkan urutan pengguna di https://hf.co/settings/inference-providers. Jika model berupa URL atau `base_url` diberikan, maka `provider` tidak digunakan.

base_url (`str`, *opsional*) : URL dasar untuk menjalankan inferensi. Bawaan adalah None.

api_key (`str`, `optional`) : Token yang digunakan untuk autentikasi. Jika tidak disediakan, akan secara default menggunakan token Hugging Face yang disimpan secara lokal. Anda juga dapat menggunakan API key provider Anda sendiri untuk berinteraksi langsung dengan layanan provider tersebut.

Klien untuk terhubung ke satu atau lebih server MCP dan memproses pelengkapan chat dengan alat.

> [!WARNING]
> Kelas ini bersifat eksperimental dan mungkin mengalami perubahan yang merusak di masa depan tanpa pemberitahuan sebelumnya.

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

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

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

**Parameter:**

type (`str`) : Jenis server yang akan dihubungkan. Bisa berupa salah satu dari: - "stdio": Server standar input/output (lokal) - "sse": Server server-sent events (SSE) - "http": Server StreamableHTTP

- ****params** (`dict[str, Any]`) : Parameter server yang dapat berupa: - Untuk server stdio: - command (str): Perintah untuk menjalankan server MCP - args (list[str], opsional): Argumen untuk perintah - env (dict[str, str], opsional): Variabel lingkungan untuk perintah - cwd (Union[str, Path, None], opsional): Direktori kerja untuk perintah - allowed_tools (list[str], opsional): Daftar nama tool yang diizinkan dari server ini - Untuk server SSE: - url (str): URL dari server SSE - headers (dict[str, Any], opsional): Header untuk koneksi SSE - timeout (float, opsional): Timeout koneksi - sse_read_timeout (float, opsional): Timeout baca SSE - allowed_tools (list[str], opsional): Daftar nama tool yang diizinkan dari server ini - Untuk server StreamableHTTP: - url (str): URL dari server StreamableHTTP - headers (dict[str, Any], opsional): Header untuk koneksi StreamableHTTP - timeout (timedelta, opsional): Timeout koneksi - sse_read_timeout (timedelta, opsional): Timeout baca SSE - terminate_on_close (bool, opsional): Apakah akan mengakhiri saat ditutup - allowed_tools (list[str], opsional): Daftar nama tool yang diizinkan dari server ini

Hubungkan ke server MCP

#### bersih[[huggingface_hub.MCPClient.cleanup]]

```python
cleanup()
```

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

Bersihkan sumber daya

#### 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)
```

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

**Parameter:**

messages (`list[dict]`) : Daftar objek pesan yang merepresentasikan riwayat percakapan

exit_loop_tools (`list[ChatCompletionInputTool]`, *opsional*) : Daftar alat yang harus mengakhiri generator saat dipanggil

exit_if_first_chunk_no_tool (`bool`, *opsional*) : Berhenti jika tidak ada tool yang hadir di chunk pertama. Default ke False.

**Hasil:**

chunk [ChatCompletionStreamOutput](/docs/huggingface_hub/v2.4.0/id/package_reference/inference_types#huggingface_hub.ChatCompletionStreamOutput) atau objek [ChatCompletionInputMessage](/docs/huggingface_hub/v2.4.0/id/package_reference/inference_types#huggingface_hub.ChatCompletionInputMessage)

Proses kueri menggunakan `self.model` dan alat yang tersedia, menghasilkan chunk dan keluaran alat.

## Agen[[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)
```

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

**Parameter:**

model (`str`, *opsional*) : Model untuk menjalankan inferensi. Bisa berupa id model yang dihosting di Hugging Face Hub, misalnya `meta-llama/Meta-Llama-3-8B-Instruct`, atau URL ke Inference Endpoint yang telah di-deploy atau endpoint lokal/remote lainnya.

servers (`Iterable[dict]`) : Server MCP untuk dihubungkan. Setiap server adalah kamus yang berisi kunci `type` dan kunci `config`. Kunci `type` dapat berupa `"stdio"` atau `"sse"`, dan kunci `config` adalah kamus berisi argumen untuk server.

provider (`str`, *opsional*) : Nama penyedia yang akan digunakan untuk inferensi. Nilai defaultnya adalah "auto", yaitu penyedia pertama yang tersedia untuk model tersebut, diurutkan berdasarkan urutan pengguna di https://hf.co/settings/inference-providers. Jika model berupa URL atau `base_url` diberikan, maka `provider` tidak digunakan.

base_url (`str`, *opsional*) : URL dasar untuk menjalankan inferensi. Bawaan adalah None.

api_key (`str`, *opsional*) : Token yang digunakan untuk autentikasi. Jika tidak disediakan, akan secara default menggunakan token Hugging Face yang disimpan secara lokal. Anda juga dapat menggunakan kunci API penyedia Anda sendiri untuk berinteraksi langsung dengan layanan penyedia tersebut.

prompt (`str`, *opsional*) : Prompt sistem yang akan digunakan untuk agen. Secara default menggunakan prompt sistem bawaan di `constants.py`.

Implementasi Agen Sederhana, yaitu loop while sederhana yang dibangun langsung di atas [MCPClient](/docs/huggingface_hub/v2.4.0/id/package_reference/mcp#huggingface_hub.MCPClient).

> [!WARNING]
> Kelas ini bersifat eksperimental dan mungkin mengalami perubahan yang merusak di masa depan tanpa pemberitahuan sebelumnya.

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

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

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

**Parameter:**

user_input (`str`) : Input pengguna untuk menjalankan agen.

abort_event (`asyncio.Event`, *opsional*) : Peristiwa yang dapat digunakan untuk membatalkan agen. Jika peristiwa disetel, agen akan berhenti berjalan.

Jalankan agen dengan input pengguna yang diberikan.

