{"data":{"slug":"cyanheads-obsidian-mcp-server","name":"obsidian-mcp-server","tagline":"A tool for manipulating and interacting with Obsidian vaults through Model Context Protocol.","github_url":"https://github.com/cyanheads/obsidian-mcp-server","owner":"cyanheads","repo":"obsidian-mcp-server","owner_avatar_url":"https://avatars.githubusercontent.com/u/10339515?v=4","primary_language":"TypeScript","stars":642,"forks":99,"topics":["ai-tools","cyanheads","knowledge-base","mcp","model-context-protocol","note-taking","obsidian","typescript"],"archived":false,"github_pushed_at":"2026-06-30T09:48:30+00:00","maintenance_label":"Active","url":"https://www.graphcanon.com/tools/cyanheads-obsidian-mcp-server","markdown_url":"https://www.graphcanon.com/tools/cyanheads-obsidian-mcp-server.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/cyanheads-obsidian-mcp-server","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=cyanheads-obsidian-mcp-server","description":"Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.","homepage_url":"https://www.npmjs.com/package/obsidian-mcp-server","license":"Apache-2.0","open_issues":25,"watchers":7,"ai_summary":"cyanheads/obsidian-mcp-server enables reading, writing, searching, and editing notes within Obsidian knowledge bases using the Model Context Protocol over STDIO or Streamable HTTP.","readme_excerpt":"## Getting started\n\nAdd the following to your MCP client configuration file. The Obsidian Local REST API plugin must be installed and enabled in your vault — see [Prerequisites](#prerequisites).\n\n```json\n{\n  \"mcpServers\": {\n    \"obsidian-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"bunx\",\n      \"args\": [\"obsidian-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\",\n        \"OBSIDIAN_API_KEY\": \"your-local-rest-api-key\"\n      }\n    }\n  }\n}\n```\n\nOr with npx (no Bun required):\n\n```json\n{\n  \"mcpServers\": {\n    \"obsidian-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"obsidian-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\",\n        \"OBSIDIAN_API_KEY\": \"your-local-rest-api-key\"\n      }\n    }\n  }\n}\n```\n\nFor Streamable HTTP, set the transport and start the server. Inline env vars work for one-off runs; for repeated use, copy values into `.env` (see [`.env.example`](./.env.example)) and run `bun run start:http`.\n\n```sh\nMCP_TRANSPORT_TYPE=http OBSIDIAN_API_KEY=... bun run start:http\n\n---\n\n### Installation\n\n1. **Clone the repository:**\n\n   ```sh\n   git clone https://github.com/cyanheads/obsidian-mcp-server.git\n   ```\n\n2. **Navigate into the directory:**\n\n   ```sh\n   cd obsidian-mcp-server\n   ```\n\n3. **Install dependencies:**\n\n   ```sh\n   bun install\n   ```\n\n4. **Configure environment:**\n\n   ```sh\n   cp .env.example .env\n   # edit .env and set OBSIDIAN_API_KEY\n   ```\n\n---\n\n### Docker\n\n```sh\ndocker build -t obsidian-mcp-server .\ndocker run --rm -e OBSIDIAN_API_KEY=your-key -p 3010:3010 obsidian-mcp-server\n```\n\nThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/obsidian-mcp-server`. OpenTelemetry peer dependencies are installed by default — build with `--build-arg OTEL_ENABLED=false` to omit them.\n\nThe image binds to `0.0.0.0` inside the container (required for Docker port mapping). For any deployment reachable beyond your own machine, set `MCP_AUTH_MODE=jwt` (with `MCP_AUTH_SECRET_KEY`) or `oauth` — otherwise the listener forwards your `OBSIDIAN_API_KEY` to the vault on behalf of every caller.\n\n---\n\n## License\n\nApache-2.0 — see [LICENSE](LICENSE) for details.","github_created_at":"2025-01-23T23:01:25+00:00","created_at":"2026-07-11T11:55:10.740874+00:00","updated_at":"2026-07-27T18:00:14.01776+00:00","categories":[{"slug":"data-retrieval","name":"Data & Retrieval","url":"https://www.graphcanon.com/categories/data-retrieval","markdown_url":"https://www.graphcanon.com/categories/data-retrieval.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/data-retrieval"},{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"}],"tags":[{"slug":"ai-tools","name":"ai-tools"},{"slug":"cyanheads","name":"cyanheads"},{"slug":"knowledge-base","name":"knowledge-base"},{"slug":"mcp","name":"mcp"},{"slug":"model-context-protocol","name":"model-context-protocol"},{"slug":"note-taking","name":"note-taking"},{"slug":"obsidian","name":"obsidian"},{"slug":"typescript","name":"typescript"}],"trust":{"provenance":{"is_fork":false,"github_id":921418273,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-27T18:00:13.052Z","maintenance":{"label":"Active","score":82,"methodology":"github_public_v1","releases_90d":8,"days_since_push":27,"last_release_at":"2026-06-30T09:49:45Z"},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-26T04:00:32.907Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-07-27T18:00:13.582Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-07-27T18:00:13.582Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-07-27T18:00:13.582Z","managed_saas":false},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-07-27T18:00:13.582Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-07-27T18:00:13.582Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-07-27T18:00:13.582Z"},"license_spdx":{"value":"Apache-2.0","source":"github.license","observed_at":"2026-07-27T18:00:13.582Z"}},"decision_facts":{"hosting":null,"pricing":{"model":"freemium","summary":"Freely accessible and distributable with commercial usage allowed."},"requirements":{"notes":["The software requires a running Obsidian vault, basic knowledge of TypeScript, and an understanding of Model Context Protocol for effective use."],"min_ram_gb":null,"requires_docker":false},"constraints":{"min_ram_gb":null,"pricing_model":"freemium","requires_docker":false},"when_to_use":["When requiring precise manipulation of content, tags, and metadata within an Obsidian knowledge base through automated scripts or third-party applications that support the Model Context Protocol.","For developers who need to integrate Obsidian data retrieval and modification functionalities directly into their TypeScript-based projects."],"when_not_to_use":["When working with non-Obsidian knowledge bases as this tool is specifically designed for manipulating content within an Obsidian vault framework.","If your project does not require the Model Context Protocol for communication, as this introduces a specific layer of protocol handling that may be unnecessary overhead."],"source":"enrich:decision_facts","observed_at":"2026-07-15T10:13:52.778Z"},"constraint_facets":{"min_ram_gb":null,"pricing_model":"freemium","requires_docker":false},"decision_summary":[{"label":"Pricing","value":"freemium - Freely accessible and distributable with commercial usage allowed."},{"label":"Requirements","value":"The software requires a running Obsidian vault, basic knowledge of TypeScript, and an understanding of Model Context Protocol for effective use."},{"label":"Adopt for","value":"The obsidian-mcp-server is a specialized utility for interacting with Obsidian vaults using the Model Context Protocol over STDIO or Streamable HTTP."},{"label":"License detail","value":"The Apache-2.0 license applies to obsidian-mcp-server, allowing free use, modification, and distribution under certain conditions."}]}}