Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/connectors-aggregate-instructions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
'@gemstack/connectors': patch
'@gemstack/mcp-connectors': patch
---

Aggregate each connector's `instructions` into the mounted server's metadata.
Expand Down
6 changes: 3 additions & 3 deletions .changeset/connectors-error-results.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
4 changes: 2 additions & 2 deletions .changeset/connectors-fetch-transport-errors.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
13 changes: 13 additions & 0 deletions .changeset/rename-mcp-connectors.md
Original file line number Diff line number Diff line change
@@ -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-<x>` 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.
2 changes: 1 addition & 1 deletion Architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.

Expand Down
10 changes: 5 additions & 5 deletions docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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' },
],
},
{
Expand Down Expand Up @@ -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' },
],
},
],
Expand Down
32 changes: 0 additions & 32 deletions docs/packages/connectors-registry.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/packages/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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.
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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.
32 changes: 32 additions & 0 deletions docs/packages/mcp-connectors-registry.md
Original file line number Diff line number Diff line change
@@ -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-<service>`** (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-<service>` 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.
Loading
Loading