{"id":51094796,"url":"https://github.com/gleanwork/glean-plugins-vnext","last_synced_at":"2026-06-24T05:30:48.804Z","repository":{"id":363998563,"uuid":"1265843504","full_name":"gleanwork/glean-plugins-vnext","owner":"gleanwork","description":"Plugin that powers your AI harness with work context","archived":false,"fork":false,"pushed_at":"2026-06-16T16:42:01.000Z","size":437,"stargazers_count":3,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-16T18:25:07.833Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.glean.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gleanwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-11T06:00:28.000Z","updated_at":"2026-06-16T16:43:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gleanwork/glean-plugins-vnext","commit_stats":null,"previous_names":["gleanwork/glean-experimental-plugins","gleanwork/glean-plugins-vnext"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gleanwork/glean-plugins-vnext","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gleanwork%2Fglean-plugins-vnext","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gleanwork%2Fglean-plugins-vnext/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gleanwork%2Fglean-plugins-vnext/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gleanwork%2Fglean-plugins-vnext/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gleanwork","download_url":"https://codeload.github.com/gleanwork/glean-plugins-vnext/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gleanwork%2Fglean-plugins-vnext/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34719080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-24T05:30:47.453Z","updated_at":"2026-06-24T05:30:48.795Z","avatar_url":"https://github.com/gleanwork.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Glean plugin\n\nGlean's plugin for [Claude Code](https://code.claude.com/docs/en/overview),\nCodex, and Cursor. This repo is a single-plugin marketplace, shipping one\nmanifest per host.\n\nToday it ships one plugin:\n\n- **`glean-vnext`** — adds three static tools, `find_skills`, `run_tool`, and\n  `setup`, that let the agent discover Glean-hosted skills for enterprise apps\n  (Jira, Slack, Google Workspace, Salesforce, etc.) and invoke their downstream\n  tools via Glean's MCP gateway. Once the user has authenticated, the plugin\n  also surfaces an allow-list of Glean's first-class tools — currently\n  `search`, `read_document`, `chat`, `memory`, `memory_schema`,\n  `user_activity`, and `employee_search` — directly, with schemas pulled from\n  the remote MCP server.\n\n## Install\n\n### Claude Code (terminal)\n\n```\n/plugin marketplace add gleanwork/glean-plugins-vnext\n/plugin install glean-vnext@glean-plugins-vnext\n```\n\n### Codex and Cursor\n\nThis repo is also a plugin marketplace for **Codex** and **Cursor**: point the\nhost at `gleanwork/glean-plugins-vnext` and install **glean-vnext** through that\nhost's plugin flow. The launcher, skills, and server bundle are shared across\nall hosts. For Cursor, see\n[Team marketplaces](https://cursor.com/docs/plugins#team-marketplaces).\n\n## First run\n\nSetup resolves your Glean instance automatically from your work email, then\ntriggers OAuth sign-in to Glean via the `setup` tool. `setup` opens the Glean\nsign-in page in your browser and captures the authorization code in-context\nthrough a local loopback callback. After sign-in, OAuth credentials are cached\nto `~/.glean/` and reused across sessions — you won't be prompted again until\nthe refresh token expires.\n\n### Setting the Server URL manually\n\nYou normally don't need this — `setup` derives the Server (QE) URL from your\nwork email. Set it explicitly only when you're testing a specific deployment\nor your email domain isn't recognized. Two options:\n\n- Pass `server_url` to the `setup` tool with your **Server instance (QE)** URL\n  (e.g. `https://acme-be.glean.com`). Admins can find this at\n  https://app.glean.com/admin/about-glean.\n- Or set the `GLEAN_MCP_SERVER_URL` environment variable.\n\n## Updates\n\n```\n/plugin marketplace update glean-plugins-vnext\n```\n\n## Testing a specific branch or PR\n\nYou can point the marketplace at a specific git branch, tag, or commit:\n\n```bash\n# Install from a specific branch (e.g. a PR branch)\n/plugin marketplace add gleanwork/glean-plugins-vnext@branch-name\n/plugin install glean-vnext@glean-plugins-vnext\n\n# Or update an existing marketplace to a different branch\n/plugin marketplace remove glean-plugins-vnext\n/plugin marketplace add gleanwork/glean-plugins-vnext@branch-name\n```\n\nYou can also pin to a branch in `settings.json`:\n\n```json\n{\n  \"marketplaces\": [\n    {\n      \"name\": \"glean-plugins-vnext\",\n      \"source\": \"https://github.com/gleanwork/glean-plugins-vnext\",\n      \"sourceType\": \"git\",\n      \"branch\": \"mohit-baseline-marketplace-layout\"\n    }\n  ]\n}\n```\n\nFor local development, point the marketplace at your local checkout instead:\n\n```bash\n/plugin marketplace add /path/to/glean-plugins-vnext\n```\n\nThen just `git checkout` whichever branch you want to test.\n\n## Configuration\n\nConfiguration is interactive: the `setup` tool captures your Glean Server URL\nand drives OAuth sign-in on first run (see [First run](#first-run)), persisting\nboth under `~/.glean/`. No environment variables are required.\n\nA few optional variables let you override behavior. Set them in the host's MCP\nserver `env` block — the shipped `.mcp.json` / `.mcp.codex.json` already set the\nHITL ones — or in your shell:\n\n| Variable | Purpose | Default |\n| --- | --- | --- |\n| `GLEAN_MCP_SERVER_URL` | Overrides the Glean server URL captured by `setup`. | URL saved by `setup` |\n| `ENABLE_HITL` | Human-in-the-loop confirmation before `run_tool` runs a downstream tool. Active only when set to exactly `true`. | `true` (set in the shipped `.mcp.json`) |\n| `HITL_TIMEOUT_MS` | Timeout in milliseconds for a HITL confirmation prompt. Positive integer. | `300000` (5 min), set in `.mcp.json` |\n| `GLEAN_FILE_ARG_MAX_BYTES` | Maximum size in bytes of each file read via `run_tool`'s `file_args`. Positive integer. | `1048576` (1 MiB), bundle default |\n| `USE_CLAUDE_PROJECT_DIR` | Set to `1` to route the skills cache under the launch project's `.claude/tmp/`, so the `glean_run` skill's `Read` glob can match cache files. | unset |\n\nEmpty values and un-interpolated `${VAR}` placeholders are ignored, falling back\nto the default.\n\nThe launcher (`plugins/glean/start.sh`) also derives and **exports** three more\nvariables the bundle reads, so these are internal — start.sh overwrites them on\nevery launch and setting them yourself has no effect:\n\n- `PLUGIN_DATA_DIR` — directory for credentials, caches, the saved server URL,\n  and `glean-server.log`. Defaults to `~/.glean`, or the host's\n  `CLAUDE_PLUGIN_DATA` dir when provided.\n- `SKILLS_BASE_DIR` — where discovered skill files are written; defaults to\n  `\u003cPLUGIN_DATA_DIR\u003e/glean-skills-cache`, or redirected under the launch\n  project's `.claude/tmp/` when `USE_CLAUDE_PROJECT_DIR=1`.\n- `GLEAN_SESSION_ID` — the host's conversation id: `CLAUDE_CODE_SESSION_ID` for\n  Claude Code, `CODEX_THREAD_ID` for Codex, otherwise a generated UUID.\n\n## Troubleshooting\n\n- **Sign-in loop or stale auth** — prompt the agent to reset and sign in again\n  (e.g. \"reset the Glean setup\"). It calls the `setup` tool with `reset=true` to\n  clear the saved configuration and credentials, then runs `setup` again to\n  re-authenticate.\n- **Tools return `[SETUP_REQUIRED]`** — the plugin isn't configured or\n  authenticated yet. Prompt the agent to set up Glean (e.g. \"set up Glean\").\n  The `setup` tool, called with no arguments, advances through the next missing\n  stage: saving the Server URL, signing in, then fetching the remote tool\n  catalog.\n\n## Development\n\nPrerequisites: Node \u003e=22 \u003c26, npm.\n\n```bash\nnpm install\nnpm test            # vitest\nnpm run typecheck   # tsc --noEmit\nnpm run build       # esbuild → plugins/glean/dist/index.js\n```\n\nSource is at the repo root (`src/`, `tests/`, `scripts/`). Packaged\nruntime lives under `plugins/glean/`. See the Layout section below.\n\n## Release process\n\n1. Bump `version` in all three host plugin manifests — they must match, and\n   `scripts/check-version-bump.sh` enforces it:\n   - `plugins/glean/.claude-plugin/plugin.json`\n   - `plugins/glean/.codex-plugin/plugin.json`\n   - `plugins/glean/.cursor-plugin/plugin.json`\n2. `npm test \u0026\u0026 npm run typecheck` — verify clean.\n3. Commit, tag, and push:\n   ```bash\n   git tag v\u003cversion\u003e\n   git push \u0026\u0026 git push --tags\n   ```\n4. Draft a release on GitHub.\n\n## Layout\n\n```\n.claude-plugin/\n  marketplace.json        Marketplace manifest for Claude Code.\n                          Points at ./plugins/glean as the plugin source.\n.cursor-plugin/\n  marketplace.json        Marketplace manifest for Cursor.\n.agents/plugins/\n  marketplace.json        Marketplace manifest for Codex.\nplugins/glean/\n  .claude-plugin/\n    plugin.json           Claude plugin manifest — name, version, description\n  .codex-plugin/\n    plugin.json           Codex plugin manifest (skills, mcpServers, interface)\n  .cursor-plugin/\n    plugin.json           Cursor plugin manifest\n  .mcp.json               MCP server invocation for Claude / Cursor. Source\n                          of truth; sets ENABLE_HITL / HITL_TIMEOUT_MS.\n  .mcp.codex.json         MCP server invocation for Codex\n  assets/                 Shared brand assets (logo) referenced by manifests\n  dist/index.js           Built server bundle (every dep inlined; produced\n                          by `npm run build`; checked in)\n  skills/glean_run/       Skill that tells the agent how to use the\n                          tools. Uses the open SKILL.md standard.\n  start.sh                Bash launcher: sanitizes env (SKILLS_BASE_DIR,\n                          PLUGIN_DATA_DIR, GLEAN_SESSION_ID), then execs\n                          node on the bundle\n  package.json            Minimal \"type\": \"module\" manifest so Node\n                          treats dist/index.js as ESM at runtime\nsrc/                      TypeScript sources for the MCP server\ntests/                    Vitest suite\nscripts/                  build.mjs (esbuild bundler), check-version-bump.sh,\n                          pack-plugin.sh\npackage.json              Top-level dev config — deps, npm scripts\ntsconfig.json             TypeScript config for the dev tree\n```\n\n## License\n\nApache 2.0. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgleanwork%2Fglean-plugins-vnext","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgleanwork%2Fglean-plugins-vnext","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgleanwork%2Fglean-plugins-vnext/lists"}