Agentic Resource Discovery Server

unlisted

by Sébastien Dubois

Local-first Agentic Resource Discovery publisher and registry that serves your AI skills and tools to agents over a local HTTP and MCP server.

3 starsUpdated 19d agoMIT
View on GitHub

Agentic Resource Discovery Server

Turn your Obsidian vault into a local-first Agentic Resource Discovery (ARD) publisher and Agent Registry. The plugin scans your AI Skills, builds a rich ai-catalog.json, and runs a localhost server so AI agents on your machine can discover and fetch exactly the skill they need — by natural-language search — without those skills ever leaving your computer.

Built for people who have accumulated dozens or hundreds of AI Skills and MCP servers and don't want to load them all into every agent's context window. Instead of registering everything everywhere, publish them to a local catalog and let agents search it.

What it does

  • Scans your skill folders (Anthropic Agent Skill format — SKILL.md + frontmatter) at startup, without blocking Obsidian, and turns each skill into a rich catalog entry: description, tags, capabilities, and synthesized example queries.
  • Serves an ARD registry over http://127.0.0.1 with a required bearer token:
    • GET /.well-known/ai-catalog.json — the public catalog
    • POST /search — natural-language search, results ranked 0–100 by relevance
    • POST /explore — facet counts (types, tags, capabilities) so an agent can see what's available before searching
    • GET /agents — deterministic, paginated listing, filterable by type, tags, and capabilities
    • GET /skills/<name>/SKILL.md (and bundled assets) — so an agent can fetch a skill's body and resources directly
  • Exposes an MCP endpoint (POST /mcp) using the Code Mode pattern: search, get_skill, and execute tools, where execute runs sandboxed JavaScript against the catalog so an agent can filter and aggregate in a single call — with the same ranking as POST /search.
  • Shows what's running. The settings Status panel reports the server URL, catalog size, last scan, embedding state, and the MCP endpoint — with one-click Copy MCP config and Copy curl example buttons.
  • Stays fast on repeat use. Rescans only re-parse SKILL.md files that actually changed, and embedding vectors are cached across reloads, so a warm restart with a semantic backend is ready immediately.
  • Adds zero mandatory downloads. The default search backend is an in-process BM25 index (MiniSearch) — no model, no network. Optionally, 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 if the server is down.

Status

Early but functional. The REST registry, skill scanning/enrichment, skill file serving, the MCP Code Mode endpoint, and optional semantic search (local or hosted embedding server) all work and are covered by 200+ tests. See the technical docs for the architecture and design.

isDesktopOnly — the plugin needs Node's HTTP server and filesystem access.

Install (manual / pre-release)

This plugin isn't in the community catalog yet. To try it:

  1. Build it: bun install && bun run build (see DEVELOPMENT.md).
  2. Copy manifest.json, main.js, and styles.css into <vault>/.obsidian/plugins/agentic-resource-discovery-server/.
  3. Enable Agentic Resource Discovery Server in Obsidian → Settings → Community plugins.

Quick start

  1. Open the plugin settings.
  2. Under Skill folders, add one or more folders that contain skills (each skill is a subfolder with a SKILL.md). Folders may live outside the vault.
  3. Click Rescan skills now. The Status panel shows how many skills were indexed.
  4. Copy the bearer token from the Server section (or use Copy MCP config in Status to get a ready-to-paste client config).
  5. Point an agent at the registry:
# The 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. See the user guide for details.

Documentation

Privacy & security

Everything stays on your machine: the server binds to 127.0.0.1 only, every endpoint except the public catalog requires a bearer token, skill file serving is confined to your configured folders (path-traversal-safe), and the execute sandbox has no network or filesystem access. No telemetry, no cloud.

License

MIT — by Sébastien Dubois. If this is useful, you can buy me a coffee ☕.

My other Obsidian plugins

PluginWhat it does
Book ExporterExport books (one manifest note + linked chapter notes) to EPUB and PDF via Pandoc
Bookshelf BaseDisplay your notes as a visual bookshelf via a custom Bases view
Dataview SerializerSerialize Dataview queries to Markdown, and keep the Markdown representation up to date
ExpanderReplace variables across your vault using HTML comment markers. Supports static values and dynamic functions
Ghost PublishPublish your vault notes to a Ghost blog with configurable presets for tags, newsletters, and frontmatter conventions
Graph Explorer Base ViewA custom Bases view that renders notes as an interactive force-directed graph with explored/unexplored tracking
Hidden Folders AccessIndex hidden root-level folders (e.g. .claude) so they appear in the file tree, metadata cache, and Bases
Journal BasesCustom Base views for journaling and periodic reviews
Kanban Action PlannerRender your notes as configurable Kanban boards and calendars inside Bases, with statuses, ordering, relationships, and scheduling
Life TrackerCapture and visualize the data that matters in your life
Note VillageA 2D pixel art village where your notes become villagers you can explore and chat with using AI
Obsidian Starter KitAdds strong typing support and powerful automation support for notes
Remarkable SynchronizerConnect to the reMarkable cloud, list, download, and sync notebook pages as images
ReplicateUse AI models with ease via the Replicate.com integration
REST and MCP serverExposes CLI commands as RESTful API endpoints and an MCP server for AI tool integration
Time MachineBrowse, compare, and restore previous versions of your notes using built-in file-recovery snapshots
TranscriberTranscribe images to markdown using Ollama vision models
TypefullyPublish social media posts with ease using the Typefully integration
Update TimeAutomatically update front matter to include creation and last update times

Everything I build is documented in my newsletter and on my YouTube channel.

News & support

To stay up to date about this plugin, Obsidian in general, Personal Knowledge Management and note-taking:

If this plugin is useful to you, here are the best ways to support my work ❤️:

Found a bug or have an idea? Open an issue.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.