diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 7e4aa377f..d6ec0b570 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -308,6 +308,11 @@ "source": "third_party/guru", "description": "Search company knowledge and draft verified answers." }, + { + "name": "glean", + "source": "third_party/glean", + "description": "Search your company's knowledge and chat with Glean Assistant." + }, { "name": "fireflies", "source": "third_party/fireflies", diff --git a/third_party/glean/.cursor-plugin/plugin.json b/third_party/glean/.cursor-plugin/plugin.json new file mode 100644 index 000000000..2b24e28d6 --- /dev/null +++ b/third_party/glean/.cursor-plugin/plugin.json @@ -0,0 +1,44 @@ +{ + "name": "glean", + "displayName": "Glean", + "version": "1.0.0", + "description": "Search your company's knowledge and chat with Glean Assistant.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://developers.glean.com/guides/mcp/", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.svg", + "keywords": [ + "glean", + "enterprise-search", + "knowledge-management", + "mcp", + "search", + "documents", + "people" + ], + "category": "productivity", + "tags": [ + "mcp", + "enterprise", + "search", + "knowledge" + ], + "variables": { + "type": "object", + "properties": { + "GLEAN_INSTANCE": { + "type": "string", + "title": "Glean instance", + "description": "The subdomain of your Glean backend: the part before -be.glean.com (for example acme for https://acme-be.glean.com). Shown as the backend domain under Server instance in Glean admin → About Glean, and in the MCP server URL from Glean's MCP Configurator (Settings → Third party apps and MCP)." + } + }, + "required": [ + "GLEAN_INSTANCE" + ] + }, + "mcpServers": "./mcp.json" +} diff --git a/third_party/glean/CHANGELOG.md b/third_party/glean/CHANGELOG.md new file mode 100644 index 000000000..e9b9b548c --- /dev/null +++ b/third_party/glean/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `glean` MCP server backed by Glean's hosted remote MCP server (`/mcp/default`). +- Declared the `GLEAN_INSTANCE` plugin variable so each organization points at its own Glean backend. +- Logo: Glean's mark from Glean's own plugin repository (MIT, see `LICENSE.glean-logo`). diff --git a/third_party/glean/LICENSE b/third_party/glean/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/glean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/glean/LICENSE.glean-logo b/third_party/glean/LICENSE.glean-logo new file mode 100644 index 000000000..feafbe97a --- /dev/null +++ b/third_party/glean/LICENSE.glean-logo @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2024 Glean Technologies, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/third_party/glean/README.md b/third_party/glean/README.md new file mode 100644 index 000000000..4fa842a71 --- /dev/null +++ b/third_party/glean/README.md @@ -0,0 +1,77 @@ +# Glean + +Cursor plugin that connects agents to [Glean](https://www.glean.com) through Glean's hosted [remote MCP server](https://developers.glean.com/guides/mcp/), Glean's first-party [Model Context Protocol](https://modelcontextprotocol.io/) service. + +Search your company's knowledge across every connected source, ask Glean Assistant questions, look up people, and read the documents you already have access to — all under the signed-in user's own Glean permissions. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Glean**. +3. Click **Install**, set your Glean instance (below), and complete the Glean sign-in prompt in your browser. + +Or run `/add-plugin glean` in chat. + +## MCP + +```json +{ + "mcpServers": { + "glean": { + "type": "http", + "url": "https://${GLEAN_INSTANCE}-be.glean.com/mcp/default" + } + } +} +``` + +## Setup + +Glean hosts one remote MCP server per organization. The plugin needs to know which one is yours. + +### 1. Find your Glean instance + +Your instance is the subdomain of your Glean backend — the part before `-be.glean.com`. For example, if your organization's server is `https://acme-be.glean.com/mcp/default`, the instance is `acme`. + +Any of these shows it: + +- Glean's **MCP Configurator**: open **Settings → Third party apps and MCP** in Glean (or [app.glean.com/settings/install?mcpConfigure=true](https://app.glean.com/settings/install?mcpConfigure=true)) and copy the server URL it shows. +- A Glean admin can read it under **Server instance** at **Admin → About Glean**. + +If the Configurator is not visible, a Glean admin needs to enable at least one MCP server for your organization (the default server is on for eligible tenants). + +### 2. Configure the plugin + +In **Dashboard → Plugins → Configure**, set **Glean instance**, then complete the Glean login in your browser when Cursor prompts. Glean's server supports OAuth with dynamic client registration, so no client ID or secret is needed. + +On a team marketplace an admin sets the instance once. Each member still authenticates individually, so tools run with that member's own Glean permissions. + +## What you get + +Glean's default server exposes the organization's enabled Glean tools — enterprise search, Glean Assistant chat, people lookup, and document access. The exact set depends on which tools your Glean admin has enabled; see Glean's [MCP usage guide](https://help.glean.com/user-guide/mcp/usage). + +## Differences from Glean's stdio plugin + +Glean also publishes a plugin that runs a local server process on the user's machine. This listing talks to Glean's hosted server directly instead, which means: + +- Your Glean instance is a one-time setup field rather than being looked up from your work email. +- Sign-in happens through Cursor's connector flow in your own browser, and Cursor manages token refresh. +- Reading local files into tool arguments (`file_args`) is not available; Cursor's connector permissions replace the local plugin's own approval prompts. + +## Troubleshooting + +| Symptom | Cause | +|:--------|:------| +| "Finish plugin setup" | **Glean instance** is not set. | +| Sign-in page 404s or the server is unreachable | The instance is wrong, or your organization has not enabled an MCP server. Check the URL in Glean's MCP Configurator. | +| Signed in, but no tools or empty results | Your Glean admin has not enabled those tools for the default server, or your Glean permissions do not include the content. | + +## Docs + +- Glean MCP guide: https://developers.glean.com/guides/mcp/ +- Using Glean's MCP server: https://help.glean.com/user-guide/mcp/usage +- Admin setup: https://docs.glean.com/administration/platform/mcp/about + +## License + +MIT diff --git a/third_party/glean/assets/logo.svg b/third_party/glean/assets/logo.svg new file mode 100644 index 000000000..27671d5ec --- /dev/null +++ b/third_party/glean/assets/logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/third_party/glean/mcp.json b/third_party/glean/mcp.json new file mode 100644 index 000000000..6e39f12f0 --- /dev/null +++ b/third_party/glean/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "glean": { + "type": "http", + "url": "https://${GLEAN_INSTANCE}-be.glean.com/mcp/default" + } + } +}