Skip to content

MCP (Model Context Protocol) client usage with mistral.rs Python API

MCP (Model Context Protocol) client usage with mistral.rs Python API.

Connects to an MCP server, auto-discovers tools, and makes them available to the model during conversations.

Install the filesystem server first: npx @modelcontextprotocol/server-filesystem . -y

"""
MCP (Model Context Protocol) client usage with mistral.rs Python API.
Connects to an MCP server, auto-discovers tools, and makes them available
to the model during conversations.
Install the filesystem server first: npx @modelcontextprotocol/server-filesystem . -y
"""
import mistralrs
def main():
# Connect to a local filesystem MCP server
mcp_config = mistralrs.McpClientConfigPy(
servers=[
mistralrs.McpServerConfigPy(
id="filesystem",
name="Filesystem Tools",
source=mistralrs.McpServerSourcePy.Process(
command="npx",
args=["@modelcontextprotocol/server-filesystem", "."],
work_dir=None,
env=None,
),
)
]
)
# Other transport types are also supported:
#
# McpServerSourcePy.Http(url="https://hf.co/mcp", timeout_secs=30, headers=None)
# McpServerSourcePy.WebSocket(url="wss://api.example.com/mcp", timeout_secs=30, headers=None)
#
# For authentication, set bearer_token="your-token".
# To avoid tool name conflicts, set tool_prefix="prefix".
runner = mistralrs.Runner(
which=mistralrs.Which.Plain(
model_id="Qwen/Qwen3-4B",
arch=mistralrs.Architecture.Qwen3,
),
mcp_client_config=mcp_config,
)
request = mistralrs.ChatCompletionRequest(
model="default",
messages=[
{"role": "user", "content": "List the files in the current directory."}
],
max_tokens=1000,
tool_choice=mistralrs.ToolChoice.Auto,
)
response = runner.send_chat_completion_request(request)
print(response.choices[0].message.content)
if __name__ == "__main__":
main()

Source: examples/python/mcp_client.py