Agentic Resource Discovery Server plugin for Obsidian
Canonical version: Agentic Resource Discovery Server plugin for Obsidian.
Obsidian community plugin that turns your vault into a local-first Agentic Resource Discovery (ARD) publisher and Agent Registry. It scans your AI Skills and your subagent definitions, builds a rich ai-catalog.json, and runs a localhost server so AI agents on your machine can discover and fetch exactly the skill or persona they need by natural-language search, without any of it leaving your computer.
Created by Sébastien Dubois. Licensed under MIT.
This one is for people who have piled up dozens or hundreds of AI Skills and MCP servers and don't want to load all of them into every agent's context window. Instead of registering everything everywhere, you publish them to a local catalog and let agents search it.
How It Works
- Scans your skill folders (Anthropic Agent Skill format —
SKILL.mdplus frontmatter) at startup, without blocking Obsidian - Scans your subagent folders too (opt-in): one
<name>.mdper agent with frontmatter (name,description,tools,model) and the system prompt as body, the Claude Code.claude/agents/shape. Each becomes an entry of typeapplication/ai-agent+mdunderurn:air:<publisher>:subagents:<name>, so an agent can find "the editor" the way it finds a skill - Turns each skill and definition into a catalog entry: description, tags, capabilities, and synthesized example queries
- Serves an ARD registry over
http://127.0.0.1with a required bearer token - Folders may live outside the vault — you point it at wherever your skills already are
isDesktopOnly: the plugin needs Node's HTTP server and filesystem access
Endpoints
GET /.well-known/ai-catalog.json— the public catalog (no auth)POST /search— natural-language search, results ranked 0–100 by relevance (pageSize, or its aliaslimit, caps the result count)GET /status— readiness: catalog size, active search backend, and whether semantic embeddings are built yet (a semantic backend answers lexical-only while its index builds)GET /agents— deterministic, paginated listingGET /skills/<name>/SKILL.md— fetch a skill's body and bundled assets directlyGET /subagents/<name>.md— fetch a subagent definition (frontmatter plus system prompt)POST /mcp— Model Context Protocol (MCP) endpoint using the Code Mode pattern
MCP Code Mode
The MCP endpoint exposes search, get_resource (get_skill remains as an alias), and execute. search takes a filter.type to pick a family (application/ai-skill or application/ai-agent+md); get_resource returns an entry with its body, resolved by URN rather than by URL so an entry that merely looks local can never be answered with a local file. execute runs sandboxed JavaScript against the catalog, so an agent can filter and aggregate in a single call instead of round-tripping. The sandbox has no network or filesystem access.
Search Backends
- Default: in-process BM25 index (MiniSearch). No model, no network, nothing to download.
- Optional: point it at a local embedding server you already run (Ollama, LM Studio, …) for hybrid semantic search. Nothing is bundled or downloaded by the plugin, and it falls back to lexical search if the server is down.
Privacy & Security
- Server binds to
127.0.0.1only - Every endpoint except the public catalog requires a bearer token
- Skill file serving is confined to your configured folders (path-traversal-safe); artifact bodies are re-checked against their scan root at serve time, so a symlink swapped in later is refused
- Subagent folders are off until you add one: every listed definition's name, description and tool list becomes part of the public catalog (the prompt body stays behind the bearer token)
- The
executesandbox has no network or filesystem access - No telemetry, no cloud
Status
1.2.1. The REST registry, skill and subagent scanning and enrichment, artifact serving, the MCP Code Mode endpoint, and optional semantic search all work and are covered by 380+ tests. Since 1.1.0, skills are found by their own quoted trigger phrases in lexical search; since 1.2.0, the plugin can keep its entry in the vault's .mcp.json in sync (port and token), so Claude Code connects without manual copying; since 1.2.1, /search pages through results with pageToken. Available in the official Obsidian community directory since 2026-09-23: https://community.obsidian.md/plugins/agentic-resource-discovery-server (install it from Settings → Community plugins, or from the GitHub release).
Quick Start
- Open the plugin settings
- Under Skill folders, add folders that contain skills (each skill is a subfolder with a
SKILL.md); under Subagent folders, optionally add a folder of agent definitions (e.g..claude/agents) - Click Rescan now — the status line shows how many skills and subagents were indexed
- Copy the bearer token from the Server section
- Point an agent at the registry (default port
27182):
# Public catalog needs no auth:
curl http://127.0.0.1:27182/.well-known/ai-catalog.json
# Search needs the bearer token:
curl -X POST http://127.0.0.1:27182/search \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{"query":{"text":"summarize a long note"}}'
To use it as an MCP server, point your MCP client at http://127.0.0.1:27182/mcp with the bearer token.
References
- Community: https://community.obsidian.md/plugins/agentic-resource-discovery-server
- Documentation: https://dsebastien.github.io/obsidian-agentic-resource-discovery-server/
- Source code: https://github.com/dsebastien/obsidian-agentic-resource-discovery-server
- Agentic Resource Discovery: https://agenticresourcediscovery.org
Using it from Claude Code without a skill catalog
With claude --disable-slash-commands --strict-mcp-config and only this registry as MCP server, a session boots at about half the tokens of one that preloads every skill description, and finds skills and personas through search / get_resource instead. See MCP Code Mode and the osk-meta-ard-discovery skill in the Obsidian Starter Kit.
Related
- Obsidian CLI REST MCP plugin for Obsidian
- Model Context Protocol (MCP)
- AI Agents
- Obsidian Starter Kit
- Obsidian
About Sébastien
Ready to get to the next level?
Found this valuable? Share it with someone who needs it.