obsidian-plugins
Searches and queries the official Obsidian community directory (8,900+ plugins and 870+ themes). Provides keyword search across plugins, themed search filters for dark/light mode, retrieval of details for a single plugin (downloads, latest version, last-update date, release count), and ranking of the most downloaded plugins in a category — so agents can check what already exists, judge whether a plugin is maintained or abandoned, and find gaps before building.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@obsidian-pluginsis there already an Obsidian plugin for pomodoro timers?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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-releasesindex.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.mdOther 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-mcpClaude 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 installWay | Use |
Command |
|
Skill |
|
MCP server |
|
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 pomodoro27 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 |
| Plugins matching all keywords, most downloaded first |
| One plugin: downloads, latest version, last update, releases |
| Most downloaded plugins, optionally filtered |
| Themes, with |
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 |
|
Find a theme, or check a theme idea |
|
Judge one plugin: alive or abandoned? |
|
See what is popular in a category |
|
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 testnpm 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-tagsThe workflow checks that the tag matches package.json, runs the tests, then publishes with provenance.
License
MIT. See LICENSE.
Available Tools
4 toolsget_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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Plugin id, e.g. 'dataview' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | Yes | Keywords, all must match (case-insensitive) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Filter by supported color mode | any |
| limit | No | Max results | |
| query | Yes | Keywords, all must match (case-insensitive). Empty-ish terms match all. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Optional keyword filter |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.3.2- First observed
get_plugin - First observed
search_plugins - First observed
search_themes - First observed
top_plugins
TDQS
Scored across 4 tools
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.
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.
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.
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
Related MCP Connectors
Search a curated directory of agent tools, MCP servers, APIs, protocols and skills. No auth.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Search 41,000+ agent skills, MCP servers, plugins & loops — real install counts and stars.
Search the HeyClaude directory of Claude Code agents, MCP servers, skills, and tools.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to explore, search, and manage local Obsidian vault documents with tools for document search, automatic frontmatter property generation, and attachment organization.529 npm2ISC
- FlicenseCqualityFmaintenanceProvides 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.5416-
- AlicenseAqualityBmaintenanceEnables AI agents to search a curated directory of Claude Code agent skills, MCP servers, and plugin marketplaces ranked by community signal.451 npm1MIT

plugandship-mcpofficial
AlicenseAqualityCmaintenanceEnables 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.4MIT