plugin — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited plugin (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://s3.eu-north-1.amazonaws.com/grovs.io/full-white.svg"> <img src="https://s3.eu-north-1.amazonaws.com/grovs.io/full-black.svg" width="120" alt="Grovs"> </picture> </p>
<p align="center"> <a href="https://github.com/grovs-io/mcp/releases"><img src="https://img.shields.io/github/v/release/grovs-io/mcp?style=flat-square&color=4F46E5" alt="Latest release"/></a> <a href="#"><img src="https://img.shields.io/badge/MCP-1.0-4F46E5?style=flat-square" alt="MCP 1.0"/></a> <a href="#"><img src="https://img.shields.io/badge/Claude%20Code-supported-4F46E5?style=flat-square" alt="Claude Code"/></a> <a href="#"><img src="https://img.shields.io/badge/Cursor-supported-4F46E5?style=flat-square" alt="Cursor"/></a> <a href="LICENSE"><img src="https://img.shields.io/github/license/grovs-io/mcp?style=flat-square&color=4F46E5" alt="MIT License"/></a> <a href="https://github.com/grovs-io/mcp/stargazers"><img src="https://img.shields.io/github/stars/grovs-io/mcp?style=flat-square&color=4F46E5" alt="GitHub stars"/></a> </p>
<p align="center"> MCP server for managing deep links, analytics, and app configuration on <a href="https://grovs.io">Grovs</a>. <br /> Works with Claude Code, Cursor, Windsurf, and any MCP-compatible client. </p>
<p align="center"> <a href="https://grovs.io">Website</a> · <a href="https://docs.grovs.io">Documentation</a> · <a href="https://github.com/grovs-io/mcp/issues">Issues</a> </p>
Grovs is an open-source, privacy-first growth platform for mobile apps — a self-hostable alternative to Branch.io and AppsFlyer. It provides:
EU-hosted, open-source SDKs, 20M+ daily active users in production. See the backend repo for self-hosting.
This is an MCP (Model Context Protocol) server that lets AI assistants manage your Grovs platform through natural language. Create deep links, check analytics, configure redirects, run campaigns — without leaving your editor.
/plugin marketplace add grovs-io/mcp
/plugin install grovs@grovsInstalls the MCP server and skills that teach Claude how to use Grovs. On first use, a browser window opens for OAuth — no API keys needed.
Open Settings > MCP and add a new server:
{
"mcpServers": {
"grovs": {
"url": "https://mcp.grovs.io/mcp"
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"grovs": {
"serverUrl": "https://mcp.grovs.io/mcp"
}
}
}Add to your .vscode/mcp.json:
{
"servers": {
"grovs": {
"type": "http",
"url": "https://mcp.grovs.io/mcp"
}
}
}Open Settings > MCP Servers > Add Server and enter:
https://mcp.grovs.io/mcpIf you're running your own Grovs backend, run the MCP server locally and point your client to it:
git clone https://github.com/grovs-io/mcp.git
cd mcp
npm install && npm run build
npm startOr with Docker:
docker build -t grovs-mcp .
docker run -p 8080:8080 grovs-mcpThen use http://localhost:8080/mcp as the server URL in any of the client configs above.
All clients will trigger an OAuth flow on first use — a browser window opens to authenticate with your Grovs account.
| Variable | Default | Description |
|---|---|---|
PORT | 8080 | Server port |
GROVS_API_URL | https://mcp.grovs.io | Grovs backend URL (override for self-hosted) |
PUBLIC_URL | http://localhost:8080 | Public URL of this MCP server (used for OAuth callbacks) |
Copy .env.example to .env for local development.
| Tool | Description |
|---|---|
get_status | Account info, instances, projects, and domains |
get_usage | Usage metrics and subscription status for an instance |
create_project | Create a new instance with production and test projects |
create_link | Create a deep link with metadata, tags, and custom data |
get_link | Get full details of a link by path |
update_link | Update a link's metadata, tags, or redirects |
archive_link | Deactivate a link (irreversible) |
search_links | Search and list links with pagination and filters |
get_analytics_overview | Project-level metrics: views, installs, opens, revenue |
get_link_analytics | Per-link daily metrics |
get_top_links | Top performing links ranked by views |
create_campaign | Create a campaign to group related links |
list_campaigns | List campaigns with aggregated metrics |
archive_campaign | Archive a campaign and deactivate its links |
configure_redirects | Set per-platform redirect behavior (App Store, Play Store, web) |
configure_sdk | Configure iOS/Android SDK settings (bundle ID, team ID, etc.) |
MCP Client (Claude Code, Cursor, etc.)
│
│ MCP protocol over HTTP
▼
Express app (src/app.ts)
│
├── OAuth flow (/authorize, /callback, /register)
│
└── MCP endpoint (/mcp)
│
├── Tool registration (src/server.ts)
│ Zod schema validation + runWithAuth error boundary
│
├── Handlers (src/tools/handlers.ts)
│ Business logic, plain functions, throw on error
│
├── Formatters (src/tools/formatters.ts)
│ Convert API JSON to human-readable text
│
└── API client (src/api-client.ts)
HTTP calls to Grovs backendnpm run dev # start with auto-reload
npm run build # compile TypeScript
npm test # run tests (186 tests)
npm run test:watch # run tests in watch mode
npm run lint # ESLint
npm run format # PrettierSee CONTRIBUTING.md for project structure and PR guidelines.
| Platform | Repository |
|---|---|
| iOS | grovs-io/grovs-ios |
| Android | grovs-io/grovs-android |
| React Native | grovs-io/grovs-react-native |
| Flutter | grovs-io/grovs-flutter |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.