8.5 KiB
Locar REST API with MCP
Here is the transcribed text from the provided images, with the values updated to your specified configuration.
Local REST API with MCP
How to access via REST
You can access the Obsidian local REST API & MCP server via the following URL:
- Encrypted (HTTPS) API URL:
[https://127.0.0.1:27124/](https://127.0.0.1:27124/)
Requires that this certificate be configured as a trusted certificate authority for your browser.
Authorization:
Your API key should be passed as a bearer token via the Authorization header:
Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e
How to access via MCP
You can connect to the MCP server via the following endpoint:
- Encrypted (HTTPS) MCP Endpoint:
[https://127.0.0.1:27124/mcp/](https://127.0.0.1:27124/mcp/)
Requires that this certificate be configured as a trusted certificate authority.
Authorization:
Your API key should be passed as a bearer token via the Authorization header:
Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e
Example Claude Configuration
Example Claude code MCP configuration (for .Claude/settings.json):
{
"mcpServers": {
"obsidian": {
"type": "http",
"url": "https://127.0.0.1:27124/mcp/",
"headers": {
"Authorization": "Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e"
}
}
}
}
Settings Overview
- Enable non-encrypted (HTTP) server: Enables a non-encrypted (HTTP) server on the port designated. By default, this plugin requires a secure HTTPS connection.
- Reset all cryptography: Pressing this button will cause your certificate, private key, public key, and API key to be regenerated.
- Re-generate certificates: Pressing this button will cause your certificate, private key, and public key to be re-generated, but your API key will remain unchanged.
- Restore default settings: Pressing this button will reset this plugin's settings to defaults.
- Show advanced settings: Advanced settings are dangerous and may make your configuration unstable.
Примеры запросов
- Вывести список файлов в папке:
curl -k "https://127.0.0.1:27124/vault/Фракции" ^
-H "Authorization: Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e" ^
--insecure
{
"files": [
"Tests/",
"Арфисты/",
"Башня Колдовства Лускана.md",
"Гильдии воров.md",
"Гоблины, отряды.md",
"Жентарим/",
"ИП/",
"Корабль Курта.md",
"Краснометки/",
"Магические ордена.md",
"Орден Перчатки/",
"Орки, отряды.md",
"Племя Каменной Пасти.md",
"Торговые дома/",
"Фракции.md",
"Церкви/"
]
}
- Поиск файла по имени
Test_Faction_B:
curl --request POST --url "https://127.0.0.1:27124/search/simple/?query=Test_Faction_B" --header "Accept: application/json" --header "Authorization: Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e" --header "Content-Type: application/json" --insecure
[
{
"filename": "Фракции/Tests/Test_Faction_B.md",
"score": -0.0638,
"matches": [
{
"match": {
"start": 0,
"end": 14,
"source": "filename"
},
"context": "Test_Faction_B"
}
]
}
]
- Пример запроса на получение содержимого файла
Фракции/Tests/Test_Faction_B.md:
curl --request GET --url https://127.0.0.1:27124/vault/Фракции/Tests/Test_Faction_B.md --header "Accept: application/json, application/vnd.olrapi.document-map+json, application/vnd.olrapi.note+json, text/html, text/markdown" --header "Authorization: Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e" --header "Markdown-Patch-Version: " --header "Target-Scope: " --insecure
---
force: 2
wealth: 4
cunning: 2
magic: None
hp: 10
hp_max: 10
treasure: 15
state: active
locations:
- "[[Test Location]]"
faction_tags: []
assets:
- name: "Base of Influence — Test Location"
is_base_of_influence: true
hp: 10
hp_max: 10
location: "[[Test Location]]"
cost: 10
- name: Armed Guards
is_base_of_influence: false
hp: 3
hp_max: 3
location: "[[Test Location]]"
attribute: Wealth
tier_required: 1
cost: 1
---
# Test Faction B
Файл для автоматических тестов.
- Перезапись frontmatter, не трогая текст:
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$uri = "https://127.0.0.1:27124/vault/Фракции/Tests/Test_Faction_B.md"
$headers = @{
"Authorization" = "Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e"
"Content-Type" = "text/markdown; charset=utf-8"
}
# 1. Получаем текущий контент
$fullContent = Invoke-RestMethod -Method Get -Uri $uri -Headers $headers
# 2. Отделяем тело файла от фронтматтера
if ($fullContent -match '(?s)^---\r?\n(.*?)\r?\n---\r?\n(.*)') {
$existingBody = $matches[2]
} else {
$existingBody = $fullContent
}
# 3. Ваш НОВЫЙ фронтматтер
$newFrontmatter = @"
---
force: 10
wealth: 20
new_field: true
---
"@
# 4. Соединяем новый фронтматтер и старое тело
$finalContent = $newFrontmatter + "`n" + $existingBody
# 5. Записываем файл обратно
Invoke-RestMethod -Method Put -Uri $uri -Headers $headers -Body ([System.Text.Encoding]::UTF8.GetBytes($finalContent))
- Изменение / добавление во frontmatter поля apple == 3:
curl -X PATCH "https://127.0.0.1:27124/vault/Фракции/Tests/Test_Faction_B.md" ^
-H "Authorization: Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e" ^
-H "Operation: replace" ^
-H "Target-Type: frontmatter" ^
-H "Target: apple" ^
-H "Create-Target-If-Missing: true" ^
-H "Content-Type: application/json" ^
-d "3" ^
--insecure
- Удаление поля:
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$uri = "https://127.0.0.1:27124/vault/Фракции/Tests/Test_Faction_B.md"
$headers = @{ "Authorization" = "Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e" }
# 1. Получение текущего контента
$response = Invoke-RestMethod -Method Get -Uri $uri -Headers $headers
$currentContent = $response
# 2. Удаление строки с полем apple (регулярное выражение удаляет всю строку с ключом)
$newContent = $currentContent -replace '(?m)^force:.*(\r?\n)?', ''
# 3. Полная перезапись через PUT
$headersPUT = @{
"Authorization" = "Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e"
"Content-Type" = "text/markdown"
}
Invoke-RestMethod -Method Put -Uri $uri -Headers $headersPUT -Body $newContent
create_file(PUT для создания файла)
В vault_utils.py метод create_file использует PUT. У вас есть пример с PUT в пункте 4, но он используется как "костыль" для удаления поля.
Что добавить: Одиночный пример создания нового файла (или перезаписи) без предварительного чтения. Это стандартная задача "Создать заметку", которой не хватает в списке примеров.
curl -X PUT "https://127.0.0.1:27124/vault/Фракции/Tests/New_Faction.md" ^
-H "Authorization: Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e" ^
-H "Content-Type: text/markdown" ^
-d "# New Faction2" ^
--insecure
или многострочный текст через Powershell:
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$uri = "https://127.0.0.1:27124/vault/Фракции/Tests/New_Faction.md"
$headers = @{
"Authorization" = "Bearer 31c4ee60e78cea8503d0ac076298a0da6f5cbc3992f4e4cdc97d84fcbf27248e"
"Content-Type" = "text/markdown; charset=utf-8"
}
$body = [System.Text.Encoding]::UTF8.GetBytes("# New Faction`r`nКонтент заметки")
Invoke-RestMethod -Method Put -Uri $uri -Headers $headers -Body $body