> For the complete documentation index, see [llms.txt](https://docs.balkan.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.balkan.id/balkanid-mcp/installation-and-setup/librechat.md).

# LibreChat

Connect [LibreChat](https://www.librechat.ai/docs/features/mcp) to BalkanID MCP.

**OAuth is preferred.** API keys remain available for Read-only or static-token setups.

### One-click (OAuth — recommended)

1. Open <https://mcp.balkanid.app>, sign in, and confirm the correct **tenant**.
2. Under **OAuth Connectors**, select **LibreChat**.
3. Click **Copy MCP config**. The snippet defines `balkanid` with `type: streamable-http` and the BalkanID MCP URL (no `headers` — OAuth runs when the server is first used).
4. In LibreChat, open **MCP Settings** and add the server from the copied config, or merge it into `librechat.yaml` under `mcpServers` if your deployment manages servers centrally.
5. LibreChat detects that BalkanID requires OAuth and prompts you to sign in. Complete BalkanID sign-in, select your **tenant**, and grant consent.

{% hint style="info" %}
OAuth currently requires **both Read and Write** scopes. See Authentication and Permissions.
{% endhint %}

Servers added through **MCP Settings** take effect immediately; servers added to `librechat.yaml` require a restart of your LibreChat deployment.

### Manual configuration (OAuth fallback)

Add a remote server entry to `librechat.yaml`:

```yaml
mcpServers:
  balkanid:
    type: streamable-http
    url: 'https://mcp.balkanid.app/server/mcp'
```

Restart LibreChat. On first use of a BalkanID tool, LibreChat starts the OAuth flow.

### One-click (API key)

1. Create an API key in the [MCP UI](https://mcp.balkanid.app) under **Bearer Auth Keys**.
2. Open **Connect** for that key, choose **LibreChat**, and copy the config (includes the Bearer header).
3. Add it via **MCP Settings**, or merge into `librechat.yaml` and restart.

### Manual configuration (API key fallback)

```yaml
mcpServers:
  balkanid:
    type: streamable-http
    url: 'https://mcp.balkanid.app/server/mcp'
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
```

Replace `YOUR_TOKEN_HERE` with the token from the MCP UI. Use a Read-only key when you only need discovery tools.

### Verify

Ask LibreChat: “Call whoami on BalkanID MCP.” You should see your email and tenant ID.

### Disable or remove

If you added BalkanID yourself through **MCP Settings**, remove it there the same way you added it. If it was deployed centrally in `librechat.yaml`, ask your LibreChat operator to remove the `balkanid` block and restart the deployment — this affects every user of the instance, not just you.

### Official documentation

LibreChat documentation for MCP servers:

* [Model Context Protocol (MCP)](https://www.librechat.ai/docs/features/mcp) — LibreChat Docs


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.balkan.id/balkanid-mcp/installation-and-setup/librechat.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
