# McpTool

> **Class** in `langchain_azure_ai`

📖 [View in docs](https://reference.langchain.com/python/langchain-azure-ai/tools/builtin/_tools/McpTool)

A tool that gives the model access to an external MCP server.

Allows the model to call tools exposed by a remote Model Context
Protocol (MCP) server within a single conversational turn.

Wraps :class:`openai.types.responses.tool_param.Mcp`.

Example::

    from langchain_azure_ai.tools.builtin import McpTool

    tool = McpTool(
        server_label="my_server",
        server_url="https://my-mcp-server.example.com",
    )
    model_with_mcp = model.bind_tools([tool])

## Signature

```python
McpTool(
    self,
    server_label: str,
    *,
    server_url: Optional[str] = None,
    connector_id: Optional[str] = None,
    allowed_tools: Optional[McpAllowedTools] = None,
    headers: Optional[Dict[str, str]] = None,
    require_approval: Optional[McpRequireApproval] = None,
    server_description: Optional[str] = None,
    authorization: Optional[str] = None,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `server_label` | `str` | Yes | A label for this MCP server, used to identify it in tool calls. |
| `server_url` | `Optional[str]` | No | The URL for the MCP server.  Either ``server_url`` or ``connector_id`` must be provided. (default: `None`) |
| `connector_id` | `Optional[str]` | No | Identifier for a built-in service connector (e.g. ``"connector_gmail"``).  Either ``server_url`` or ``connector_id`` must be provided. (default: `None`) |
| `allowed_tools` | `Optional[McpAllowedTools]` | No | List of tool names, or a :class:`~openai.types.responses.tool_param.McpAllowedToolsMcpToolFilter` dict, that the model is allowed to call on this server. (default: `None`) |
| `headers` | `Optional[Dict[str, str]]` | No | Optional HTTP headers to send with every request to the MCP server (e.g. for authentication). (default: `None`) |
| `require_approval` | `Optional[McpRequireApproval]` | No | Whether tool calls require human approval before execution.  Use :data:`~openai.types.responses.tool_param.McpRequireApproval` (``"always"``, ``"never"``, or an approval-filter dict). (default: `None`) |
| `server_description` | `Optional[str]` | No | Optional description of the MCP server. (default: `None`) |
| `authorization` | `Optional[str]` | No | OAuth access token for the MCP server. (default: `None`) |

## Extends

- `BuiltinTool`

## Constructors

```python
__init__(
    self,
    server_label: str,
    *,
    server_url: Optional[str] = None,
    connector_id: Optional[str] = None,
    allowed_tools: Optional[McpAllowedTools] = None,
    headers: Optional[Dict[str, str]] = None,
    require_approval: Optional[McpRequireApproval] = None,
    server_description: Optional[str] = None,
    authorization: Optional[str] = None,
) -> None
```

| Name | Type |
|------|------|
| `server_label` | `str` |
| `server_url` | `Optional[str]` |
| `connector_id` | `Optional[str]` |
| `allowed_tools` | `Optional[McpAllowedTools]` |
| `headers` | `Optional[Dict[str, str]]` |
| `require_approval` | `Optional[McpRequireApproval]` |
| `server_description` | `Optional[str]` |
| `authorization` | `Optional[str]` |


---

[View source on GitHub](https://github.com/langchain-ai/langchain-azure/blob/7a6a664d617264df8dcb12fcfb1bacc09f21d504/libs/azure-ai/langchain_azure_ai/tools/builtin/_tools.py#L371)