Capacitor MCP Server
This server is an MCP endpoint that gives AI assistants access to the official Capacitor documentation, plugin listings, and Capacitor-related blog posts so they can answer questions without guessing APIs or CLI flags.
search_docs – Search Capacitor docs by keyword, optionally restricted to a section (e.g. apis, ios, cli) and docs version (v8 default, v7, v6, next). Returns matching page titles, URLs, snippets, and section/version info.
get_doc_page – Read the full markdown of a specific Capacitor documentation page by URL or path, including code samples, after locating it with search_docs.
list_plugins – List official and community Capacitor plugins, filterable by query and source, with package name, maintainer, URL, and flags for core/experimental plugins.
list_blog_posts – List the 10 most recent Capacitor-tagged posts from the official Ionic blog to answer what's new, recent releases, and deprecations.
Supports multiple Capacitor documentation versions (v8, v7, v6, next) and points to separate MCP servers for Capawesome and Ionic Framework content when relevant.
Provides access to official Capacitor documentation for multiple versions, enabling searching docs, retrieving doc pages, listing official and community Capacitor plugins, and finding recent Capacitor-related blog posts.
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., "@Capacitor MCP ServerWhat Capacitor plugins are available for push notifications?"
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.
Capacitor MCP Server
Unofficial MCP server for the official Capacitor documentation. It gives AI assistants the current documentation for Capacitor v8, v7, v6 and next, the official and community plugin list, and the Capacitor posts from the Ionic blog — so they stop guessing plugin APIs and CLI flags. Not affiliated with or endorsed by Ionic or OutSystems.
Maintained by Capawesome.
Endpoint
The server is hosted and ready to use. No account, no token, no installation:
https://capacitor-mcp.capawesome.io/mcpRelated MCP server: Apple Dev MCP Server
Installation
Claude Code
claude mcp add --transport http capacitor https://capacitor-mcp.capawesome.io/mcpClaude Desktop / Claude.ai
Go to Settings → Connectors → Add custom connector and enter:
Name:
CapacitorURL:
https://capacitor-mcp.capawesome.io/mcp
Cursor
Or add .cursor/mcp.json to your project:
{
"mcpServers": {
"capacitor": {
"url": "https://capacitor-mcp.capawesome.io/mcp"
}
}
}VS Code
Or add .vscode/mcp.json to your project:
{
"servers": {
"capacitor": {
"type": "http",
"url": "https://capacitor-mcp.capawesome.io/mcp"
}
}
}Windsurf
Add the server to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"capacitor": {
"serverUrl": "https://capacitor-mcp.capawesome.io/mcp"
}
}
}Zed
Add the server to your Zed settings.json:
{
"context_servers": {
"capacitor": {
"url": "https://capacitor-mcp.capawesome.io/mcp"
}
}
}Any client via npx
Clients that cannot connect to a remote server over HTTP can run this package, which proxies stdio to the hosted server:
{
"mcpServers": {
"capacitor": {
"command": "npx",
"args": ["-y", "@capawesome/capacitor-mcp"]
}
}
}Requires Node.js 22 or later.
Tools
Tool | Purpose | Parameters |
| Search the documentation by keyword. Start here for any Capacitor question. |
|
| Read a full documentation page returned by |
|
| List official and community Capacitor plugins. |
|
| List recent Capacitor posts from the Ionic blog. | — |
Versions
The documentation is available for Capacitor v8 (default), v7, v6 and next. Pass the version parameter to search_docs and get_doc_page to target a specific version.
Rate limits
The endpoint is limited to 100 requests per minute per IP. Requests over the limit are answered with 429 Too Many Requests; retry after a short wait.
Privacy
Your IP address is processed for rate limiting only. Queries and tool arguments are not stored, not logged beyond Cloudflare's standard edge logs, and never used for training. See the Privacy Policy for details.
Related
Ionic Framework MCP Server — the same for the Ionic Framework documentation, components and usage examples.
Capawesome MCP Server — the official MCP server for the Capawesome documentation and the Capawesome Cloud management API.
Capawesome Cloud Live Updates — ship JavaScript, HTML and CSS changes to your app without an app store review.
Capawesome Cloud Native Builds — build native iOS and Android apps in the cloud, without a Mac.
Capawesome Cloud App Store Publishing — submit builds to the Apple App Store and Google Play Store.
Attribution
The documentation content is © the Ionic team, licensed under Apache-2.0 and sourced from ionic-team/capacitor-docs. It is converted from MDX to Markdown for delivery over MCP and otherwise served unmodified in substance. The community plugin list comes from capawesome-team/awesome-capacitorjs. Blog excerpts come from the Ionic blog and link to the original post.
See NOTICE for the full attribution.
Development
npm install
npm run build
npm testSet CAPACITOR_MCP_URL to point the proxy at a local server instead of the hosted one:
CAPACITOR_MCP_URL=http://localhost:8787/mcp node dist/index.jsRelease
Releases are managed by release-please. Merging its release pull request tags the version, publishes the package to npm and then publishes server.json to the MCP Registry. The version in server.json is bumped by release-please together with package.json, so it never has to be edited by hand. To publish to the registry manually, install mcp-publisher, run mcp-publisher login dns --domain=capawesome.io --private-key=<key> with the Ed25519 private key from the password manager and then mcp-publisher publish.
License
See LICENSE.
Available Tools
4 toolsget_doc_pageRead a documentation pageARead-onlyInspect
Read the full markdown of a single page of the official Capacitor documentation. Use this after search_docs to read a page end to end before writing code against a plugin API, a CLI command or a native configuration, because search snippets are deliberately short and regularly omit required setup steps. Returns the page title, its URL, the documentation version and the complete page markdown including code samples. Do not use this to find a page: it needs an exact URL or path, so run search_docs first. Do not use it for pages outside capacitorjs.com — Capawesome plugins and Capawesome Cloud are covered by the Capawesome MCP server at https://mcp.capawesome.io/mcp, Ionic Framework UI components by the Ionic Framework MCP server at https://ionic-framework-mcp.capawesome.io/mcp.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The page URL or site-relative path, e.g. "https://capacitorjs.com/docs/apis/camera", "apis/camera" or "ios/configuration". An anchor is ignored; the whole page is returned. | |
| version | No | Optional. Capacitor docs version. Defaults to v8. Match the major version of @capacitor/core in the user's package.json. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/destructive hints. The description adds behavioral details such as returning the page title, URL, version, and full markdown, and that anchors are ignored. This goes beyond the annotations without contradicting them.
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?
The description is well-structured: purpose, usage, return value, negative usage, and alternatives are presented in a logical order. It is detailed yet concise, with no redundant phrasing.
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?
The description covers when to use, when not to use, what is returned, and how to handle version matching. It even mentions the need to match the user's package.json version, providing sufficient context for an agent to invoke the tool correctly without an output schema.
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?
The schema itself provides thorough descriptions for both parameters (url with examples and anchor note, version with enum and default). The tool description adds no extra parameter semantics beyond the schema, so the baseline score of 3 is appropriate.
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?
The description clearly states the tool's function: reading the full markdown of a single Capacitor documentation page. It also differentiates itself from siblings like search_docs by noting that it returns complete pages rather than snippets, and mentions the exact domains it covers and excludes.
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?
Explicit guidance is provided: use after search_docs to read full pages, do not use to find pages, and do not use for non-capacitorjs.com domains (with alternative tools named). This gives clear when-to-use and when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_blog_postsList recent blog postsARead-onlyInspect
List the 10 most recent posts from the Capacitor tag of the official Ionic blog, newest first. Use this when the question is about what is new — recent releases, announcements or deprecations. The blog covers both Capacitor and Ionic Framework. Returns title, date, tags, url and excerpt per post. Do not use this to answer a documentation question: the feed only carries the newest posts, so search the documentation with search_docs instead.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive nature. The description adds that it returns the 10 most recent posts and that the feed carries only the newest posts, giving some limitation context but not rich behavioral detail.
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?
The description is concise, action-oriented, and logically structured with usage guidance and return details.
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?
The tool is simple, and the description covers purpose, usage, return values, and exclusions, making it complete without an output schema.
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?
There are no parameters, so the baseline of 4 applies. The description doesn't need to add parameter semantics.
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?
Clearly states it lists the 10 most recent blog posts from the Capacitor tag, and explicitly differentiates from search_docs for documentation questions.
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?
Provides explicit when-to-use ('when the question is about what is new') and when-not-to-use ('Do not use this to answer a documentation question') with a pointer to the alternative search_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pluginsList Capacitor pluginsARead-onlyInspect
List Capacitor plugins: the official plugins maintained by the Capacitor team and community plugins from the awesome-capacitorjs list maintained by Capawesome. Use this to find a plugin for a native capability before writing custom native code, and to learn which package name and maintainer a capability belongs to. Returns name, description, source, maintainer and url per plugin, plus core: true for a plugin that ships with @capacitor/core and experimental: true for an experimental one. Results are ranked by relevance, with official Capacitor plugins ranked first, then plugins maintained by Capawesome, then other community plugins. Do not use this to read a plugin's API: call get_doc_page with the url of an official plugin, and use the Capawesome MCP server at https://mcp.capawesome.io/mcp for Capawesome plugins.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | The maximum number of items to return, e.g. 5. Defaults to 25, maximum 100. | |
| query | No | A free-text filter matching the package name or the description, e.g. "camera". Defaults to no filter. Optional. | |
| source | No | Which plugins to list: "official" for the plugins maintained by the Capacitor team, "community" for the awesome-capacitorjs entries, or "all" for both. Defaults to "all". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive hints; the description adds behavioral details such as result ranking and defaults, enhancing transparency without contradicting the annotations.
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?
The description is well-structured and informative, though it slightly redundantly repeats the official/community distinction. Overall, it remains concise and each sentence serves a purpose.
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?
The description fully explains the return fields (name, description, source, maintainer, url, core, experimental) and ranking behavior, providing complete context for a listing tool without an output schema.
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?
The schema already provides full descriptions for all three parameters including enums and defaults. The description adds no significant extra semantic meaning beyond the schema, so the baseline of 3 is appropriate.
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?
The description clearly states the tool lists Capacitor plugins, distinguishes official and community sources, and explicitly names the sibling tool get_doc_page for reading APIs, making its purpose unambiguous.
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?
It explicitly states when to use the tool ('find a plugin for a native capability before writing custom native code') and when not to use it, directing to get_doc_page and the Capawesome MCP server, providing clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsSearch Capacitor documentationARead-onlyInspect
Search the official Capacitor documentation from capacitorjs.com by keyword. Use this first for any question about Capacitor itself — the CLI, the capacitor.config file, the native Android and iOS projects, the official plugin APIs, or upgrading to a newer major version — because guessing an API, a configuration option or a CLI flag produces broken code. Returns the best matching page sections with title, url, snippet, section and version, plus the parentTitle and parentUrl of the page a section belongs to. The same results are attached as structured content. Do not use this to read a whole page (call get_doc_page with a url from these results), to look up Capawesome plugins such as @capawesome/capacitor-file-picker or Capawesome Cloud services such as Live Updates, Native Builds and App Store Publishing (use the Capawesome MCP server at https://mcp.capawesome.io/mcp instead), or to look up Ionic Framework UI components (use the Ionic Framework MCP server at https://ionic-framework-mcp.capawesome.io/mcp instead).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | The maximum number of items to return, e.g. 5. Defaults to 10, maximum 25. | |
| query | Yes | The search terms, e.g. "camera permissions android" or "live reload". Plain keywords work best; no search operators are supported. | |
| section | No | Restrict the search to one part of the documentation, e.g. "apis" for the official plugin references or "ios" for the native iOS guides. Defaults to searching every section. | |
| version | No | Optional. Capacitor docs version. Defaults to v8. Match the major version of @capacitor/core in the user's package.json. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals that the operation is read-only, so the bar is lower. The description adds useful behavioral detail: it returns page sections with specific fields (title, url, snippet, section, version) and notes that no search operators are supported, which helps set expectations. It does not contradict the annotation.
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?
The description is longer than the minimal example but every sentence adds value—purpose, usage, excluded scenarios, and output format are all covered without redundancy. It is well-structured and flows logically, though it could be slightly compressed without losing information.
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?
The description covers everything an agent needs: when to use, what to search, what results look like, and what to avoid. Since an output schema exists, it does not need to detail return values, but it does anyway. It also addresses version matching and section restriction, making it self-contained for correct invocation.
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?
The schema already provides descriptions for all four parameters, giving 100% coverage. The description adds extra context by providing example queries and emphasizing that plain keywords work best, which goes beyond the schema. It also clarifies the effect of the version parameter indirectly by mentioning matching the user's package.json. This adds meaningful guidance.
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?
The description clearly states the tool's purpose: searching the official Capacitor documentation by keyword. It also distinguishes itself from sibling tools by explicitly mentioning what it does not do (e.g., reading a full page, listing plugins) and by naming the sibling tools (get_doc_page, list_plugins).
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?
The description gives explicit guidance on when to use this tool ('Use this first for any question about Capacitor itself') and when not to use it, providing concrete alternatives for excluded cases (e.g., using get_doc_page for reading a whole page, using the Capawesome MCP server for plugins). This is highly actionable.
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
v0.0.1- First observed
get_doc_page - First observed
list_blog_posts - First observed
list_plugins - First observed
search_docs
TDQS
Scored across 4 tools
Each tool targets a distinct job: blog feed vs. doc search vs. full-page retrieval vs. plugin discovery. The descriptions explicitly warn against using the wrong tool, so an agent should not confuse them.
All four tools follow a consistent snake_case verb_noun convention: list_blog_posts, search_docs, get_doc_page, list_plugins. The verb choices clearly signal the action each tool performs.
Four tools is well-scoped for a documentation-focused server: search, page retrieval, news, and plugin discovery each earn their place. It is neither bloated nor too thin.
The core documentation workflow is covered end to end: search, read a full page, list plugins, and check recent blog posts. Minor gaps exist—such as no way to fetch a full blog post or filter plugins—but they are workaroundable and the scope is clearly bounded.
Maintenance
Related MCP Connectors
Provide your AI coding tools with token-efficient access to up-to-date technical documentation for…
Versioned documentation registry and semantic search for AI tools and coding assistants.
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
Related MCP Servers
FlicenseNot gradedqualityFmaintenanceAllows AI tools like Cursor, VS Code, Claude, ChatGPT, and Windsurf to access the latest Astro documentation in a structured way, enabling accurate answers about Astro's features, APIs, and best practices.67-- AlicenseBqualityFmaintenanceProvides AI assistants with access to Apple's Human Interface Guidelines and technical API documentation across all Apple platforms (iOS, macOS, watchOS, tvOS, visionOS), enabling unified search of design principles and implementation details.381 npm21MIT
- FlicenseAqualityDmaintenanceProvides AI models with direct access to documentation for over 600 technologies from DevDocs.io, including popular languages, frameworks, and tools. It enables comprehensive searching, content retrieval, and offline access via an intelligent local caching system.122-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to fetch, index, and perform semantic RAG-based searches on API documentation from various sources. It provides tools for hybrid search and collection management, allowing users to access up-to-date documentation from projects like Gemini and FastMCP.-