From fec43401108e4485309dc64a521b8314d38637f7 Mon Sep 17 00:00:00 2001 From: Suleiman Shahbari Date: Fri, 3 Jul 2026 02:07:33 +0300 Subject: [PATCH] refactor(connectors): rename to the mcp-connectors family Rename the three connector packages under the mcp- prefix so they read as one family with @gemstack/mcp: - @gemstack/connectors -> @gemstack/mcp-connectors - @gemstack/connector-github -> @gemstack/mcp-connector-github - @gemstack/connector-google-drive -> @gemstack/mcp-connector-google-drive Renames the 3 package dirs, package.json names + deps, all imports, READMEs, docs pages (+ VitePress sidebar) and root README/Architecture. Establishes mcp-connector- as the naming convention third parties mirror. API unchanged. CHANGELOGs left historically intact. Pending changesets retargeted to the new names + a rename changeset added. Closes #144 --- .../connectors-aggregate-instructions.md | 2 +- .changeset/connectors-error-results.md | 6 +- .../connectors-fetch-transport-errors.md | 4 +- .changeset/rename-mcp-connectors.md | 13 ++++ Architecture.md | 2 +- README.md | 8 +-- docs/.vitepress/config.ts | 10 +-- docs/packages/connectors-registry.md | 32 ---------- docs/packages/index.md | 2 +- ...ctor-github.md => mcp-connector-github.md} | 14 ++--- ...drive.md => mcp-connector-google-drive.md} | 14 ++--- docs/packages/mcp-connectors-registry.md | 32 ++++++++++ .../{connectors.md => mcp-connectors.md} | 20 +++--- examples/connectors-quickstart/README.md | 2 +- examples/connectors-quickstart/package.json | 4 +- .../src/connector.test.ts | 2 +- examples/connectors-quickstart/src/demo.ts | 2 +- .../src/library-connector.ts | 2 +- .../CHANGELOG.md | 0 .../README.md | 10 +-- .../package.json | 10 +-- .../src/client.ts | 2 +- .../src/index.test.ts | 2 +- .../src/index.ts | 2 +- .../tsconfig.build.json | 0 .../tsconfig.json | 0 .../tsconfig.test.json | 0 .../CHANGELOG.md | 0 .../README.md | 10 +-- .../package.json | 10 +-- .../src/client.ts | 2 +- .../src/index.test.ts | 2 +- .../src/index.ts | 2 +- .../tsconfig.build.json | 0 .../tsconfig.json | 0 .../tsconfig.test.json | 0 .../CHANGELOG.md | 0 .../{connectors => mcp-connectors}/README.md | 12 ++-- .../package.json | 6 +- .../src/defineConnector.ts | 0 .../src/index.test.ts | 0 .../src/index.ts | 0 .../src/mountConnectors.ts | 0 .../src/types.ts | 0 .../tsconfig.build.json | 0 .../tsconfig.json | 0 .../tsconfig.test.json | 0 pnpm-lock.yaml | 62 +++++++++---------- 48 files changed, 158 insertions(+), 145 deletions(-) create mode 100644 .changeset/rename-mcp-connectors.md delete mode 100644 docs/packages/connectors-registry.md rename docs/packages/{connector-github.md => mcp-connector-github.md} (73%) rename docs/packages/{connector-google-drive.md => mcp-connector-google-drive.md} (77%) create mode 100644 docs/packages/mcp-connectors-registry.md rename docs/packages/{connectors.md => mcp-connectors.md} (86%) rename packages/{connector-github => mcp-connector-github}/CHANGELOG.md (100%) rename packages/{connector-github => mcp-connector-github}/README.md (82%) rename packages/{connector-github => mcp-connector-github}/package.json (84%) rename packages/{connector-github => mcp-connector-github}/src/client.ts (96%) rename packages/{connector-github => mcp-connector-github}/src/index.test.ts (98%) rename packages/{connector-github => mcp-connector-github}/src/index.ts (99%) rename packages/{connector-github => mcp-connector-github}/tsconfig.build.json (100%) rename packages/{connector-github => mcp-connector-github}/tsconfig.json (100%) rename packages/{connector-github => mcp-connector-github}/tsconfig.test.json (100%) rename packages/{connector-google-drive => mcp-connector-google-drive}/CHANGELOG.md (100%) rename packages/{connector-google-drive => mcp-connector-google-drive}/README.md (84%) rename packages/{connector-google-drive => mcp-connector-google-drive}/package.json (84%) rename packages/{connector-google-drive => mcp-connector-google-drive}/src/client.ts (97%) rename packages/{connector-google-drive => mcp-connector-google-drive}/src/index.test.ts (99%) rename packages/{connector-google-drive => mcp-connector-google-drive}/src/index.ts (99%) rename packages/{connector-google-drive => mcp-connector-google-drive}/tsconfig.build.json (100%) rename packages/{connector-google-drive => mcp-connector-google-drive}/tsconfig.json (100%) rename packages/{connector-google-drive => mcp-connector-google-drive}/tsconfig.test.json (100%) rename packages/{connectors => mcp-connectors}/CHANGELOG.md (100%) rename packages/{connectors => mcp-connectors}/README.md (92%) rename packages/{connectors => mcp-connectors}/package.json (92%) rename packages/{connectors => mcp-connectors}/src/defineConnector.ts (100%) rename packages/{connectors => mcp-connectors}/src/index.test.ts (100%) rename packages/{connectors => mcp-connectors}/src/index.ts (100%) rename packages/{connectors => mcp-connectors}/src/mountConnectors.ts (100%) rename packages/{connectors => mcp-connectors}/src/types.ts (100%) rename packages/{connectors => mcp-connectors}/tsconfig.build.json (100%) rename packages/{connectors => mcp-connectors}/tsconfig.json (100%) rename packages/{connectors => mcp-connectors}/tsconfig.test.json (100%) diff --git a/.changeset/connectors-aggregate-instructions.md b/.changeset/connectors-aggregate-instructions.md index 770e12c..cd4748b 100644 --- a/.changeset/connectors-aggregate-instructions.md +++ b/.changeset/connectors-aggregate-instructions.md @@ -1,5 +1,5 @@ --- -'@gemstack/connectors': patch +'@gemstack/mcp-connectors': patch --- Aggregate each connector's `instructions` into the mounted server's metadata. diff --git a/.changeset/connectors-error-results.md b/.changeset/connectors-error-results.md index 3c1b65e..34b4bff 100644 --- a/.changeset/connectors-error-results.md +++ b/.changeset/connectors-error-results.md @@ -1,7 +1,7 @@ --- -'@gemstack/connectors': minor -'@gemstack/connector-github': patch -'@gemstack/connector-google-drive': patch +'@gemstack/mcp-connectors': minor +'@gemstack/mcp-connector-github': patch +'@gemstack/mcp-connector-google-drive': patch --- Return validation failures as MCP errors instead of success results. diff --git a/.changeset/connectors-fetch-transport-errors.md b/.changeset/connectors-fetch-transport-errors.md index 76774b6..7ea798f 100644 --- a/.changeset/connectors-fetch-transport-errors.md +++ b/.changeset/connectors-fetch-transport-errors.md @@ -1,6 +1,6 @@ --- -'@gemstack/connector-github': patch -'@gemstack/connector-google-drive': patch +'@gemstack/mcp-connector-github': patch +'@gemstack/mcp-connector-google-drive': patch --- Wrap transport failures in the connector's typed error class. diff --git a/.changeset/rename-mcp-connectors.md b/.changeset/rename-mcp-connectors.md new file mode 100644 index 0000000..4d03f38 --- /dev/null +++ b/.changeset/rename-mcp-connectors.md @@ -0,0 +1,13 @@ +--- +'@gemstack/mcp-connectors': minor +'@gemstack/mcp-connector-github': minor +'@gemstack/mcp-connector-google-drive': minor +--- + +Rename the connector packages under the `mcp-` family prefix. + +- `@gemstack/connectors` → `@gemstack/mcp-connectors` +- `@gemstack/connector-github` → `@gemstack/mcp-connector-github` +- `@gemstack/connector-google-drive` → `@gemstack/mcp-connector-google-drive` + +A connector ships an MCP server, so this puts the packages in the same visible family as `@gemstack/mcp` and establishes `mcp-connector-` as the naming convention third parties mirror (e.g. `@acme/mcp-connector-stripe`). The API is unchanged — only the package names. Update imports to the new names; the old packages are deprecated on npm. diff --git a/Architecture.md b/Architecture.md index 853286f..6e89f27 100644 --- a/Architecture.md +++ b/Architecture.md @@ -96,7 +96,7 @@ There is a tiny surface overlap (both can "produce an MCP server"), but from dif ## Connectors (built on `@gemstack/mcp`) -`@gemstack/connectors` is a small, agent-agnostic family on top of the server framework: a **connector contract** for wiring external services (GitHub, Google Drive, ...) into an agent as MCP tools. A connector `defineConnector`s its auth requirement and its tools and nothing else — it never reaches for env vars, OAuth, or a transport — and an orchestrator `mountConnectors` composes any number into one `@gemstack/mcp` server, supplying credentials and choosing the transport. That declare-needs / supply-later split is what lets first-party (`@gemstack/connector-*`) and third-party `connector-*` packages compose interchangeably. It sits on the `mcp` (server framework) axis, not the `ai-*` runtime axis: connectors depend on `@gemstack/mcp`, not on `ai-sdk`. +`@gemstack/mcp-connectors` is a small, agent-agnostic family on top of the server framework: a **connector contract** for wiring external services (GitHub, Google Drive, ...) into an agent as MCP tools. A connector `defineConnector`s its auth requirement and its tools and nothing else — it never reaches for env vars, OAuth, or a transport — and an orchestrator `mountConnectors` composes any number into one `@gemstack/mcp` server, supplying credentials and choosing the transport. That declare-needs / supply-later split is what lets first-party (`@gemstack/mcp-connector-*`) and third-party `mcp-connector-*` packages compose interchangeably. It sits on the `mcp` (server framework) axis, not the `ai-*` runtime axis: connectors depend on `@gemstack/mcp`, not on `ai-sdk`. ## `ai-mcp` carve-out (decided - see [issue #7](https://github.com/gemstack-land/gemstack/issues/7)) diff --git a/README.md b/README.md index 17930ce..17f6543 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,9 @@ Full documentation lives in [`docs/`](./docs/guide/index.md) (a hosted site is o | [`ai‑autopilot`](./packages/ai-autopilot) | The AI‑building framework: a Supervisor (plan → dispatch → synthesize) plus stack‑aware personas, a runner sandbox, surfaces, a decisions ledger, an event‑triggered review/QA loop with a built‑in prompt library, framework presets (Vike/Next), and a bootstrap flow that takes an app from nothing to production‑grade. | [Guide](./docs/packages/ai-autopilot.md) | [![npm](https://img.shields.io/npm/v/@gemstack/ai-autopilot)](https://www.npmjs.com/package/@gemstack/ai-autopilot) | | [`ai‑mcp`](./packages/ai-mcp) | The agent/MCP bridge: consume a remote MCP server's tools as agent tools, and expose an agent as an MCP server. | [Guide](./docs/packages/ai-mcp.md) | [![npm](https://img.shields.io/npm/v/@gemstack/ai-mcp)](https://www.npmjs.com/package/@gemstack/ai-mcp) | | [`mcp`](./packages/mcp) | A standalone framework for *authoring* MCP servers: tools, resources, prompts, decorators, OAuth 2.1, a framework-neutral HTTP handler, and a test client. Agent-agnostic. | [Guide](./docs/packages/mcp.md) | [![npm](https://img.shields.io/npm/v/@gemstack/mcp)](https://www.npmjs.com/package/@gemstack/mcp) | -| [`connectors`](./packages/connectors) | The connector contract: define a tool connector to an external service once with `defineConnector`, and compose any number into a single MCP server with `mountConnectors`. Built on `@gemstack/mcp`; agent-agnostic. | [Guide](./docs/packages/connectors.md) | [![npm](https://img.shields.io/npm/v/@gemstack/connectors)](https://www.npmjs.com/package/@gemstack/connectors) | -| [`connector‑github`](./packages/connector-github) | First-party connector: read and act on GitHub issues, pull requests, and repo files. | [Guide](./docs/packages/connector-github.md) | [![npm](https://img.shields.io/npm/v/@gemstack/connector-github)](https://www.npmjs.com/package/@gemstack/connector-github) | -| [`connector‑google‑drive`](./packages/connector-google-drive) | First-party connector: browse, read, and share Google Drive files. | [Guide](./docs/packages/connector-google-drive.md) | [![npm](https://img.shields.io/npm/v/@gemstack/connector-google-drive)](https://www.npmjs.com/package/@gemstack/connector-google-drive) | +| [`mcp‑connectors`](./packages/mcp-connectors) | The connector contract: define a tool connector to an external service once with `defineConnector`, and compose any number into a single MCP server with `mountConnectors`. Built on `@gemstack/mcp`; agent-agnostic. | [Guide](./docs/packages/mcp-connectors.md) | [![npm](https://img.shields.io/npm/v/@gemstack/mcp-connectors)](https://www.npmjs.com/package/@gemstack/mcp-connectors) | +| [`mcp‑connector‑github`](./packages/mcp-connector-github) | First-party connector: read and act on GitHub issues, pull requests, and repo files. | [Guide](./docs/packages/mcp-connector-github.md) | [![npm](https://img.shields.io/npm/v/@gemstack/mcp-connector-github)](https://www.npmjs.com/package/@gemstack/mcp-connector-github) | +| [`mcp‑connector‑google‑drive`](./packages/mcp-connector-google-drive) | First-party connector: browse, read, and share Google Drive files. | [Guide](./docs/packages/mcp-connector-google-drive.md) | [![npm](https://img.shields.io/npm/v/@gemstack/mcp-connector-google-drive)](https://www.npmjs.com/package/@gemstack/mcp-connector-google-drive) | ### How they fit together @@ -43,7 +43,7 @@ The `ai-` prefix means **"depends on the agent runtime."** `skills`, `autopilot` ### Connectors -`@gemstack/connectors` is the contract for wiring external services (GitHub, Google Drive, ...) into an agent as MCP tools. A connector declares its auth needs and its tools with `defineConnector`; the orchestrator supplies credentials and composes any number of them into one server with `mountConnectors`. First-party connectors ship as `@gemstack/connector-*`, and third parties publish their own `connector-*` against the same contract. +`@gemstack/mcp-connectors` is the contract for wiring external services (GitHub, Google Drive, ...) into an agent as MCP tools. A connector declares its auth needs and its tools with `defineConnector`; the orchestrator supplies credentials and composes any number of them into one server with `mountConnectors`. First-party connectors ship as `@gemstack/mcp-connector-*`, and third parties publish their own `mcp-connector-*` against the same contract. See [`Architecture.md`](./Architecture.md) for the full layering, naming rule, and graduation policy. diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 4b1375b..017286d 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -53,7 +53,7 @@ export default defineConfig({ { text: 'ai-autopilot', link: '/packages/ai-autopilot' }, { text: 'ai-mcp', link: '/packages/ai-mcp' }, { text: 'mcp', link: '/packages/mcp' }, - { text: 'connectors', link: '/packages/connectors' }, + { text: 'mcp-connectors', link: '/packages/mcp-connectors' }, ], }, { @@ -95,10 +95,10 @@ export default defineConfig({ { text: 'Connectors', items: [ - { text: 'connectors — the contract', link: '/packages/connectors' }, - { text: 'The connector registry', link: '/packages/connectors-registry' }, - { text: 'connector-github', link: '/packages/connector-github' }, - { text: 'connector-google-drive', link: '/packages/connector-google-drive' }, + { text: 'mcp-connectors — the contract', link: '/packages/mcp-connectors' }, + { text: 'The connector registry', link: '/packages/mcp-connectors-registry' }, + { text: 'mcp-connector-github', link: '/packages/mcp-connector-github' }, + { text: 'mcp-connector-google-drive', link: '/packages/mcp-connector-google-drive' }, ], }, ], diff --git a/docs/packages/connectors-registry.md b/docs/packages/connectors-registry.md deleted file mode 100644 index 59c74b4..0000000 --- a/docs/packages/connectors-registry.md +++ /dev/null @@ -1,32 +0,0 @@ -# The connector registry - -Connectors are the open, copyable layer of GemStack orchestration. Anyone can ship one: build it with [`@gemstack/connectors`](/packages/connectors), publish it to npm under the `connector-*` convention, and an orchestrator can mount it next to the first-party connectors with no special blessing. - -## First-party connectors - -| Connector | Package | Auth | What it does | -|---|---|---|---| -| [GitHub](/packages/connector-github) | `@gemstack/connector-github` | PAT / OAuth bearer | Read and act on issues, pull requests, and repository files. | -| [Google Drive](/packages/connector-google-drive) | `@gemstack/connector-google-drive` | Google OAuth 2.0 | Browse, read, and share Drive files (Docs/Sheets/Slides exported to text). | - -Both are thin connectors over a REST client on the [`@gemstack/connectors`](/packages/connectors) contract — read them as canonical examples when writing your own. - -## Naming convention - -Publish a connector package as **`connector-`** (first-party: `@gemstack/connector-github`; third-party: `@your-scope/connector-acme` or `gemstack-connector-acme` unscoped). The connector's runtime `id` — the value that namespaces its tools — should match the service (`github`, `google-drive`, `acme`). - -The convention is what makes connectors discoverable: a search for `connector-` on npm, or the GitHub topic [`gemstack-connector`](https://github.com/topics/gemstack-connector), surfaces the ecosystem the same way [Vike's extensions listing](https://vike.dev/extensions) does for Vike. - -## Publish your own - -1. Build it with [`@gemstack/connectors`](/packages/connectors) — start from `examples/connectors-quickstart`. -2. Name the package `connector-` and add the `gemstack-connector` keyword + GitHub topic. -3. Declare its `auth` honestly (`none` / `pat` / `oauth`) so an orchestrator knows what credential to resolve. -4. Publish to npm. That's it — there's no registry to register with; the naming convention *is* the registry. - -To get a third-party connector linked from this page, open a PR or an issue on [gemstack-land/gemstack](https://github.com/gemstack-land/gemstack/issues). - -## See also - -- [`@gemstack/connectors`](/packages/connectors) — the contract and the "writing a connector" guide. -- [`mcp`](/packages/mcp) — the server a mounted connector becomes. diff --git a/docs/packages/index.md b/docs/packages/index.md index 6b06b97..5a0e169 100644 --- a/docs/packages/index.md +++ b/docs/packages/index.md @@ -18,7 +18,7 @@ connectors tool connectors to external services -> mcp (composes in ### Connectors -`connectors` builds *on* `mcp`: a connector declares an external service's auth requirement and tools, and `mountConnectors` composes any number of them into a single `mcp` server. It is the open, copyable layer — third parties ship their own `connector-*` packages that mount alongside the first-party [GitHub](/packages/connector-github) and [Google Drive](/packages/connector-google-drive) connectors. See [the connector registry](/packages/connectors-registry). +`connectors` builds *on* `mcp`: a connector declares an external service's auth requirement and tools, and `mountConnectors` composes any number of them into a single `mcp` server. It is the open, copyable layer — third parties ship their own `mcp-connector-*` packages that mount alongside the first-party [GitHub](/packages/mcp-connector-github) and [Google Drive](/packages/mcp-connector-google-drive) connectors. See [the connector registry](/packages/mcp-connectors-registry). ### Two MCP packages, two jobs diff --git a/docs/packages/connector-github.md b/docs/packages/mcp-connector-github.md similarity index 73% rename from docs/packages/connector-github.md rename to docs/packages/mcp-connector-github.md index 7d69b9a..a875cc5 100644 --- a/docs/packages/connector-github.md +++ b/docs/packages/mcp-connector-github.md @@ -1,19 +1,19 @@ -# @gemstack/connector-github +# @gemstack/mcp-connector-github -A GitHub connector for GemStack AI orchestration. Read and act on issues, pull requests, and repository files over the GitHub REST API. Built with [`@gemstack/connectors`](/packages/connectors); the result is a standard [`@gemstack/mcp`](/packages/mcp) server. +A GitHub connector for GemStack AI orchestration. Read and act on issues, pull requests, and repository files over the GitHub REST API. Built with [`@gemstack/mcp-connectors`](/packages/mcp-connectors); the result is a standard [`@gemstack/mcp`](/packages/mcp) server. ## Installation ```bash -npm i @gemstack/connector-github @gemstack/connectors @gemstack/mcp +npm i @gemstack/mcp-connector-github @gemstack/mcp-connectors @gemstack/mcp ``` ## Use ```ts -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { Mcp } from '@gemstack/mcp' -import github from '@gemstack/connector-github' +import github from '@gemstack/mcp-connector-github' const Server = mountConnectors([github], { // A token with `repo` scope. A PAT or an OAuth bearer both work. @@ -47,5 +47,5 @@ Read tools are annotated `readOnly` so an agent can auto-approve them; write too ## See also -- [`@gemstack/connectors`](/packages/connectors) — the contract this is built on, and how to write your own. -- [The connector registry](/packages/connectors-registry) — the other published connectors. +- [`@gemstack/mcp-connectors`](/packages/mcp-connectors) — the contract this is built on, and how to write your own. +- [The connector registry](/packages/mcp-connectors-registry) — the other published connectors. diff --git a/docs/packages/connector-google-drive.md b/docs/packages/mcp-connector-google-drive.md similarity index 77% rename from docs/packages/connector-google-drive.md rename to docs/packages/mcp-connector-google-drive.md index bb13a81..b7ae976 100644 --- a/docs/packages/connector-google-drive.md +++ b/docs/packages/mcp-connector-google-drive.md @@ -1,19 +1,19 @@ -# @gemstack/connector-google-drive +# @gemstack/mcp-connector-google-drive -A Google Drive connector for GemStack AI orchestration. Browse, read, and share Drive files over the Drive REST API (v3). Built with [`@gemstack/connectors`](/packages/connectors); the result is a standard [`@gemstack/mcp`](/packages/mcp) server. +A Google Drive connector for GemStack AI orchestration. Browse, read, and share Drive files over the Drive REST API (v3). Built with [`@gemstack/mcp-connectors`](/packages/mcp-connectors); the result is a standard [`@gemstack/mcp`](/packages/mcp) server. ## Installation ```bash -npm i @gemstack/connector-google-drive @gemstack/connectors @gemstack/mcp +npm i @gemstack/mcp-connector-google-drive @gemstack/mcp-connectors @gemstack/mcp ``` ## Use ```ts -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { Mcp } from '@gemstack/mcp' -import drive from '@gemstack/connector-google-drive' +import drive from '@gemstack/mcp-connector-google-drive' const Server = mountConnectors([drive], { // A Google OAuth 2.0 access token with a Drive scope. @@ -47,5 +47,5 @@ Drive has no static API key — it is OAuth 2.0 only. The connector declares `au ## See also -- [`@gemstack/connectors`](/packages/connectors) — the contract this is built on, and how to write your own. -- [The connector registry](/packages/connectors-registry) — the other published connectors. +- [`@gemstack/mcp-connectors`](/packages/mcp-connectors) — the contract this is built on, and how to write your own. +- [The connector registry](/packages/mcp-connectors-registry) — the other published connectors. diff --git a/docs/packages/mcp-connectors-registry.md b/docs/packages/mcp-connectors-registry.md new file mode 100644 index 0000000..243b8a8 --- /dev/null +++ b/docs/packages/mcp-connectors-registry.md @@ -0,0 +1,32 @@ +# The connector registry + +Connectors are the open, copyable layer of GemStack orchestration. Anyone can ship one: build it with [`@gemstack/mcp-connectors`](/packages/mcp-connectors), publish it to npm under the `mcp-connector-*` convention, and an orchestrator can mount it next to the first-party connectors with no special blessing. + +## First-party connectors + +| Connector | Package | Auth | What it does | +|---|---|---|---| +| [GitHub](/packages/mcp-connector-github) | `@gemstack/mcp-connector-github` | PAT / OAuth bearer | Read and act on issues, pull requests, and repository files. | +| [Google Drive](/packages/mcp-connector-google-drive) | `@gemstack/mcp-connector-google-drive` | Google OAuth 2.0 | Browse, read, and share Drive files (Docs/Sheets/Slides exported to text). | + +Both are thin connectors over a REST client on the [`@gemstack/mcp-connectors`](/packages/mcp-connectors) contract — read them as canonical examples when writing your own. + +## Naming convention + +Publish a connector package as **`connector-`** (first-party: `@gemstack/mcp-connector-github`; third-party: `@your-scope/connector-acme` or `gemstack-connector-acme` unscoped). The connector's runtime `id` — the value that namespaces its tools — should match the service (`github`, `google-drive`, `acme`). + +The convention is what makes connectors discoverable: a search for `connector-` on npm, or the GitHub topic [`gemstack-connector`](https://github.com/topics/gemstack-connector), surfaces the ecosystem the same way [Vike's extensions listing](https://vike.dev/extensions) does for Vike. + +## Publish your own + +1. Build it with [`@gemstack/mcp-connectors`](/packages/mcp-connectors) — start from `examples/connectors-quickstart`. +2. Name the package `connector-` and add the `gemstack-connector` keyword + GitHub topic. +3. Declare its `auth` honestly (`none` / `pat` / `oauth`) so an orchestrator knows what credential to resolve. +4. Publish to npm. That's it — there's no registry to register with; the naming convention *is* the registry. + +To get a third-party connector linked from this page, open a PR or an issue on [gemstack-land/gemstack](https://github.com/gemstack-land/gemstack/issues). + +## See also + +- [`@gemstack/mcp-connectors`](/packages/mcp-connectors) — the contract and the "writing a connector" guide. +- [`mcp`](/packages/mcp) — the server a mounted connector becomes. diff --git a/docs/packages/connectors.md b/docs/packages/mcp-connectors.md similarity index 86% rename from docs/packages/connectors.md rename to docs/packages/mcp-connectors.md index f30999a..aa2fc8d 100644 --- a/docs/packages/connectors.md +++ b/docs/packages/mcp-connectors.md @@ -1,15 +1,15 @@ -# @gemstack/connectors +# @gemstack/mcp-connectors The **connector contract** for GemStack AI orchestration. Define a tool connector to an external service (GitHub, Google Drive, ...) once with `defineConnector`, then compose any number of connectors into a single [`@gemstack/mcp`](/packages/mcp) server with `mountConnectors`. A connector only **declares** what it needs (its auth requirement) and **what it does** (its tools). It never reaches for env vars, OAuth, or a transport itself. The orchestrator that mounts it supplies credentials and chooses how to serve it. That split is what lets first-party and third-party connectors compose interchangeably. -> Already looking for a specific service? See the [connector registry](/packages/connectors-registry) for the published connectors (GitHub, Google Drive) and the `connector-*` naming convention. +> Already looking for a specific service? See the [connector registry](/packages/mcp-connectors-registry) for the published connectors (GitHub, Google Drive) and the `mcp-connector-*` naming convention. ## Installation ```bash -npm i @gemstack/connectors @gemstack/mcp zod +npm i @gemstack/mcp-connectors @gemstack/mcp zod ``` The server it produces plugs into the same surface as any other `@gemstack/mcp` server (`Mcp.web` / `Mcp.local`, `McpTestClient`, the neutral HTTP handler). @@ -19,7 +19,7 @@ The server it produces plugs into the same surface as any other `@gemstack/mcp` A connector is one object passed to `defineConnector`: an `id` (used to namespace its tools), an `auth` requirement, and a list of `tools`. Here is the reference connector shipped in `examples/connectors-quickstart` — a read-only `library` over an in-memory list. Copy it to start a real one: swap the in-memory data for calls to your API, and change `auth` from `none` to `pat` / `oauth`. ```ts -import { defineConnector } from '@gemstack/connectors' +import { defineConnector } from '@gemstack/mcp-connectors' import { z } from 'zod' const BOOKS = [ @@ -75,7 +75,7 @@ The second `handle` argument is the `ConnectorContext`: - `ctx.connectorId` — the id of the connector this tool belongs to. - `ctx.auth` — the `Credential` the orchestrator resolved for this connector (`{}` when none was provided). `ctx.auth.token` is the common case (a PAT or OAuth bearer). -A connector never reads `process.env` or runs an OAuth handshake itself — it reads `ctx.auth.token` and lets the orchestrator decide where that came from. See the [GitHub](/packages/connector-github) and [Google Drive](/packages/connector-google-drive) connectors for the same pattern over a real REST client. +A connector never reads `process.env` or runs an OAuth handshake itself — it reads `ctx.auth.token` and lets the orchestrator decide where that came from. See the [GitHub](/packages/mcp-connector-github) and [Google Drive](/packages/mcp-connector-google-drive) connectors for the same pattern over a real REST client. ## Auth requirements @@ -94,10 +94,10 @@ For `oauth`, protect the mounted endpoint with `@gemstack/mcp`'s `oauth2McpMiddl `mountConnectors` composes any number of connectors into one standard `@gemstack/mcp` server class. ```ts -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { Mcp } from '@gemstack/mcp' import library from './library-connector.js' -import github from '@gemstack/connector-github' +import github from '@gemstack/mcp-connector-github' const Server = mountConnectors([library, github], { name: 'my-orchestrator', @@ -117,7 +117,7 @@ A mounted connector is a normal `@gemstack/mcp` server, so drive it with `McpTes ```ts import { McpTestClient } from '@gemstack/mcp/testing' -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import library from './library-connector.js' const client = new McpTestClient(mountConnectors([library])) @@ -126,7 +126,7 @@ await client.listTools() // [{ name: 'library_list-books', ... }, ...] await client.callTool('library_get-book', { id: 'b1' }) ``` -To test a connector that calls a real API, stub global `fetch` and assert on the requests it makes — that is exactly how the [GitHub](https://github.com/gemstack-land/gemstack/blob/main/packages/connector-github/src/index.test.ts) and [Google Drive](https://github.com/gemstack-land/gemstack/blob/main/packages/connector-google-drive/src/index.test.ts) connectors are tested. +To test a connector that calls a real API, stub global `fetch` and assert on the requests it makes — that is exactly how the [GitHub](https://github.com/gemstack-land/gemstack/blob/main/packages/mcp-connector-github/src/index.test.ts) and [Google Drive](https://github.com/gemstack-land/gemstack/blob/main/packages/mcp-connector-google-drive/src/index.test.ts) connectors are tested. ## API @@ -135,6 +135,6 @@ To test a connector that calls a real API, stub global `fetch` and assert on the ## See also -- [The connector registry](/packages/connectors-registry) — published connectors + the `connector-*` convention for shipping your own. +- [The connector registry](/packages/mcp-connectors-registry) — published connectors + the `mcp-connector-*` convention for shipping your own. - [`mcp`](/packages/mcp) — the server framework a mounted connector becomes. - [`ai-mcp`](/packages/ai-mcp) — feed a mounted connector's tools into an agent. diff --git a/examples/connectors-quickstart/README.md b/examples/connectors-quickstart/README.md index 23b3261..034a974 100644 --- a/examples/connectors-quickstart/README.md +++ b/examples/connectors-quickstart/README.md @@ -1,6 +1,6 @@ # connectors-quickstart -A runnable reference connector built with [`@gemstack/connectors`](../../packages/connectors). Copy `src/library-connector.ts` to start a real connector: swap the in-memory data for calls to your external service, and change `auth` from `none` to `pat` / `oauth`. +A runnable reference connector built with [`@gemstack/mcp-connectors`](../../packages/mcp-connectors). Copy `src/library-connector.ts` to start a real connector: swap the in-memory data for calls to your external service, and change `auth` from `none` to `pat` / `oauth`. ```bash pnpm --filter @gemstack/example-connectors-quickstart start # run the demo diff --git a/examples/connectors-quickstart/package.json b/examples/connectors-quickstart/package.json index 327754d..b99546c 100644 --- a/examples/connectors-quickstart/package.json +++ b/examples/connectors-quickstart/package.json @@ -2,7 +2,7 @@ "name": "@gemstack/example-connectors-quickstart", "version": "0.0.1", "private": true, - "description": "Runnable reference connector built with @gemstack/connectors: a read-only in-memory source, mounted into an MCP server and exercised with McpTestClient. Copy from this to write a real connector.", + "description": "Runnable reference connector built with @gemstack/mcp-connectors: a read-only in-memory source, mounted into an MCP server and exercised with McpTestClient. Copy from this to write a real connector.", "type": "module", "scripts": { "typecheck": "tsc --noEmit", @@ -11,7 +11,7 @@ "start": "tsx src/demo.ts" }, "dependencies": { - "@gemstack/connectors": "workspace:^", + "@gemstack/mcp-connectors": "workspace:^", "@gemstack/mcp": "workspace:^", "reflect-metadata": "^0.2.0", "zod": "^4.0.0" diff --git a/examples/connectors-quickstart/src/connector.test.ts b/examples/connectors-quickstart/src/connector.test.ts index 3d07d60..bc200a6 100644 --- a/examples/connectors-quickstart/src/connector.test.ts +++ b/examples/connectors-quickstart/src/connector.test.ts @@ -1,7 +1,7 @@ import 'reflect-metadata' import { test } from 'node:test' import assert from 'node:assert/strict' -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { McpTestClient } from '@gemstack/mcp/testing' import type { McpToolResult } from '@gemstack/mcp' import library from './library-connector.js' diff --git a/examples/connectors-quickstart/src/demo.ts b/examples/connectors-quickstart/src/demo.ts index 521e4c5..3d3c84b 100644 --- a/examples/connectors-quickstart/src/demo.ts +++ b/examples/connectors-quickstart/src/demo.ts @@ -2,7 +2,7 @@ // Mounts the reference connector and drives it through McpTestClient (no server // or transport needed to see it working). import 'reflect-metadata' -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { McpTestClient } from '@gemstack/mcp/testing' import library from './library-connector.js' diff --git a/examples/connectors-quickstart/src/library-connector.ts b/examples/connectors-quickstart/src/library-connector.ts index 5728704..b93d57b 100644 --- a/examples/connectors-quickstart/src/library-connector.ts +++ b/examples/connectors-quickstart/src/library-connector.ts @@ -1,6 +1,6 @@ // A reference connector. Copy this file to start a real one: swap the in-memory // data for calls to your external service, and change `auth` to `pat` / `oauth`. -import { defineConnector } from '@gemstack/connectors' +import { defineConnector } from '@gemstack/mcp-connectors' import { z } from 'zod' interface Book { diff --git a/packages/connector-github/CHANGELOG.md b/packages/mcp-connector-github/CHANGELOG.md similarity index 100% rename from packages/connector-github/CHANGELOG.md rename to packages/mcp-connector-github/CHANGELOG.md diff --git a/packages/connector-github/README.md b/packages/mcp-connector-github/README.md similarity index 82% rename from packages/connector-github/README.md rename to packages/mcp-connector-github/README.md index 0b5e47b..012e7fc 100644 --- a/packages/connector-github/README.md +++ b/packages/mcp-connector-github/README.md @@ -1,19 +1,19 @@ -# @gemstack/connector-github +# @gemstack/mcp-connector-github -A GitHub connector for GemStack AI orchestration. Read and act on issues, pull requests, and repository files over the GitHub REST API. Built with [`@gemstack/connectors`](../connectors); the result is a standard `@gemstack/mcp` server. +A GitHub connector for GemStack AI orchestration. Read and act on issues, pull requests, and repository files over the GitHub REST API. Built with [`@gemstack/mcp-connectors`](../connectors); the result is a standard `@gemstack/mcp` server. ## Install ```bash -npm i @gemstack/connector-github @gemstack/connectors @gemstack/mcp +npm i @gemstack/mcp-connector-github @gemstack/mcp-connectors @gemstack/mcp ``` ## Use ```ts -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { Mcp } from '@gemstack/mcp' -import github from '@gemstack/connector-github' +import github from '@gemstack/mcp-connector-github' const Server = mountConnectors([github], { // A token with `repo` scope. A PAT or an OAuth bearer both work. diff --git a/packages/connector-github/package.json b/packages/mcp-connector-github/package.json similarity index 84% rename from packages/connector-github/package.json rename to packages/mcp-connector-github/package.json index e803c7e..2eb9716 100644 --- a/packages/connector-github/package.json +++ b/packages/mcp-connector-github/package.json @@ -1,7 +1,7 @@ { - "name": "@gemstack/connector-github", + "name": "@gemstack/mcp-connector-github", "version": "0.1.0", - "description": "GitHub connector for GemStack AI orchestration: read and act on issues, pull requests, and repo files over the GitHub REST API. Built with @gemstack/connectors.", + "description": "GitHub connector for GemStack AI orchestration: read and act on issues, pull requests, and repo files over the GitHub REST API. Built with @gemstack/mcp-connectors.", "keywords": [ "mcp", "connector", @@ -12,14 +12,14 @@ "gemstack" ], "license": "MIT", - "homepage": "https://github.com/gemstack-land/gemstack/tree/main/packages/connector-github#readme", + "homepage": "https://github.com/gemstack-land/gemstack/tree/main/packages/mcp-connector-github#readme", "bugs": { "url": "https://github.com/gemstack-land/gemstack/issues" }, "repository": { "type": "git", "url": "https://github.com/gemstack-land/gemstack", - "directory": "packages/connector-github" + "directory": "packages/mcp-connector-github" }, "type": "module", "engines": { @@ -44,7 +44,7 @@ "clean": "rm -rf dist dist-test" }, "dependencies": { - "@gemstack/connectors": "workspace:^", + "@gemstack/mcp-connectors": "workspace:^", "@gemstack/mcp": "workspace:^", "zod": "^4.0.0" }, diff --git a/packages/connector-github/src/client.ts b/packages/mcp-connector-github/src/client.ts similarity index 96% rename from packages/connector-github/src/client.ts rename to packages/mcp-connector-github/src/client.ts index 7e3d0ba..ea45e08 100644 --- a/packages/connector-github/src/client.ts +++ b/packages/mcp-connector-github/src/client.ts @@ -1,4 +1,4 @@ -import type { ConnectorContext } from '@gemstack/connectors' +import type { ConnectorContext } from '@gemstack/mcp-connectors' const API = 'https://api.github.com' diff --git a/packages/connector-github/src/index.test.ts b/packages/mcp-connector-github/src/index.test.ts similarity index 98% rename from packages/connector-github/src/index.test.ts rename to packages/mcp-connector-github/src/index.test.ts index 4ca0765..a3f5023 100644 --- a/packages/connector-github/src/index.test.ts +++ b/packages/mcp-connector-github/src/index.test.ts @@ -3,7 +3,7 @@ import { test, beforeEach, afterEach } from 'node:test' import assert from 'node:assert/strict' import { McpTestClient } from '@gemstack/mcp/testing' import type { McpToolResult } from '@gemstack/mcp' -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import github, { GitHubError } from './index.js' const realFetch = globalThis.fetch diff --git a/packages/connector-github/src/index.ts b/packages/mcp-connector-github/src/index.ts similarity index 99% rename from packages/connector-github/src/index.ts rename to packages/mcp-connector-github/src/index.ts index 6ffd163..b8a20a2 100644 --- a/packages/connector-github/src/index.ts +++ b/packages/mcp-connector-github/src/index.ts @@ -1,4 +1,4 @@ -import { defineConnector, McpResponse } from '@gemstack/connectors' +import { defineConnector, McpResponse } from '@gemstack/mcp-connectors' import { z } from 'zod' import { gh } from './client.js' diff --git a/packages/connector-github/tsconfig.build.json b/packages/mcp-connector-github/tsconfig.build.json similarity index 100% rename from packages/connector-github/tsconfig.build.json rename to packages/mcp-connector-github/tsconfig.build.json diff --git a/packages/connector-github/tsconfig.json b/packages/mcp-connector-github/tsconfig.json similarity index 100% rename from packages/connector-github/tsconfig.json rename to packages/mcp-connector-github/tsconfig.json diff --git a/packages/connector-github/tsconfig.test.json b/packages/mcp-connector-github/tsconfig.test.json similarity index 100% rename from packages/connector-github/tsconfig.test.json rename to packages/mcp-connector-github/tsconfig.test.json diff --git a/packages/connector-google-drive/CHANGELOG.md b/packages/mcp-connector-google-drive/CHANGELOG.md similarity index 100% rename from packages/connector-google-drive/CHANGELOG.md rename to packages/mcp-connector-google-drive/CHANGELOG.md diff --git a/packages/connector-google-drive/README.md b/packages/mcp-connector-google-drive/README.md similarity index 84% rename from packages/connector-google-drive/README.md rename to packages/mcp-connector-google-drive/README.md index bde1c0d..9e633bd 100644 --- a/packages/connector-google-drive/README.md +++ b/packages/mcp-connector-google-drive/README.md @@ -1,19 +1,19 @@ -# @gemstack/connector-google-drive +# @gemstack/mcp-connector-google-drive -A Google Drive connector for GemStack AI orchestration. Browse, read, and share Drive files over the Drive REST API (v3). Built with [`@gemstack/connectors`](../connectors); the result is a standard `@gemstack/mcp` server. +A Google Drive connector for GemStack AI orchestration. Browse, read, and share Drive files over the Drive REST API (v3). Built with [`@gemstack/mcp-connectors`](../connectors); the result is a standard `@gemstack/mcp` server. ## Install ```bash -npm i @gemstack/connector-google-drive @gemstack/connectors @gemstack/mcp +npm i @gemstack/mcp-connector-google-drive @gemstack/mcp-connectors @gemstack/mcp ``` ## Use ```ts -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { Mcp } from '@gemstack/mcp' -import drive from '@gemstack/connector-google-drive' +import drive from '@gemstack/mcp-connector-google-drive' const Server = mountConnectors([drive], { // A Google OAuth 2.0 access token with a Drive scope. diff --git a/packages/connector-google-drive/package.json b/packages/mcp-connector-google-drive/package.json similarity index 84% rename from packages/connector-google-drive/package.json rename to packages/mcp-connector-google-drive/package.json index 06ebe9e..34f4b7d 100644 --- a/packages/connector-google-drive/package.json +++ b/packages/mcp-connector-google-drive/package.json @@ -1,7 +1,7 @@ { - "name": "@gemstack/connector-google-drive", + "name": "@gemstack/mcp-connector-google-drive", "version": "0.1.0", - "description": "Google Drive connector for GemStack AI orchestration: browse, read, and share Drive files over the Drive REST API. Built with @gemstack/connectors.", + "description": "Google Drive connector for GemStack AI orchestration: browse, read, and share Drive files over the Drive REST API. Built with @gemstack/mcp-connectors.", "keywords": [ "mcp", "connector", @@ -12,14 +12,14 @@ "gemstack" ], "license": "MIT", - "homepage": "https://github.com/gemstack-land/gemstack/tree/main/packages/connector-google-drive#readme", + "homepage": "https://github.com/gemstack-land/gemstack/tree/main/packages/mcp-connector-google-drive#readme", "bugs": { "url": "https://github.com/gemstack-land/gemstack/issues" }, "repository": { "type": "git", "url": "https://github.com/gemstack-land/gemstack", - "directory": "packages/connector-google-drive" + "directory": "packages/mcp-connector-google-drive" }, "type": "module", "engines": { @@ -44,7 +44,7 @@ "clean": "rm -rf dist dist-test" }, "dependencies": { - "@gemstack/connectors": "workspace:^", + "@gemstack/mcp-connectors": "workspace:^", "@gemstack/mcp": "workspace:^", "zod": "^4.0.0" }, diff --git a/packages/connector-google-drive/src/client.ts b/packages/mcp-connector-google-drive/src/client.ts similarity index 97% rename from packages/connector-google-drive/src/client.ts rename to packages/mcp-connector-google-drive/src/client.ts index 1605ce3..cbe6cb2 100644 --- a/packages/connector-google-drive/src/client.ts +++ b/packages/mcp-connector-google-drive/src/client.ts @@ -1,4 +1,4 @@ -import type { ConnectorContext } from '@gemstack/connectors' +import type { ConnectorContext } from '@gemstack/mcp-connectors' const API = 'https://www.googleapis.com/drive/v3' diff --git a/packages/connector-google-drive/src/index.test.ts b/packages/mcp-connector-google-drive/src/index.test.ts similarity index 99% rename from packages/connector-google-drive/src/index.test.ts rename to packages/mcp-connector-google-drive/src/index.test.ts index 32576e1..031d68d 100644 --- a/packages/connector-google-drive/src/index.test.ts +++ b/packages/mcp-connector-google-drive/src/index.test.ts @@ -3,7 +3,7 @@ import { test, beforeEach, afterEach } from 'node:test' import assert from 'node:assert/strict' import { McpTestClient } from '@gemstack/mcp/testing' import type { McpToolResult } from '@gemstack/mcp' -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import drive, { GoogleDriveError } from './index.js' const realFetch = globalThis.fetch diff --git a/packages/connector-google-drive/src/index.ts b/packages/mcp-connector-google-drive/src/index.ts similarity index 99% rename from packages/connector-google-drive/src/index.ts rename to packages/mcp-connector-google-drive/src/index.ts index 97e1e85..1ca3865 100644 --- a/packages/connector-google-drive/src/index.ts +++ b/packages/mcp-connector-google-drive/src/index.ts @@ -1,4 +1,4 @@ -import { defineConnector, McpResponse } from '@gemstack/connectors' +import { defineConnector, McpResponse } from '@gemstack/mcp-connectors' import { z } from 'zod' import { gd, gdText } from './client.js' diff --git a/packages/connector-google-drive/tsconfig.build.json b/packages/mcp-connector-google-drive/tsconfig.build.json similarity index 100% rename from packages/connector-google-drive/tsconfig.build.json rename to packages/mcp-connector-google-drive/tsconfig.build.json diff --git a/packages/connector-google-drive/tsconfig.json b/packages/mcp-connector-google-drive/tsconfig.json similarity index 100% rename from packages/connector-google-drive/tsconfig.json rename to packages/mcp-connector-google-drive/tsconfig.json diff --git a/packages/connector-google-drive/tsconfig.test.json b/packages/mcp-connector-google-drive/tsconfig.test.json similarity index 100% rename from packages/connector-google-drive/tsconfig.test.json rename to packages/mcp-connector-google-drive/tsconfig.test.json diff --git a/packages/connectors/CHANGELOG.md b/packages/mcp-connectors/CHANGELOG.md similarity index 100% rename from packages/connectors/CHANGELOG.md rename to packages/mcp-connectors/CHANGELOG.md diff --git a/packages/connectors/README.md b/packages/mcp-connectors/README.md similarity index 92% rename from packages/connectors/README.md rename to packages/mcp-connectors/README.md index a57e582..354de5a 100644 --- a/packages/connectors/README.md +++ b/packages/mcp-connectors/README.md @@ -1,4 +1,4 @@ -# @gemstack/connectors +# @gemstack/mcp-connectors The connector contract for GemStack AI orchestration. Define a tool connector to an external service (GitHub, Google Drive, ...) once with `defineConnector`, then compose any number of connectors into a single MCP server with `mountConnectors`. @@ -9,13 +9,13 @@ Built on [`@gemstack/mcp`](../mcp). Framework-agnostic: the server it produces p ## Install ```bash -npm i @gemstack/connectors @gemstack/mcp zod +npm i @gemstack/mcp-connectors @gemstack/mcp zod ``` ## Define a connector ```ts -import { defineConnector } from '@gemstack/connectors' +import { defineConnector } from '@gemstack/mcp-connectors' import { z } from 'zod' export default defineConnector({ @@ -49,10 +49,10 @@ A tool's `handle` may return a `string` (wrapped as text), any JSON-serializable ## Mount connectors into a server ```ts -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' import { Mcp } from '@gemstack/mcp' import notes from './notes.js' -import github from '@gemstack/connector-github' +import github from '@gemstack/mcp-connector-github' const Server = mountConnectors([notes, github], { name: 'my-orchestrator', @@ -83,7 +83,7 @@ For `oauth`, protect the mounted endpoint with `@gemstack/mcp`'s `oauth2McpMiddl ```ts import { McpTestClient } from '@gemstack/mcp/testing' -import { mountConnectors } from '@gemstack/connectors' +import { mountConnectors } from '@gemstack/mcp-connectors' const client = new McpTestClient(mountConnectors([notes])) await client.listTools() // [{ name: 'notes_list', ... }, { name: 'notes_get', ... }] diff --git a/packages/connectors/package.json b/packages/mcp-connectors/package.json similarity index 92% rename from packages/connectors/package.json rename to packages/mcp-connectors/package.json index 14e3713..30ac770 100644 --- a/packages/connectors/package.json +++ b/packages/mcp-connectors/package.json @@ -1,5 +1,5 @@ { - "name": "@gemstack/connectors", + "name": "@gemstack/mcp-connectors", "version": "0.1.0", "description": "The connector contract for GemStack AI orchestration: define a tool connector to an external service (GitHub, Google Drive, ...) once with `defineConnector`, compose any number into a single MCP server with `mountConnectors`. Built on @gemstack/mcp; framework-agnostic.", "keywords": [ @@ -14,14 +14,14 @@ "gemstack" ], "license": "MIT", - "homepage": "https://github.com/gemstack-land/gemstack/tree/main/packages/connectors#readme", + "homepage": "https://github.com/gemstack-land/gemstack/tree/main/packages/mcp-connectors#readme", "bugs": { "url": "https://github.com/gemstack-land/gemstack/issues" }, "repository": { "type": "git", "url": "https://github.com/gemstack-land/gemstack", - "directory": "packages/connectors" + "directory": "packages/mcp-connectors" }, "type": "module", "engines": { diff --git a/packages/connectors/src/defineConnector.ts b/packages/mcp-connectors/src/defineConnector.ts similarity index 100% rename from packages/connectors/src/defineConnector.ts rename to packages/mcp-connectors/src/defineConnector.ts diff --git a/packages/connectors/src/index.test.ts b/packages/mcp-connectors/src/index.test.ts similarity index 100% rename from packages/connectors/src/index.test.ts rename to packages/mcp-connectors/src/index.test.ts diff --git a/packages/connectors/src/index.ts b/packages/mcp-connectors/src/index.ts similarity index 100% rename from packages/connectors/src/index.ts rename to packages/mcp-connectors/src/index.ts diff --git a/packages/connectors/src/mountConnectors.ts b/packages/mcp-connectors/src/mountConnectors.ts similarity index 100% rename from packages/connectors/src/mountConnectors.ts rename to packages/mcp-connectors/src/mountConnectors.ts diff --git a/packages/connectors/src/types.ts b/packages/mcp-connectors/src/types.ts similarity index 100% rename from packages/connectors/src/types.ts rename to packages/mcp-connectors/src/types.ts diff --git a/packages/connectors/tsconfig.build.json b/packages/mcp-connectors/tsconfig.build.json similarity index 100% rename from packages/connectors/tsconfig.build.json rename to packages/mcp-connectors/tsconfig.build.json diff --git a/packages/connectors/tsconfig.json b/packages/mcp-connectors/tsconfig.json similarity index 100% rename from packages/connectors/tsconfig.json rename to packages/mcp-connectors/tsconfig.json diff --git a/packages/connectors/tsconfig.test.json b/packages/mcp-connectors/tsconfig.test.json similarity index 100% rename from packages/connectors/tsconfig.test.json rename to packages/mcp-connectors/tsconfig.test.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2455d56..3b6cb84 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -73,12 +73,12 @@ importers: examples/connectors-quickstart: dependencies: - '@gemstack/connectors': - specifier: workspace:^ - version: link:../../packages/connectors '@gemstack/mcp': specifier: workspace:^ version: link:../../packages/mcp + '@gemstack/mcp-connectors': + specifier: workspace:^ + version: link:../../packages/mcp-connectors reflect-metadata: specifier: ^0.2.0 version: 0.2.2 @@ -219,14 +219,14 @@ importers: specifier: ^5.4.0 version: 5.9.3 - packages/connector-github: + packages/mcp: dependencies: - '@gemstack/connectors': - specifier: workspace:^ - version: link:../connectors - '@gemstack/mcp': - specifier: workspace:^ - version: link:../mcp + '@modelcontextprotocol/sdk': + specifier: ^1.29.0 + version: 1.29.0(zod@4.4.3) + reflect-metadata: + specifier: ^0.2.0 + version: 0.2.2 zod: specifier: ^4.0.0 version: 4.4.3 @@ -234,21 +234,18 @@ importers: '@types/node': specifier: ^20.0.0 version: 20.19.43 - reflect-metadata: - specifier: ^0.2.0 - version: 0.2.2 typescript: specifier: ^5.4.0 version: 5.9.3 - packages/connector-google-drive: + packages/mcp-connector-github: dependencies: - '@gemstack/connectors': - specifier: workspace:^ - version: link:../connectors '@gemstack/mcp': specifier: workspace:^ version: link:../mcp + '@gemstack/mcp-connectors': + specifier: workspace:^ + version: link:../mcp-connectors zod: specifier: ^4.0.0 version: 4.4.3 @@ -263,36 +260,36 @@ importers: specifier: ^5.4.0 version: 5.9.3 - packages/connectors: + packages/mcp-connector-google-drive: dependencies: '@gemstack/mcp': specifier: workspace:^ version: link:../mcp - reflect-metadata: - specifier: ^0.2.0 - version: 0.2.2 + '@gemstack/mcp-connectors': + specifier: workspace:^ + version: link:../mcp-connectors + zod: + specifier: ^4.0.0 + version: 4.4.3 devDependencies: '@types/node': specifier: ^20.0.0 version: 20.19.43 + reflect-metadata: + specifier: ^0.2.0 + version: 0.2.2 typescript: specifier: ^5.4.0 version: 5.9.3 - zod: - specifier: ^4.0.0 - version: 4.4.3 - packages/mcp: + packages/mcp-connectors: dependencies: - '@modelcontextprotocol/sdk': - specifier: ^1.29.0 - version: 1.29.0(zod@4.4.3) + '@gemstack/mcp': + specifier: workspace:^ + version: link:../mcp reflect-metadata: specifier: ^0.2.0 version: 0.2.2 - zod: - specifier: ^4.0.0 - version: 4.4.3 devDependencies: '@types/node': specifier: ^20.0.0 @@ -300,6 +297,9 @@ importers: typescript: specifier: ^5.4.0 version: 5.9.3 + zod: + specifier: ^4.0.0 + version: 4.4.3 packages: