> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/cloud/ai/mcp/providers/obsidian.md).

# Obsidian

Connect the Obsidian MCP server.

The Obsidian MCP server lets the chat read, search and write notes in an Obsidian vault. Transport: **Stdio**.

{% hint style="warning" %}
Obsidian is a **Stdio** server: Norbix starts it as a program on the Norbix server, with the **Command** (default `docker`) and **Arguments** you give. The Norbix server image has no `docker`, `npx` or `uvx` today (checked on a local Norbix stack), so the server cannot start and the chat gets none of its tools. You can save and test it — the test only checks the stored secret. Use an **HttpStream** server ([Brave Search](/codemash/cloud/ai/mcp/providers/brave-search.md), [GitHub](/codemash/cloud/ai/mcp/providers/github.md), [Stripe](/codemash/cloud/ai/mcp/providers/stripe.md)) for now. Through the SDK, CLI and API it is saved the same way: [Save Mcp Integration](/codemash/api-reference/ai/integrations/save-mcp-integration.md).
{% endhint %}

## Get your credentials

1. In Obsidian, install and enable the community plugin [Local REST API](https://github.com/coddingtonbear/obsidian-local-rest-api).
2. Open the plugin's settings and copy its **API key**. The plugin listens on `127.0.0.1`, port `27124` by default — the Norbix server must be able to reach that address.
3. The server program is `mcp-obsidian`, started with `uvx mcp-obsidian`. It reads `OBSIDIAN_API_KEY`, `OBSIDIAN_HOST` and `OBSIDIAN_PORT`.

More in the server's own guide: [mcp-obsidian](https://github.com/MarkusPfundstein/mcp-obsidian).

## Connect it in Cloud

**Where:** Project → Integrations → MCP → **Add New Integration** → Obsidian → **Connect** · `/projects/<project>/ai/mcps/integrations/new/obsidian`

| Field                 | Required | What it does                                                                                   | Example                                                                                                |
| --------------------- | -------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Command               | no       | The program to start. Empty = `docker`.                                                        | `uvx`                                                                                                  |
| Arguments             | no       | One argument per line.                                                                         | `mcp-obsidian`                                                                                         |
| Environment Variables | no       | `KEY=VALUE`, one per line, passed to the program. Stored encrypted, asked again on every save. | `OBSIDIAN_API_KEY=placeholder-not-real` `OBSIDIAN_HOST=127.0.0.1` `OBSIDIAN_PORT=27124` (one per line) |
| Integration Name      | yes      | How the integration is listed in Norbix.                                                       | `Team notes`                                                                                           |

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-a553a74868f93bd2be95814e391ada0a9bb75abf%2Fobsidian-form-1.png?alt=media" alt="New Obsidian Integration form filled with placeholder values"><figcaption><p>The filled form (secrets are made-up placeholders).</p></figcaption></figure>

Press **Save**. The title becomes *Editing Obsidian integration*, the badges say **ENABLED** and **NOT TESTED**, the id (`int_…`) appears, the secret field is empty again with the note that it will not be displayed, and the test panel appears.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-d977473a9d81c6fd43c29626e3f20805c889ba03%2Fobsidian-saved-2.png?alt=media" alt="The Obsidian integration after save: badges ENABLED and NOT TESTED, the id, and the Test integration panel"><figcaption><p>After save.</p></figcaption></figure>

## Test and set as default

**Test integration** only checks that Norbix can read the stored secret; it does not start or call the server — see [Test an MCP integration](/codemash/cloud/ai/mcp/test.md). MCP integrations have no default: every enabled one is offered to the end-user chat — see [Default MCP integration](/codemash/cloud/ai/mcp/set-default.md). To keep it away from the chat: [Disable or delete](/codemash/cloud/ai/mcp/disable.md).

## Common errors

| Message                             | Cause                                                                                        | Fix                               |
| ----------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------- |
| No tools of this server in the chat | Norbix cannot start the **Command** on its server (no `docker`, `npx` or `uvx` there today). | Use an HttpStream server for now. |
| *Required* under the secret field   | The secret is asked again on every save.                                                     | Type it again.                    |
