Read, write, search and precisely edit Obsidian vault notes, tags and frontmatter over STDIO or Streamable HTTP.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add obsidian --env OBSIDIAN_API_KEY='<OBSIDIAN_API_KEY>' --env CONFIG_PATH='<CONFIG_PATH>' --env MCP_TRANSPORT_TYPE='<MCP_TRANSPORT_TYPE>' --env MCP_LOG_LEVEL='<MCP_LOG_LEVEL>' --env MAX_BODY_LENGTH='<MAX_BODY_LENGTH>' --env MAX_CONTENT_LENGTH='<MAX_CONTENT_LENGTH>' --env OBSIDIAN_HOST='<OBSIDIAN_HOST>' --env OBSIDIAN_PORT='<OBSIDIAN_PORT>' --env OBSIDIAN_PROTOCOL='<OBSIDIAN_PROTOCOL>' --env RATE_LIMIT_MAX_REQUESTS='<RATE_LIMIT_MAX_REQUESTS>' -- npx -y obsidian-mcp-server~/.codex/config.toml
[mcp_servers.obsidian]
command = "npx"
args = ["-y", "obsidian-mcp-server"]
env = { OBSIDIAN_API_KEY = "<OBSIDIAN_API_KEY>", CONFIG_PATH = "<CONFIG_PATH>", MCP_TRANSPORT_TYPE = "<MCP_TRANSPORT_TYPE>", MCP_LOG_LEVEL = "<MCP_LOG_LEVEL>", MAX_BODY_LENGTH = "<MAX_BODY_LENGTH>", MAX_CONTENT_LENGTH = "<MAX_CONTENT_LENGTH>", OBSIDIAN_HOST = "<OBSIDIAN_HOST>", OBSIDIAN_PORT = "<OBSIDIAN_PORT>", OBSIDIAN_PROTOCOL = "<OBSIDIAN_PROTOCOL>", RATE_LIMIT_MAX_REQUESTS = "<RATE_LIMIT_MAX_REQUESTS>" }
# codex mcp add obsidian --env OBSIDIAN_API_KEY='<OBSIDIAN_API_KEY>' --env CONFIG_PATH='<CONFIG_PATH>' --env MCP_TRANSPORT_TYPE='<MCP_TRANSPORT_TYPE>' --env MCP_LOG_LEVEL='<MCP_LOG_LEVEL>' --env MAX_BODY_LENGTH='<MAX_BODY_LENGTH>' --env MAX_CONTENT_LENGTH='<MAX_CONTENT_LENGTH>' --env OBSIDIAN_HOST='<OBSIDIAN_HOST>' --env OBSIDIAN_PORT='<OBSIDIAN_PORT>' --env OBSIDIAN_PROTOCOL='<OBSIDIAN_PROTOCOL>' --env RATE_LIMIT_MAX_REQUESTS='<RATE_LIMIT_MAX_REQUESTS>' -- npx -y obsidian-mcp-server~/.cursor/mcp.json
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp-server"
],
"env": {
"OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
"CONFIG_PATH": "<CONFIG_PATH>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MAX_BODY_LENGTH": "<MAX_BODY_LENGTH>",
"MAX_CONTENT_LENGTH": "<MAX_CONTENT_LENGTH>",
"OBSIDIAN_HOST": "<OBSIDIAN_HOST>",
"OBSIDIAN_PORT": "<OBSIDIAN_PORT>",
"OBSIDIAN_PROTOCOL": "<OBSIDIAN_PROTOCOL>",
"RATE_LIMIT_MAX_REQUESTS": "<RATE_LIMIT_MAX_REQUESTS>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"obsidian": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"obsidian-mcp-server"
],
"env": {
"OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
"CONFIG_PATH": "<CONFIG_PATH>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MAX_BODY_LENGTH": "<MAX_BODY_LENGTH>",
"MAX_CONTENT_LENGTH": "<MAX_CONTENT_LENGTH>",
"OBSIDIAN_HOST": "<OBSIDIAN_HOST>",
"OBSIDIAN_PORT": "<OBSIDIAN_PORT>",
"OBSIDIAN_PROTOCOL": "<OBSIDIAN_PROTOCOL>",
"RATE_LIMIT_MAX_REQUESTS": "<RATE_LIMIT_MAX_REQUESTS>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp-server"
],
"env": {
"OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
"CONFIG_PATH": "<CONFIG_PATH>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MAX_BODY_LENGTH": "<MAX_BODY_LENGTH>",
"MAX_CONTENT_LENGTH": "<MAX_CONTENT_LENGTH>",
"OBSIDIAN_HOST": "<OBSIDIAN_HOST>",
"OBSIDIAN_PORT": "<OBSIDIAN_PORT>",
"OBSIDIAN_PROTOCOL": "<OBSIDIAN_PROTOCOL>",
"RATE_LIMIT_MAX_REQUESTS": "<RATE_LIMIT_MAX_REQUESTS>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp-server"
],
"env": {
"OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
"CONFIG_PATH": "<CONFIG_PATH>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MAX_BODY_LENGTH": "<MAX_BODY_LENGTH>",
"MAX_CONTENT_LENGTH": "<MAX_CONTENT_LENGTH>",
"OBSIDIAN_HOST": "<OBSIDIAN_HOST>",
"OBSIDIAN_PORT": "<OBSIDIAN_PORT>",
"OBSIDIAN_PROTOCOL": "<OBSIDIAN_PROTOCOL>",
"RATE_LIMIT_MAX_REQUESTS": "<RATE_LIMIT_MAX_REQUESTS>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp-server"
],
"env": {
"OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
"CONFIG_PATH": "<CONFIG_PATH>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MAX_BODY_LENGTH": "<MAX_BODY_LENGTH>",
"MAX_CONTENT_LENGTH": "<MAX_CONTENT_LENGTH>",
"OBSIDIAN_HOST": "<OBSIDIAN_HOST>",
"OBSIDIAN_PORT": "<OBSIDIAN_PORT>",
"OBSIDIAN_PROTOCOL": "<OBSIDIAN_PROTOCOL>",
"RATE_LIMIT_MAX_REQUESTS": "<RATE_LIMIT_MAX_REQUESTS>"
}
}
}
}Environment variables
OBSIDIAN_API_KEYCONFIG_PATHMCP_TRANSPORT_TYPEMCP_LOG_LEVELMAX_BODY_LENGTHMAX_CONTENT_LENGTHOBSIDIAN_HOSTOBSIDIAN_PORTOBSIDIAN_PROTOCOLRATE_LIMIT_MAX_REQUESTS
Replace the placeholders with your own credentials and keep them out of version control.