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

# MCP Tools

> Connect agents to external systems via Model Context Protocol servers.

<Tooltip tip="Model Context Protocol">MCP</Tooltip> is an open standard for
connecting AI agents to external systems — databases, APIs, filesystems, and
services. Friday manages MCP server processes: declare a server in your space
and every `llm` or `user` agent in that space can call its tools.

## Declaring a server

```yaml workspace.yml theme={null}
tools:
  mcp:
    servers:
      github:
        transport:
          type: stdio
          command: npx
          args: ["-y", "@modelcontextprotocol/server-github"]
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: from_environment
      time:
        transport:
          type: stdio
          command: uvx
          args: ["mcp-server-time", "--local-timezone", "UTC"]
```

Each key under `servers` is the server ID you'll use to prefix tool names. The `transport` block tells Friday how to start the server. Use `from_environment` for credentials — the daemon injects them at process start.

## Tool naming

Tools must be referenced as `serverId/toolName` in an agent's `tools` array:

```yaml theme={null}
# Server ID is "github", tool name is "create_pull_request_review"
tools:
  - github/create_pull_request_review
  - github/get_pull_request
```

Run `friday agent list -w <space>` to see the exact tool names available from each configured server.

**Built-in platform tools** (`memory_save`, `memory_read`) have no prefix and require no MCP server declaration — they're always available:

```yaml theme={null}
tools:
  - memory_save
  - memory_read
  - github/search_issues
```

## Using tools in an llm agent

```yaml workspace.yml theme={null}
agents:
  pr-reviewer:
    type: llm
    description: "Reviews pull requests using GitHub tools"
    config:
      provider: anthropic
      model: claude-sonnet-4-6
      prompt: |
        Review the pull request and post a summary comment.
      tools:
        - github/create_pull_request_review
        - github/get_pull_request
        - github/get_pull_request_files
```

The LLM decides when and how to call tools based on the task and prompt.

## Using tools in a custom Python agent

Python agents call tools via `ctx.tools` — tool names are bare (no prefix) when calling from code:

```python theme={null}
result = ctx.tools.call("get_pull_request", {"owner": "myorg", "repo": "myrepo", "pull_number": 42})
```

See the [MCP tools guide](/sdk/guides/use-mcp-tools) for the full Python API.

## atlas agents and MCP

`type: atlas` built-in agents are self-contained — they have their own built-in tool surfaces and **ignore the `tools` array entirely**. If you need a specific MCP tool called, use `type: llm` instead.

## Common servers

| Server     | Install                                          | What it provides                  |
| ---------- | ------------------------------------------------ | --------------------------------- |
| GitHub     | `npx -y @modelcontextprotocol/server-github`     | Repos, PRs, issues, commits       |
| Postgres   | `npx -y @modelcontextprotocol/server-postgres`   | SQL queries on Postgres           |
| Filesystem | `npx -y @modelcontextprotocol/server-filesystem` | Read/write local files            |
| Time       | `uvx mcp-server-time`                            | Current time, timezone conversion |
| Fetch      | `uvx mcp-server-fetch`                           | HTTP fetch as a tool              |

Browse the full registry at [github.com/modelcontextprotocol/servers](https://github.com/modelcontextprotocol/servers).

## Transport

`stdio` and `streamable HTTP` transports are supported. SSE transport is planned for a future release.
