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

# How to Add an MCP Server to Your Alfera Workspace

> Connect any MCP server to Alfera by pasting its address. Its tools become available to your workers, with the same approvals, encryption, and per-worker controls as every other integration.

Alfera ships with thousands of integrations. When the one you need is missing, connect it yourself, as long as it speaks the Model Context Protocol.

You paste an address. Alfera asks the server what it can do, and its tools join Gmail, Slack and the rest.

<Note>
  Adding a server is a workspace admin action. Any member can use its tools once an admin turns them on for a worker.
</Note>

## Before you start

You need the server's address. It usually ends in `/mcp`, for example `https://mcp.linear.app/mcp`. Vendors publish it under a heading like **MCP server** or **Remote MCP**.

Two addresses will not work:

* Anything that does not start with `https`.
* Anything running on your own machine, such as `http://localhost:3000/mcp`. Alfera runs in the cloud and cannot reach your laptop. If this is you, the next section is the one you want.

## If your server runs on your own machine

Servers you run yourself usually listen on `localhost`, which Alfera cannot reach. Give it a public address instead. Three steps, about five minutes.

<Steps>
  <Step title="Listen on more than localhost">
    Most servers bind to `127.0.0.1`, which nothing outside the machine can reach. Start yours with a flag like `--bind 0.0.0.0` or `--host 0.0.0.0`, and note the port.
  </Step>

  <Step title="Give it a public address">
    A tunnel puts an `https` address in front of a port on your machine. [ngrok](https://ngrok.com) is the usual choice and the free tier is enough.

    ```bash theme={null}
    ngrok http 3131
    ```

    It prints an address like `https://sunny-otter-1234.ngrok-free.dev`. **Paste that plus your server's MCP path**, normally `/mcp`:

    ```
    https://sunny-otter-1234.ngrok-free.dev/mcp
    ```

    If your server has a setting for its own public URL, set it to the tunnel address. Servers that build sign-in links need it.
  </Step>

  <Step title="Make a token">
    A server on the internet needs a credential. Create one however your server does, and keep it for the next section.
  </Step>
</Steps>

<Warning>
  A tunnel lives as long as the command runs. Close the terminal or sleep the laptop and the address stops answering, and a free ngrok address changes on every restart unless you reserve one.

  This is fine for trying it out. For daily use, run the server on a host that stays up, with a stable domain.
</Warning>

## Add the server

<Steps>
  <Step title="Open Integrations">
    In the Alfera app, click **Integrations** in the sidebar menu.
  </Step>

  <Step title="Choose MCP server">
    Under **Connect anything**, click **MCP server**.

    <Frame>
      <img src="https://mintcdn.com/alfera/1-PotS1I1Ex11fDG/images/add-an-mcp-server/connect-anything-mcp-server.png?fit=max&auto=format&n=1-PotS1I1Ex11fDG&q=85&s=5d417c507970be5b5b8572d135ffaf12" alt="The Connect anything row at the top of Integrations, with the MCP server tile and its plus button" width="742" height="228" data-path="images/add-an-mcp-server/connect-anything-mcp-server.png" />
    </Frame>
  </Step>

  <Step title="Paste the address">
    Enter the server's URL and click **Add server**. Alfera contacts the server while you wait, and saves nothing until it answers.

    <Frame>
      <img src="https://mintcdn.com/alfera/1-PotS1I1Ex11fDG/images/add-an-mcp-server/add-mcp-server-dialog.png?fit=max&auto=format&n=1-PotS1I1Ex11fDG&q=85&s=cfba1709eb6e71c63390eac3931e5695" alt="The Add MCP server dialog with the Server URL field and the My server uses a token link beneath it" width="1100" height="726" data-path="images/add-an-mcp-server/add-mcp-server-dialog.png" />
    </Frame>
  </Step>

  <Step title="Finish however the server asks">
    Servers authenticate in three different ways. Each one is covered below.
  </Step>
</Steps>

## The three answers

### The server is ready

Open servers need no credential. Alfera reads the tool list straight away and tells you how many it added.

<Frame>
  <img src="https://mintcdn.com/alfera/1-PotS1I1Ex11fDG/images/add-an-mcp-server/server-is-ready.png?fit=max&auto=format&n=1-PotS1I1Ex11fDG&q=85&s=34712346c20c2871356934cb13ac8bb4" alt="The dialog reporting that the server is connected and how many tools were added" width="1088" height="388" data-path="images/add-an-mcp-server/server-is-ready.png" />
</Frame>

Click **Done**. The tools are in your workspace and your workers can use them straight away.

### The server wants you to sign in

Most hosted servers, including Linear, Notion, Sentry and Stripe, authenticate with your own account. Alfera works out how, registers itself with the vendor, and gives you a link.

Click **Sign in**. The vendor's own consent screen opens in a new tab, showing Alfera as the application requesting access. Approve it there.

You type your password on the vendor's site, never in Alfera. When you return, the dialog closes on its own and the server's tools appear.

### The server uses a token

Servers your own team runs usually authenticate with a token you generate yourself. In the dialog, click **My server uses a token** and paste it.

<Frame>
  <img src="https://mintcdn.com/alfera/1-PotS1I1Ex11fDG/images/add-an-mcp-server/access-token-field.png?fit=max&auto=format&n=1-PotS1I1Ex11fDG&q=85&s=41a5bde0e74e58c8921c39033f1d5f7c" alt="The same dialog after clicking My server uses a token, showing the Access token field" width="1182" height="924" data-path="images/add-an-mcp-server/access-token-field.png" />
</Frame>

Alfera checks the token against the server before saving anything, so a wrong or expired one is refused while you are still looking at the dialog. Once accepted it is encrypted and stored like every other credential.

<Warning>
  Never paste a token into a chat message. Anything typed in chat stays in the conversation and in the worker's context.
</Warning>

## Add a server by asking

You can also ask a worker to do it, in chat or in Slack:

```text theme={null}
Connect the MCP server at https://mcp.deepwiki.com/mcp
```

The worker adds the server and replies with a sign-in link if one is needed. This is the same action as the dialog and needs the same admin permission.

A worker declines only when the server needs a token, and points you back to **Integrations**. A token typed in chat stays in the conversation.

## Using the tools

There is nothing to switch on. A worker searches the catalogue when it needs something and finds the server's tools alongside every other integration. Just ask:

```text theme={null}
Search your tools for the ones this server added, then use them to answer my question
```

Naming the server helps a worker narrow a long list. One server can add a hundred tools.

## What Alfera does with a server you add

A server you paste has not been vetted by Alfera, so:

* **Tool descriptions are stored word for word.** Your worker reads them, so a dishonest server can put instructions in front of it.
* **A server's safety claims are ignored.** The protocol lets a server mark a tool read-only. Alfera treats every tool from an added server as one that changes something.
* **Tools that disappear are retired, not deleted.** Your history still points at them. An unreachable server changes nothing, because an outage is not proof a tool is gone.
* **Addresses are checked before they are fetched.** Alfera resolves the hostname, refuses private and internal addresses, and refuses redirects.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Alfera cannot reach the server">
    Open the address in a browser. Pasting a documentation page is the most common mistake. The address you want is the server itself, usually ending in `/mcp`, and it does not render as a readable page.

    Running it yourself? Check the tunnel is still up, that the server was started with `--bind 0.0.0.0` rather than the default localhost, and that you pasted the tunnel address plus `/mcp`, not the bare tunnel address and not `localhost`.
  </Accordion>

  <Accordion title="Sign-in fails after the consent screen">
    Some servers need a specific plan, or an administrator to enable access, before they issue a token. Check the vendor's requirements.

    If the message names a scope, the server is refusing a permission it advertises. Send the exact message to the vendor.
  </Accordion>

  <Accordion title="The server needs a client ID">
    A few servers, GitHub among them, do not let applications register themselves. Contact us and we will configure it.
  </Accordion>

  <Accordion title="The server is added but a worker will not use its tools">
    Name the server in your request, for example "use the Linear tools to...". A worker searches by what it is trying to do, so a tool named for something else can be missed.

    Check the connection is still **Active** under **Integrations**. A server behind a tunnel or a laptop stops answering when that machine sleeps.
  </Accordion>

  <Accordion title="Alfera says the server is already in this workspace">
    It is connected already. Find it in **Integrations** under the vendor's name, not the address you pasted.
  </Accordion>
</AccordionGroup>

## Servers to try

<CardGroup cols={2}>
  <Card title="DeepWiki" icon="book">
    `https://mcp.deepwiki.com/mcp`

    Answers questions about any public GitHub repository. No sign-in.
  </Card>

  <Card title="Context7" icon="file-lines">
    `https://mcp.context7.com/mcp`

    Up-to-date documentation for libraries and frameworks.
  </Card>

  <Card title="Linear" icon="list-check">
    `https://mcp.linear.app/mcp`

    Issues, projects, and cycles. Signs in with your Linear account.
  </Card>

  <Card title="Notion" icon="note-sticky">
    `https://mcp.notion.com/mcp`

    Pages and databases. Signs in with your Notion account.
  </Card>
</CardGroup>

## Next steps

* [Connect a Tool](/integrations/connect-a-tool) to add an integration Alfera already supports
* [Approvals](/control/approvals) to control which actions wait for a human
