Skip to main content
Glama
pitfa19

obsidian-plugins

by pitfa19

obsidian-community-plugins-mcp

Check before you build. Search all 9,000+ Obsidian plugins from your coding agent.

Building an Obsidian plugin or tool? Find out what already exists, who maintains it, and where the gaps are, before you write a line of code.

Install in Cursor Install in VS Code

CI License: MIT Node 18+ MCP Read-only

What it is · Install · Example · Command line · Tools · Safety


What it is

The Obsidian community has 9,000+ plugins, and many ideas are already taken. There are 27 plugins that mention pomodoro alone. Coding agents do not know this. Ask one to build a plugin and it starts writing, without checking whether a better one already exists. Ask it what is out there and it answers from memory: plugins that do not exist, plugins abandoned years ago, nothing recent.

This gives your agent the real directory, the same list Obsidian's own plugin browser uses, so it can check what exists before it builds. Use it as a skill, a command, or an MCP server.

  • Every plugin and theme. 9,000+ plugins and 880+ themes from the official obsidianmd/obsidian-releases index.

  • See what is alive. Each result has downloads, latest version and last-update date. A popular plugin last updated in 2021 is a gap you could fill. A maintained one with a million downloads is a reason to contribute instead.

  • Nothing to set up. No API key, no account, no local database. Two dependencies.

  • Only reads. It never touches your vault or installs anything.

It is for anyone building Obsidian plugins, themes or tools, and for the coding agents that help them: Claude Code, Codex, Cursor and others. It works just as well when you only want to pick the right plugin to install.

Related MCP server: Obsidian MCP Server

Install

You need Node 18 or newer. Pick one way:

You use

Best fit

Why

A coding agent with a terminal (Claude Code, Codex, jcode)

Skill

Costs your agent's context almost nothing until it is needed

A chat app without a terminal (Claude Desktop, Cursor chat)

MCP server

The app calls the tools directly

Your own shell or scripts

Command

Plain text or JSON output

Skill

Copy the skill into your agent's skills folder. For Claude Code:

mkdir -p ~/.claude/skills/obsidian-plugin-check
curl -sL https://raw.githubusercontent.com/pitfa19/obsidian-community-plugins-mcp/main/skills/obsidian-plugin-check/SKILL.md \
  -o ~/.claude/skills/obsidian-plugin-check/SKILL.md

Other agents: put SKILL.md wherever they load skills, or paste it into AGENTS.md. The agent then searches the directory by itself whenever you ask it to build an Obsidian plugin. If Node is missing, the skill falls back to curl and jq.

MCP server

Cursor or VS Code: click the install button at the top of this page.

Claude Code:

claude mcp add obsidian-plugins -- npx -y obsidian-community-plugins-mcp

Claude Desktop, Windsurf and other clients. Add this to your MCP config:

{
  "mcpServers": {
    "obsidian-plugins": {
      "command": "npx",
      "args": ["-y", "obsidian-community-plugins-mcp"]
    }
  }
}

Restart the client. Ask "is there already an Obsidian plugin for pomodoro timers?" to check it works.

To remove it, delete the skill folder or the MCP config entry (claude mcp remove obsidian-plugins). The only other trace is a 4 MB cache in ~/.cache/obsidian-community-plugins, created by the command line.

From a local copy

To run it from files on your machine instead of from GitHub (offline use, a fork, or your own changes), clone it and point every install at that folder:

git clone https://github.com/pitfa19/obsidian-community-plugins-mcp.git ~/obsidian-community-plugins-mcp
cd ~/obsidian-community-plugins-mcp && npm install

Way

Use

Command

node ~/obsidian-community-plugins-mcp/server.mjs search pomodoro

Skill

cp -r ~/obsidian-community-plugins-mcp/skills/obsidian-plugin-check ~/.claude/skills/, then change the skill's npx -y obsidian-community-plugins-mcp lines to node ~/obsidian-community-plugins-mcp/server.mjs

MCP server

"command": "node", "args": ["/full/path/to/obsidian-community-plugins-mcp/server.mjs"] in your MCP config. Use the full path; ~ is not expanded there.

To pass a single file around, build a package with npm pack and install it anywhere with npm install ./obsidian-community-plugins-mcp-1.3.0.tgz.

Example

You: Build me an Obsidian plugin with a pomodoro timer.

Before writing code, the agent runs search pomodoro. It finds 27 matches. The top ones:

Plugin

Downloads

Latest

Updated

TaskNotes (tasks with built-in pomodoro)

2,113,918

4.13.8

2026-10-02

Status Bar Pomodoro Timer

67,167

0.1.15

2025-01-21

Pomodoro Timer

60,566

1.2.3

2024-05-30

Pomodoro Plugin

16,983

0.0.2

2021-05-20

So instead of building the 28th timer, it can tell you: this category is crowded and alive. TaskNotes already ties pomodoros to tasks, and dedicated timers such as Gentle Pomodoro (updated 2026-10-08), Minidoro and PomoBar are maintained. Only 4 of the 27 matches have gone a year without an update. Contribute to one that exists, or build something clearly different. Every name and number is real, and "27 matches" counts plugins that mention the word, so a few only mention it in passing.

It works the same way when you only want to pick a plugin to install. Ask "what should I use for flashcards?" and you get Spaced Repetition (614,850 downloads) and newer alternatives, not guesses.

Command line

The same search, as a command. This is what the skill runs.

npx -y obsidian-community-plugins-mcp search pomodoro
27 plugins match "pomodoro" (top 10 by downloads)

TaskNotes (tasknotes) | 2,113,918 downloads | v4.13.8 | updated 2026-10-02
    Note-based task management with calendar, pomodoro and time-tracking integration.
    https://github.com/callumalpass/tasknotes
...

Command

What it does

search <keywords>

Plugins matching all keywords, most downloaded first

info <plugin-id>

One plugin: downloads, latest version, last update, releases

top [keywords]

Most downloaded plugins, optionally filtered

themes [keywords]

Themes, with --mode dark or --mode light

Add --limit N for more results and --json for machine-readable output. Exit code 1 means "not found", 2 a usage error, 3 a network failure. Run with no command and it starts the MCP server instead.

MCP tools

You want

Tool

Check if your idea already exists

search_plugins: keyword search, most downloaded first

Find a theme, or check a theme idea

search_themes: filter by dark or light mode, with screenshot links

Judge one plugin: alive or abandoned?

get_plugin: downloads, latest version, last update, release count

See what is popular in a category

top_plugins: most downloaded, optionally filtered by keyword

The tool descriptions tell the agent to search before it builds, so it calls them on its own. Every result links to the plugin's GitHub repo, so your agent can read its README and source when it needs details.

Safety

  • Read-only toward the world. Every tool and command only reads public data. Nothing is installed, and your vault is never touched.

  • One network destination. It fetches three public JSON files from raw.githubusercontent.com. No other network calls, no telemetry.

  • No credentials. It needs no API key or token.

  • One local file write. The command line caches the index in ~/.cache/obsidian-community-plugins (or $XDG_CACHE_HOME). The MCP server keeps it in memory only.

  • Honest limits. Search is plain keyword matching, not semantic. Data is cached for 10 minutes, so a plugin listed a minute ago may take that long to appear. Download counts come from Obsidian's public stats file and are not independently verified.

How it works

It downloads the three index files (about 5 MB) and keeps them for 10 minutes: in memory for the MCP server, on disk for the command line, so repeat commands take about 0.1 seconds. Searches run locally against that copy. Downloads time out and retry, and if GitHub is unreachable it keeps serving the last good copy.

Development

git clone https://github.com/pitfa19/obsidian-community-plugins-mcp.git && cd obsidian-community-plugins-mcp
npm install
npm test

npm test starts the MCP server and the command line, checks every tool against the live directory, and checks that both return identical results.

Releasing

Pushing a version tag publishes to npm through GitHub Actions (trusted publishing, no stored token):

npm version patch
git push --follow-tags

The workflow checks that the tag matches package.json, runs the tests, then publishes with provenance.

License

MIT. See LICENSE.

Available Tools

4 tools
get_pluginGet Obsidian plugin detailsA

Look up one plugin by exact id (as used in the directory) and return its entry plus downloads, latest version, last-update date and number of releases. Use this to judge whether an existing plugin is alive (recent updates, many releases) or abandoned, before deciding to build, fork, or contribute.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPlugin id, e.g. 'dataview'

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full load. It helpfully enumerates what is returned (downloads, latest version, last-update date, release count), which is real behavioral detail, but says nothing about auth needs, rate limits, or what happens when the id is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The lookup mechanics and return fields come first, then the decision context, which is the right front-loading for this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly enumerates the return fields, and the single required parameter is fully covered by the schema. The only gap is failure behavior for a bad or unknown id, which an agent would likely want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already carries an example ('dataview'), so the baseline is 3. The description adds the meaningful constraint that the id must be the exact directory id, distinguishing this from a fuzzy search input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('look up one plugin by exact id') and scopes it to a single entry, which implicitly separates it from the search/browse siblings. An agent can tell this is a by-id lookup rather than a listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it: to judge whether a plugin is alive or abandoned before deciding to build, fork, or contribute. It does not name search_plugins or top_plugins as alternatives for the discovery case, so the routing guidance is good but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_pluginsSearch Obsidian community pluginsA

Search the official Obsidian community plugin directory (~9000 plugins) by keyword over name, id, author, and description. Use this BEFORE building or proposing any Obsidian plugin or feature, to check whether it already exists, and whenever someone asks which plugin to use. Returns the total number of matches plus the top results with downloads, latest version and last-update date (an old date means possibly abandoned), sorted by downloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
queryYesKeywords, all must match (case-insensitive)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does substantial work: it discloses the result shape (total match count plus top results), the ranking rule (sorted by downloads), and even an interpretation hint that an old last-update date 'means possibly abandoned.' It says nothing about rate limits, failures, or that the operation is a safe read, but for a public directory search the disclosure is above average.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler, and the most important routing instruction ('use this BEFORE building') is front-loaded right after the scope statement. Dense but every clause adds an actionable fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by describing return contents, ranking, and how to interpret recency. Combined with the fully documented 2-parameter schema, an agent has everything needed to invoke and interpret the call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description goes beyond it by naming exactly which fields the keyword matches (name, id, author, description) and noting results are download-sorted. The 'limit' parameter is left to the schema, which documents it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Search the official Obsidian community plugin directory (~9000 plugins) by keyword over name, id, author, and description.' The verb 'search' plus the directory scope makes it easy to separate from get_plugin (fetch one) and top_plugins (ranking list), though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear triggering conditions: 'Use this BEFORE building or proposing any Obsidian plugin or feature, to check whether it already exists, and whenever someone asks which plugin to use.' This is strong proactive guidance, but there is no when-not condition and no explicit routing to top_plugins or get_plugin for adjacent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_themesSearch Obsidian community themesA

Search the official Obsidian community theme directory (~900 themes) by keyword over name and author. Use this before designing a new theme, or to recommend one. Returns the total number of matches plus repo links, supported modes (dark/light), and screenshot URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFilter by supported color modeany
limitNoMax results
queryYesKeywords, all must match (case-insensitive). Empty-ish terms match all.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the return payload (total match count, repo links, supported dark/light modes, screenshot URLs) plus the case-insensitive all-keywords match behavior. It omits anything about pagination interaction with the limit cap, rate limits, or whether the directory lookup is unauthenticated, which keeps it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler: purpose and scope first, usage trigger second, return shape third. Every sentence earns its place and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must describe the return values — and it does, covering match count, repo links, supported modes, and screenshots. Combined with 100%-documented parameters, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents query, mode, and limit fully; the baseline is 3. The description reinforces query semantics (keyword over name and author) and the dark/light mode values, but adds no syntax or matching detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search), resource (official Obsidian community theme directory), scale (~900 themes), and the fields searched (name and author). The theme-vs-plugin distinction separates it cleanly from the search_plugins/top_plugins/get_plugin siblings without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this before designing a new theme, or to recommend one" gives concrete triggering contexts rather than leaving usage implied. It stops short of naming alternatives or stating exclusions (e.g., when to prefer the plugin-directory siblings), so it is clear context but not full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

top_pluginsTop Obsidian plugins by downloadsA

List the most-downloaded community plugins, optionally filtered by keyword. Use this to see which plugins dominate a category before entering it.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoOptional keyword filter

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses the ordering semantics (descending by downloads), which the schema does not state, but omits return shape, pagination, the 100-item cap, and the empty-query behavior. Read-only intent is implied but never affirmed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the action and scope, then the use case. No filler, no redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-param, zero-required list tool with no output schema and no annotations, the description covers what the tool returns at a conceptual level (a ranked plugin list) and its optional filter. The main gap is silence on limit behavior and result ordering guarantees, which is minor at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'query' is documented in the schema while 'limit' has no description there. The description restates the keyword filter ('optionally filtered by keyword') but says nothing about 'limit', its default of 25, or its maximum of 100, so it only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('most-downloaded community plugins') with the ranking criterion folded into the resource itself, which separates it semantically from search_plugins. It does not explicitly name a sibling, but 'most-downloaded' is a clear distinguishing scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a use case ('see which plugins dominate a category before entering it'), which implies a browse-first, discovery-oriented context. It never names search_plugins or get_plugin as alternatives, so the agent must infer when ranked listing beats keyword search.

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.

  1. 4 tool updatesv1.3.2
    • First observedget_plugin
    • First observedsearch_plugins
    • First observedsearch_themes
    • First observedtop_plugins

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct resource+action: top_plugins ranks plugins, search_plugins finds plugins by keyword, search_themes finds themes, and get_plugin fetches one plugin by exact id. The only soft overlap is between top_plugins and search_plugins, since the latter also sorts by downloads, but the descriptions clarify the ranking-overview vs existence-check use cases.

Naming Consistency4/5

All names follow a consistent snake_case verb/qualifier + plural-noun pattern (top_plugins, search_plugins, search_themes, get_plugin). The minor deviation is the singular 'plugin' in get_plugin versus the plural elsewhere, which is a natural singular-lookup convention and still readable.

Tool Count4/5

Four tools is slightly lean but well-scoped for a plugin/theme directory lookup server, with each tool earning its place. One more detail-oriented tool (e.g. get_theme) would round it out without bloat.

Completeness3/5

Plugins have full coverage (rank, search, detail lookup), but the theme side is asymmetric: there is no get_theme or way to fetch a single theme's full details, and no browsing by author or category. These are workable-around gaps via search, but notable for the stated directory domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to explore, search, and manage local Obsidian vault documents with tools for document search, automatic frontmatter property generation, and attachment organization.
    5
    29 npm
    2
    ISC
  • F
    license
    C
    quality
    F
    maintenance
    Provides LLM agents with comprehensive access to Obsidian vaults via the official Obsidian CLI bridge. It enables users to read, search, and modify notes, tasks, properties, and plugins while the Obsidian desktop app is running.
    54
    16
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables coding agents to search an index of 22k+ MCP servers, agent skills and coding-agent plugins directly from chat, returning matches with stars, install commands and page links, plus trending repos and curated best-of topic lists. Read-only, no API key required, usable via a hosted HTTP endpoint or locally over stdio.
    4
    MIT