> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dartantic.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server Support

> Connect to MCP servers running in the cloud or local processes on your machine.

An MCP server (aka Model Context Protocol server), is an external service that
provides data, capabilities, or tools to a Large Language Model (LLM). These
servers enable LLMs to interact with other systems like databases, the internet,
or local files, allowing them to perform actions, fetch information, and
integrate into larger workflows by presenting their functions as tools the LLM
can use.

Dartantic has built-in support for mapping the tools from an MCP server, whether
it's local or running in the cloud, via a built-in `McpClient` class.

## Remote MCP Servers

Connect to MCP servers running in the cloud:

```dart theme={null}
// Connect to remote MCP server
final huggingFace = McpClient.remote(
  'huggingface',
  url: Uri.parse('https://hf.co/mcp'),
);

// Get tools from the server
final tools = await huggingFace.listTools();

// Use with your agent
final agent = Agent('google', tools: tools);
final result = await agent.send('Who is hugging face?');
```

## Local MCP Servers

Connect to local processes running on your machine:

```dart theme={null}
final calculator = McpClient.local(
  'calculator',
  command: 'npx',
  args: ['-y', '@modelcontextprotocol/server-calculator'],
);

final tools = await calculator.listTools();
final agent = Agent('anthropic', tools: [...tools]);

await agent.send('What is 15 multiplied by 27?');
```

## Combining Multiple Sources

Mix local tools, MCP servers, and custom tools:

```dart theme={null}
// Local tool
final timeTool = Tool(
  name: 'local_time',
  description: 'Get current time',
  onCall: (_) async => {'time': DateTime.now().toIso8601String()},
);

// MCP servers
final wiki = McpClient.remote('wiki', url: wikiUrl);
final hf = McpClient.remote('hf', url: hfUrl);

// Combine everything
final agent = Agent('google', tools: [
  timeTool,
  ...await wiki.listTools(),
  ...await hf.listTools(),
]);

await agent.send('What time is it and who is hugging face?');
```

## Examples

* [MCP
  Servers](https://github.com/csells/dartantic_ai/blob/main/packages/dartantic_ai/example/bin/mcp_servers.dart)

## Next Steps

* [Tool Calling](/tool-calling) - Create custom tools
