Obsidian MCP Server
Allows AI assistants to read, write, search, and manage Obsidian notes, folders, periodic notes, and commands via the Obsidian Local REST API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Obsidian MCP Servershow me today's daily note"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Obsidian MCP Server
一个基于Model Context Protocol (MCP)的Obsidian Local REST API服务器,允许AI助手与你的Obsidian笔记进行交互。
功能特性
📖 读取和写入Obsidian笔记
📁 浏览和管理文件夹结构
🔍 搜索笔记内容
📅 管理周期性笔记(日记、周记等)
⚡ 执行Obsidian命令
🔐 支持安全的HTTPS连接
🎯 支持所有Obsidian Local REST API功能
Related MCP server: Obsidian MCP Server
前置要求
Obsidian - 安装最新版本的Obsidian
Local REST API插件 - 在Obsidian中安装并启用"Local REST API"插件
Node.js - 版本 18+
安装
方式1: 通过npx直接使用(推荐)
npx -y github:cupkappu/mcp-obsidian-server方式2: 全局安装
npm install -g github:cupkappu/mcp-obsidian-server
mcp-obsidian-server方式3: 从源码安装
# 克隆项目
git clone https://github.com/cupkappu/mcp-obsidian-server.git
cd mcp-obsidian-server
# 安装依赖
npm install
# 构建项目
npm run build配置
在使用MCP服务器之前,你需要:
1. 配置Obsidian Local REST API插件
在Obsidian中打开设置
转到"插件"选项卡
找到"Local REST API"插件并点击其设置
记录以下信息:
API Key - 插件生成的API密钥
Host - 通常是
127.0.0.1Port - 默认HTTPS端口是
27124,HTTP端口是27123SSL - 是否启用HTTPS(推荐)
2. 设置环境变量
创建一个 .env 文件或设置以下环境变量:
# 必需 - 你的Obsidian API密钥
export OBSIDIAN_API_KEY="your-api-key-here"
# 可选 - 服务器配置(如果使用默认值则可省略)
export OBSIDIAN_HOST="127.0.0.1" # 默认: 127.0.0.1
export OBSIDIAN_PORT="27124" # 默认: 27124 (HTTPS) 或 27123 (HTTP)
export OBSIDIAN_SECURE="true" # 默认: true (使用HTTPS)使用方法
1. 直接运行
# 设置环境变量并运行
OBSIDIAN_API_KEY="your-api-key" npm start2. 在MCP客户端中使用
将以下配置添加到你的MCP客户端配置文件中:
Claude Desktop配置示例
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "github:cupkappu/mcp-obsidian-server"],
"env": {
"OBSIDIAN_API_KEY": "your-api-key-here",
"OBSIDIAN_HOST": "127.0.0.1",
"OBSIDIAN_PORT": "27124",
"OBSIDIAN_SECURE": "true"
}
}
}
}或者如果你全局安装了:
{
"mcpServers": {
"obsidian": {
"command": "mcp-obsidian-server",
"env": {
"OBSIDIAN_API_KEY": "your-api-key-here"
}
}
}
}Continue.dev配置示例
在你的 continue.json 配置文件中:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["@cupkappu/mcp-obsidian-server"],
"env": {
"OBSIDIAN_API_KEY": "your-api-key-here"
}
}
}
}可用工具
MCP服务器提供以下工具:
系统工具
get_server_info- 获取服务器信息和认证状态
活动文件操作
update_active_file- 更新当前活动文件append_to_active_file- 向当前活动文件追加内容
文件操作
get_file- 获取指定文件内容create_or_update_file- 创建或更新文件append_to_file- 向文件追加内容delete_file- 删除文件
目录操作
list_directory- 列出目录内容
搜索功能
search_simple- 简单文本搜索
命令操作
get_commands- 获取可用命令列表execute_command- 执行Obsidian命令
文件管理
open_file- 在Obsidian中打开文件
周期性笔记
get_periodic_note- 获取周期性笔记append_to_periodic_note- 向周期性笔记追加内容
使用示例
一旦配置完成,你就可以在AI助手中使用类似以下的指令:
"请帮我查看今天的日记内容"
"在我的学习笔记中搜索'机器学习'"
"创建一个新的项目笔记,标题为'新项目计划'"
"列出我的笔记库根目录下的所有文件"故障排除
常见问题
连接错误
确保Obsidian正在运行且Local REST API插件已启用
检查API密钥是否正确
验证主机和端口设置
证书错误(HTTPS模式)
Local REST API插件使用自签名证书
服务器会自动忽略证书验证错误
如果仍有问题,可以尝试使用HTTP模式(设置
OBSIDIAN_SECURE=false)
权限错误
确保API密钥有效且未过期
检查Obsidian中的插件设置
调试
启用详细日志:
DEBUG=1 OBSIDIAN_API_KEY="your-api-key" npm start开发
开发模式运行
npm run dev构建项目
npm run build项目结构
src/
├── index.ts # MCP服务器主文件
├── client.ts # Obsidian API客户端
└── types.ts # TypeScript类型定义
build/ # 编译后的JavaScript文件许可证
MIT License
贡献
欢迎提交Pull Request和Issue!
支持
如果你遇到问题:
检查Obsidian Local REST API插件的设置
验证环境变量配置
查看服务器日志输出
提交Issue到GitHub仓库
注意: 这个MCP服务器需要Obsidian Local REST API插件正常运行。请确保插件已正确安装并配置。
Available Tools
14 toolsappend_to_active_fileC
Append content to the currently active file
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to append |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description carries the full burden of behavioral disclosure. It only states the operation without mentioning side effects (e.g., whether it creates the file if missing, whether it respects file locks, or whether it requires an active file context). The undefined 'active file' concept adds ambiguity rather than clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. It is appropriately sized for the tool's simplicity, though it could include a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema and lack of annotations, the description is incomplete. The term 'active file' is unsupported and unexplained, which is critical for an agent to know when this tool is relevant. No operational context (e.g., whether the file must already exist, whether the append is atomic) is provided, leaving a gap in understanding for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter 'content' with a description ('Content to append'), so schema coverage is 100%. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Append content') and a distinct resource ('currently active file'). It does not explain what 'active file' means, which may create some ambiguity, and it does not explicitly differentiate from sibling tools like append_to_file, but the verb+resource is specific enough for basic comprehension.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as append_to_file, update_active_file, or create_or_update_file. The phrase 'currently active file' implies a state, but the description does not clarify prerequisites or situations where this tool is preferred, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_to_fileB
Append content to a file (creates file if it does not exist)
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to append | |
| filename | Yes | Path to the file relative to vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the append and create-on-missing behavior, which is helpful, but it does not disclose permissions required, failure modes, whether content is inserted at the end, or what the response looks like. For a mutation tool, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core action and the most important conditional behavior. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the essential action but leaves gaps in usage guidance and behavioral detail. The lack of annotations and absence of return-value information mean the description could be more complete in guiding an agent, especially with sibling tools available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully described in the input schema. The description adds no additional parameter-level meaning beyond what the schema already provides. The create-if-missing note indirectly relates to the filename behavior, but this is not a significant enhancement over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (append) and resource (file), and adds the key behavior of creating the file if it does not exist. While it does not explicitly differentiate from sibling tools like append_to_active_file, the phrase 'to a file' and the create-if-missing note provide enough specificity for basic selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you want to append content to a specific file, possibly creating it), but it does not provide explicit context about when to prefer this over alternatives like append_to_active_file or create_or_update_file. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
append_to_periodic_noteC
Append content to current periodic note
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Period type | |
| content | Yes | Content to append |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only says 'append content.' It doesn't disclose whether the note is created if missing, how formatting is handled, whether timestamps are added, or any permission requirements. There's no contradiction, but the behavioral disclosure is insufficient for a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, which is appropriate for a simple tool. However, it's so terse that it leaves ambiguity about 'current' and behavioral details, making it slightly under-specified rather than genuinely concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with two parameters and no output schema, so the description is not drastically inadequate. Still, it could benefit from clarifying the current-note mechanism and append behavior, especially given sibling tools exist for other append targets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters, so a baseline of 3 is appropriate. The description adds the word 'current' but doesn't explain how the period enum maps to a specific note, nor does it add formatting or syntax details for content beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (append) and resource (periodic note), distinguishing it from append_to_file and append_to_active_file by the periodic-note context. However, 'current' is vague without explaining how the period parameter maps to a specific note, and it doesn't explicitly differentiate from get_periodic_note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over siblings like append_to_active_file, append_to_file, or get_periodic_note. There are no exclusions, alternatives, or context clues about the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_or_update_fileB
Create a new file or update an existing one
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | File content | |
| filename | Yes | Path to the file relative to vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action and omits critical traits such as whether updates overwrite the entire file, whether directories are created, or any error semantics. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's function without filler or redundancy. Every word contributes to the core message, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple with only two well-documented parameters, the description lacks essential behavior like overwrite semantics and fails to clarify the difference between 'update' and append operations. It leaves important trust and safety questions unanswered, so it is not complete enough for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for both parameters (filename and content), achieving 100% coverage. The description itself adds no extra parameter context, but the schema already documents the meaning of each parameter, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'create' and 'update' with the resource 'file', clearly indicating the tool's dual purpose. It distinguishes from sibling tools like delete_file and append_to_file by implying full-content replacement on update, making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like append_to_file or update_active_file. The description does not explicitly state that update overwrites existing content or provide any decision rules, leaving the choice to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileB
Delete a file from the vault
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Path to the file relative to vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'delete a file' which is expected from the name, but does not mention that deletion is permanent, irreversible, or any potential side effects (e.g., whether the file is moved to trash or permanently removed). This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. Every word is necessary; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description states the action and scope adequately. However, it omits important context about the destructive nature of the operation (e.g., permanence), which would be expected for a delete tool, especially in the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter 'filename' with its description 'Path to the file relative to vault root'. The tool description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Delete' and a clear resource 'a file from the vault', which clearly distinguishes it from sibling tools like get_file, create_or_update_file, and append_to_file. It unambiguously states the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It merely states the action without any context about appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_commandC
Execute an Obsidian command
| Name | Required | Description | Default |
|---|---|---|---|
| commandId | Yes | ID of the command to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavioral traits. It only says "Execute an Obsidian command" and provides no context about potential side effects, permissions required, whether the command modifies the vault, or if the operation is reversible. This is a significant gap for a command execution tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded with the verb and resource. While it is brief, it is appropriately sized for a simple tool and does not suffer from verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, no output schema, and no annotations, so the description must provide sufficient context. It only states the action without explaining how to find command IDs, what kinds of commands are available, or any expected outcomes. This is incomplete for a tool that executes commands, especially given the presence of a sibling get_commands that could be referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter commandId, which already explains it is the ID of the command to execute. The description adds no additional meaning beyond that. Since the schema handles parameter documentation, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb "execute" with the resource "Obsidian command," clearly indicating this tool runs a command. It distinguishes from siblings like get_commands (which lists commands) and file operations. However, it does not specify what type of commands are supported, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool or when to prefer an alternative. It does not mention that get_commands can be used to discover available command IDs, nor does it state any prerequisites or side effects. There is no exclusionary language.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commandsA
Get a list of available Obsidian commands
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. 'Get a list' implies a read-only operation, but the description does not explicitly state safety, return format, or whether the list includes any identifying information needed by related tools like execute_command. It adds minimal behavioral context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is appropriately concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (no parameters) the description is mostly adequate, but without an output schema it does not specify what the returned 'list' contains (e.g., command IDs, names, metadata). For interoperability with sibling tools like execute_command, the agent would benefit from knowing whether the list includes usable command identifiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the empty schema fully documents this (100% coverage). Per the baseline for zero-parameter tools, a score of 4 is appropriate. No additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and identifies the resource as 'a list of available Obsidian commands'. This clearly distinguishes the tool from siblings like execute_command (which executes commands) and get_file (which retrieves files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to discover available commands, but it does not explicitly state when to use this tool versus alternatives or provide any exclusion criteria. The context is self-evident for a list command, but there is no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileC
Get the content of a specific file in the vault
| Name | Required | Description | Default |
|---|---|---|---|
| asJson | No | Return structured JSON with metadata instead of raw markdown | |
| filename | Yes | Path to the file relative to vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'get the content,' which implies a read operation, but it does not mention return format, error behavior, or side effects. The schema covers the asJson parameter, but the description adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words, front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite full parameter schema coverage, the description lacks context about return values and how to differentiate from open_file. With no output schema and no annotations, this minimal description leaves gaps for an agent to understand the exact output and when to choose this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for both parameters (filename path and asJson behavior), giving 100% schema coverage. The description adds no additional semantic value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves file content from the vault using the verb 'get' and specifies the resource. It distinguishes from sibling tools that perform different operations like create, delete, or list, though it does not explicitly contrast with open_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like open_file or get_periodic_note. The description simply states what it does without any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_periodic_noteA
Get current periodic note for the specified period
| Name | Required | Description | Default |
|---|---|---|---|
| asJson | No | Return structured JSON with metadata | |
| period | Yes | Period type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not indicate potential side effects (e.g., creating a note if missing), the default return format, or how the asJson parameter alters behavior. The description only states the basic intent, leaving important behavioral traits undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the verb and resource. It contains no fluff or redundancy, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should clarify return values and behavior for edge cases. It does not describe what the function returns (e.g., note content as markdown or JSON) or the behavior when no note exists. The description is adequate for a simple retrieval tool but has notable gaps in return semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents period and asJson parameters. The description adds the phrase 'specified period' which maps to the period parameter but does not enrich beyond the schema. Hence, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), resource ('periodic note'), and scope ('current for the specified period'). It distinguishes this from sibling tools like append_to_periodic_note, which is a write operation, and get_file, which is generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case: retrieve the current periodic note for a given period. However, it does not explicitly mention alternatives or exclusions, such as when to use append_to_periodic_note for modifications or how this relates to get_file. The purpose is clear enough that a user can infer when to use it, but there is no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_infoA
Get Obsidian server information and authentication status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation via 'Get' and explicitly mentions 'authentication status', adding some context. However, it does not disclose the exact return format, potential failures, or any side effects beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero params, no output schema), the description gives a high-level summary of the return content ('server information and authentication status'). It could be more specific about the fields, but it is adequate for a basic status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema covers everything trivially (100% coverage). The description does not need to elaborate on parameters, and the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with a clear resource ('Obsidian server information and authentication status'). It clearly distinguishes this tool from sibling tools, which focus on file operations, commands, or periodic notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, suggest using it to check server connectivity before other operations, or contrast it with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryB
List files and folders in a directory
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory path relative to vault root (empty for root) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action and does not reveal whether the listing is recursive, includes hidden files, or handles errors. No additional context is given about the operation's safety or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words—'List files and folders in a directory'—that efficiently conveys the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, this description is minimally adequate. However, it omits details about the return format, recursion behavior, or hidden files, which would improve completeness given the absence of annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single 'path' parameter (100% schema description coverage), including its meaning and default. The tool description adds no extra parameter information, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('files and folders in a directory'), which distinguishes it from siblings like get_file or search_simple. However, it does not mention the vault-rooted path scope or explicitly differentiate alternatives, so it falls slightly short of a top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing directory contents but offers no explicit guidance on when to prefer this tool over alternatives. It lacks any exclusions or context about scenarios where other tools (e.g., search_simple) would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_fileC
Open a file in the Obsidian interface
| Name | Required | Description | Default |
|---|---|---|---|
| newLeaf | No | Open in a new leaf/tab | |
| filename | Yes | Path to the file relative to vault root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior on its own. It only says 'open' in the interface, without explaining side effects (e.g., whether it focuses the window, changes the active file, or returns any response). There is no mention of safety or lack of mutation, leaving the operational behavior largely opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant words. It is concise and front-loaded, immediately stating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is too sparse for full operational completeness. It does not explain what 'open in the Obsidian interface' means for programmatic use, whether it returns content, or how it relates to sibling tools like get_file. The context signals show a simple tool, but the description still leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters (filename and newLeaf) with descriptions. The tool description adds no additional parameter meaning, but the schema already does the heavy lifting. Baseline 3 is appropriate since the schema fully documents parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Open a file in the Obsidian interface' clearly states the action (open) and the resource (a file in Obsidian). It implies a UI operation, which distinguishes it from file-reading or writing tools like get_file and create_or_update_file, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. It does not mention that this is for interacting with the Obsidian UI rather than retrieving file contents, nor does it specify prerequisites like the vault being open. The description provides no context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_simpleB
Perform a simple text search across the vault
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| contextLength | No | Amount of context to return around matches |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It merely restates the action without disclosing return format, read-only nature, search semantics (e.g., case sensitivity, regex), or side effects. This adds minimal value beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is concise and well-structured for a tool of this simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does not explain what a search result looks like or how 'contextLength' affects output. For a standalone tool, this is a significant gap in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for both 'query' and 'contextLength'. The description adds no additional parameter semantics, so the baseline score of 3 applies due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a text search across the vault, using a specific verb and resource. This distinguishes it from sibling tools, which are all file/command operations, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'simple text search' implies usage for basic search within the vault, but there is no explicit when-to-use guidance or mention of alternatives. Since no other search tool exists among siblings, the guidance is implicitly clear but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_active_fileA
Replace the content of the currently active file
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | New content for the file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly states the core destructive behavior (replacing content), but it does not disclose prerequisites (e.g., the file must already exist and be active), irreversibility beyond the word 'replace', or any side effects. The statement is minimal but accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that is front-loaded and contains no unnecessary words. It efficiently states the tool's purpose without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description adequately captures the essential action. It could slightly benefit from an explicit note about the file needing to exist and the fact that this replaces rather than appends, but overall it is sufficiently complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with the parameter 'content' described as 'New content for the file'. The description adds little beyond echoing this, simply connecting the parameter to the replacement action. The baseline of 3 is appropriate given the schema already handles semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Replace' with a clear resource 'content of the currently active file'. It distinguishes well from siblings like append_to_active_file (which adds content) and create_or_update_file (which handles named files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently active file' implies a usage context, and the verb 'replace' implies when to use it (full overwrite). However, there is no explicit guidance on when to prefer this over alternatives like append_to_active_file or create_or_update_file, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v1.0.0- First observed
append_to_active_file - First observed
append_to_file - First observed
append_to_periodic_note - First observed
create_or_update_file - First observed
delete_file - First observed
execute_command - First observed
get_commands - First observed
get_file - First observed
get_periodic_note - First observed
get_server_info - First observed
list_directory - First observed
open_file - First observed
search_simple - First observed
update_active_file
TDQS
Scored across 14 tools
Most tools have clearly distinct purposes, but there is potential confusion between active-file operations (update_active_file, append_to_active_file) and general file operations (create_or_update_file, append_to_file). Descriptions clarify the distinction, but the overlap in functionality could cause an agent to select the wrong tool in some contexts.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_file, create_or_update_file, delete_file). The naming is uniform with no style mixing, and the verbs clearly indicate the action being performed.
With 14 tools, the server covers the core of Obsidian's note-taking functionality without becoming overwhelming. Each tool serves a distinct purpose, and the count is well within the typical range for a domain-specific MCP server.
The tool set covers CRUD operations for files, search, directory listing, command execution, and periodic notes—covering the main workflows. However, there are minor gaps: no way to read the currently active file (only update/append it), and no rename/move or folder creation operations. These are workable but not ideal.
Maintenance
Related MCP Connectors
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Securely search, create, and organize your Mem notes and collections from AI assistants.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAllows AI models to interact with Obsidian notes through the Local REST API, enabling creation, reading, updating, searching of notes, and Git-based automatic backups.6,2221MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Obsidian notes via local REST API, supporting file CRUD, search, commands, and periodic notes.6,2227Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, read, and analyze Obsidian notes via the Local REST API.1918ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Obsidian vaults via the local REST API, supporting CRUD operations, batch processing, templates, and vault analytics.MIT