174 lines
4.8 KiB
Markdown
174 lines
4.8 KiB
Markdown
# MCP server for Obsidian
|
|
|
|
MCP server to interact with Obsidian via the Local REST API community plugin.
|
|
|
|
<a href="https://glama.ai/mcp/servers/3wko1bhuek"><img width="380" height="200" src="https://glama.ai/mcp/servers/3wko1bhuek/badge" alt="server for Obsidian MCP server" /></a>
|
|
|
|
## Components
|
|
|
|
### Tools
|
|
|
|
The server implements multiple tools to interact with Obsidian:
|
|
|
|
- list_files_in_vault: Lists all files and directories in the root directory of your Obsidian vault
|
|
- list_files_in_dir: Lists all files and directories in a specific Obsidian directory
|
|
- get_file_contents: Return the content of a single file in your vault.
|
|
- search: Search for documents matching a specified text query across all files in the vault
|
|
- patch_content: Insert content into an existing note relative to a heading, block reference, or frontmatter field.
|
|
- append_content: Append content to a new or existing file in the vault.
|
|
- delete_file: Delete a file or directory from your vault.
|
|
|
|
### Example prompts
|
|
|
|
Its good to first instruct Claude to use Obsidian. Then it will always call the tool.
|
|
|
|
The use prompts like this:
|
|
- Get the contents of the last architecture call note and summarize them
|
|
- Search for all files where Azure CosmosDb is mentioned and quickly explain to me the context in which it is mentioned
|
|
- Summarize the last meeting notes and put them into a new note 'summary meeting.md'. Add an introduction so that I can send it via email.
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
The MCP server requires the following environment variables:
|
|
|
|
- `OBSIDIAN_API_KEY`: Your Obsidian Local REST API key (required)
|
|
- `OBSIDIAN_HOST`: The URL for your Obsidian Local REST API (optional, defaults to `https://127.0.0.1:27124`)
|
|
|
|
#### OBSIDIAN_HOST Format
|
|
|
|
The `OBSIDIAN_HOST` variable accepts full URLs with protocol, host, and port. It supports both `localhost` and `127.0.0.1` with either `http` or `https`:
|
|
|
|
```
|
|
http://127.0.0.1:27123
|
|
https://localhost:27124
|
|
http://localhost:27123
|
|
https://127.0.0.1:27124
|
|
```
|
|
|
|
**Note:** The server performs a health check on startup. If the connection fails, you'll get an immediate error message indicating the configuration issue.
|
|
|
|
### Configuration Methods
|
|
|
|
There are two ways to configure the environment variables:
|
|
|
|
#### 1. Add to server config (preferred)
|
|
|
|
```json
|
|
{
|
|
"mcp-obsidian": {
|
|
"command": "uvx",
|
|
"args": [
|
|
"mcp-obsidian"
|
|
],
|
|
"env": {
|
|
"OBSIDIAN_API_KEY": "<your_api_key_here>",
|
|
"OBSIDIAN_HOST": "<your_obsidian_host>"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
Sometimes Claude has issues detecting the location of uv / uvx. You can use `which uvx` to find and paste the full path in above config in such cases.
|
|
|
|
#### 2. Create a `.env` file in the working directory with the following required variable:
|
|
|
|
```
|
|
OBSIDIAN_API_KEY=your_api_key_here
|
|
OBSIDIAN_HOST=your_obsidian_host
|
|
```
|
|
|
|
**Note:** You can find the API key in the Obsidian Local REST API plugin configuration.
|
|
|
|
## Quickstart
|
|
|
|
### Install
|
|
|
|
#### Obsidian REST API
|
|
|
|
You need the Obsidian REST API community plugin running: https://github.com/coddingtonbear/obsidian-local-rest-api
|
|
|
|
Install and enable it in the settings and copy the api key.
|
|
|
|
#### Claude Desktop
|
|
|
|
On MacOS: `~/Library/Application\ Support/Claude/claude_desktop_config.json`
|
|
|
|
On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
|
|
|
|
<details>
|
|
<summary>Development/Unpublished Servers Configuration</summary>
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"mcp-obsidian": {
|
|
"command": "uv",
|
|
"args": [
|
|
"--directory",
|
|
"<dir_to>/mcp-obsidian",
|
|
"run",
|
|
"mcp-obsidian"
|
|
],
|
|
"env": {
|
|
"OBSIDIAN_API_KEY": "<your_api_key_here>",
|
|
"OBSIDIAN_HOST": "<your_obsidian_host>",
|
|
"OBSIDIAN_PORT": "<your_obsidian_port>"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Published Servers Configuration</summary>
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"mcp-obsidian": {
|
|
"command": "uvx",
|
|
"args": [
|
|
"mcp-obsidian"
|
|
],
|
|
"env": {
|
|
"OBSIDIAN_API_KEY": "<your_api_key_here>",
|
|
"OBSIDIAN_HOST": "<your_obsidian_host>"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
</details>
|
|
|
|
## Development
|
|
|
|
### Building
|
|
|
|
To prepare the package for distribution:
|
|
|
|
1. Sync dependencies and update lockfile:
|
|
```bash
|
|
uv sync
|
|
```
|
|
|
|
### Debugging
|
|
|
|
Since MCP servers run over stdio, debugging can be challenging. For the best debugging
|
|
experience, we strongly recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector).
|
|
|
|
You can launch the MCP Inspector via [`npm`](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) with this command:
|
|
|
|
```bash
|
|
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-obsidian run mcp-obsidian
|
|
```
|
|
|
|
Upon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
|
|
|
|
You can also watch the server logs with this command:
|
|
|
|
```bash
|
|
tail -n 20 -f ~/Library/Logs/Claude/mcp-server-mcp-obsidian.log
|
|
```
|