Skip to content

Commit fda0e7e

Browse files
jonathanMLDevzhocursoragent
authored
Docs/v0.3.0 onboarding and ownership (#184)
* docs: sync README to v0.3.0 and add CODEOWNERS + CONTRIBUTING Update consumer-facing install and MCP config pins to match package.json 0.3.0, add root CONTRIBUTING.md for GitHub onboarding, and route reviews via CODEOWNERS for critical paths. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: sync README to v0.3.0 and add CODEOWNERS + CONTRIBUTING * docs: remove docs/CONTRIBUTING.md stub; link to root guide only Single CONTRIBUTING.md at repo root; update docs index and deprecation-policy links. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: zho <jornathanm910923@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent f8315a8 commit fda0e7e

7 files changed

Lines changed: 106 additions & 86 deletions

File tree

.github/CODEOWNERS

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Default owners
2+
* @wpak-ai @jonathanMLDev
3+
4+
# Critical paths (explicit for review routing)
5+
/src/ @wpak-ai @jonathanMLDev
6+
/src/alliance/ @wpak-ai @jonathanMLDev
7+
/package.json @wpak-ai @jonathanMLDev
8+
/.github/workflows/ @wpak-ai @jonathanMLDev

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ details. Newer shipped changes are recorded in this changelog by version.
137137
- Environment variable support
138138
- Full documentation and examples
139139

140-
[Unreleased]: https://github.com/cppalliance/pinecone-read-only-mcp-typescript/compare/v0.2.0...HEAD
140+
[Unreleased]: https://github.com/cppalliance/pinecone-read-only-mcp-typescript/compare/v0.3.0...HEAD
141+
[0.3.0]: https://github.com/cppalliance/pinecone-read-only-mcp-typescript/compare/v0.2.0...v0.3.0
141142
[0.2.0]: https://github.com/cppalliance/pinecone-read-only-mcp-typescript/compare/v0.1.6...v0.2.0
142143
[0.1.6]: https://github.com/cppalliance/pinecone-read-only-mcp-typescript/compare/v0.1.1...v0.1.6
143144
[0.1.1]: https://github.com/cppalliance/pinecone-read-only-mcp-typescript/compare/v0.1.0...v0.1.1

CONTRIBUTING.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Contributing
2+
3+
Thank you for contributing to `@will-cppa/pinecone-read-only-mcp`. This guide covers local setup, architecture, and pull-request expectations.
4+
5+
## Prerequisites
6+
7+
- **Node.js ≥ 20.12** (see `engines` in `package.json` — Vitest 4 / coverage require it).
8+
- **npm** (lockfile is `package-lock.json`).
9+
- **Pinecone API key** (optional for unit tests; required for live integration-style runs and examples that call Pinecone).
10+
11+
## Dev setup
12+
13+
```bash
14+
git clone https://github.com/cppalliance/pinecone-read-only-mcp-typescript.git
15+
cd pinecone-read-only-mcp-typescript
16+
npm ci
17+
npm run build
18+
npm test
19+
```
20+
21+
For the full local gate before pushing:
22+
23+
```bash
24+
npm run ci
25+
```
26+
27+
| Script | Purpose |
28+
| ------ | ------- |
29+
| `npm run build` | Clean `dist/` and `tsc` compile |
30+
| `npm run typecheck` | `tsc --noEmit` |
31+
| `npm run lint` | ESLint on `src/` |
32+
| `npm run lint:fix` | ESLint with `--fix` |
33+
| `npm run format` | Prettier write (`src/**/*.ts`, config JSON) |
34+
| `npm run format:check` | Prettier check |
35+
| `npm test` | Vitest once |
36+
| `npm run test:coverage` | Vitest + coverage thresholds (`vitest.config.ts`) |
37+
| `npm run ci` | Full local gate (typecheck, lint, format, build, coverage) |
38+
| `npm run docs:link-check` | Validate markdown links in README, CHANGELOG, and `docs/` |
39+
40+
## Architecture overview
41+
42+
The codebase is split into two layers. **`src/core/`** is the generic MCP–Pinecone bridge: `PineconeClient`, `resolveConfig`, `setupCoreServer`, and eight MCP tools including `guided_query`. Import from `@will-cppa/pinecone-read-only-mcp` (package root). **`src/alliance/`** is the C++ Alliance app layer: `suggest_query_params`, Boost/Slack URL builtins, and `setupAllianceServer` / `resolveAllianceConfig`. Import from `@will-cppa/pinecone-read-only-mcp/alliance` for the full 14-tool surface (CLI parity).
43+
44+
Each deployment uses a **`ServerContext`** instance that owns config, the Pinecone client, namespaces cache, URL generator registry, and the suggest-flow gate. Prefer the instance-first pattern: `createServer(config)``ctx.setClient(...)``setupCoreServer({ context: ctx })` or `setupAllianceServer({ context: ctx })`. Module-level singleton facades (`setPineconeClient`, `getDefaultServerContext`, etc.) are deprecated since 0.3.0.
45+
46+
The **suggest-flow gate** requires `suggest_query_params` before `query`, `count`, or `query_documents` for a namespace (unless disabled). Alliance defaults keep the gate **on**; core `resolveConfig` defaults `disableSuggestFlow` to **true** so generic embedders can query without Alliance tools. Tool handlers validate inputs with Zod and return structured **`ToolError`** JSON on failure — one of the project's quality standards for MCP consumers.
47+
48+
Deep reference: [docs/CONFIGURATION.md](docs/CONFIGURATION.md), [docs/TOOLS.md](docs/TOOLS.md), [README.md](README.md#architecture).
49+
50+
## PR conventions
51+
52+
- **Branch naming:** `feature/…`, `docs/…`, `bugfix/…`, or `design/…` (short, descriptive slug).
53+
- Run **`npm run ci`** before pushing; CI must pass on the PR.
54+
- Keep changes focused; update **`CHANGELOG.md` `[Unreleased]`** for user-visible behavior.
55+
- Use the [pull request template](.github/PULL_REQUEST_TEMPLATE.md).
56+
- Documentation changes: run `npm run docs:link-check` if you touch many relative links.
57+
- PRs to `main` should receive review from a [CODEOWNERS](.github/CODEOWNERS) maintainer once branch protection is enabled.
58+
59+
### Deprecations and breaking changes
60+
61+
Follow [docs/deprecation-policy.md](docs/deprecation-policy.md). Deprecate with CHANGELOG + MIGRATION entries; use labeled `**Breaking (MCP):**` bullets for breaking releases while `0.y.z`.
62+
63+
### Response field stability
64+
65+
When changing MCP tool success shapes, put new fields under **`experimental`** unless promoted; update Zod schemas in `src/core/server/response-schemas.ts` and [docs/TOOLS.md](docs/TOOLS.md). See [docs/deprecation-policy.md § Stable vs experimental](docs/deprecation-policy.md#stable-vs-experimental-mcp-response-fields).
66+
67+
## Code style
68+
69+
- **TypeScript strict** (`strict`, `noUncheckedIndexedAccess`, etc.) — match surrounding code.
70+
- **ESLint** and **Prettier**`npm run lint`, `npm run format:check` (configs at repo root).
71+
- **Zod** at MCP tool boundaries; explicit types on exported APIs.
72+
- **No `process.env` reads** in feature code outside `resolveConfig` / CLI — thread `ServerConfig`.
73+
- Tool errors: `jsonErrorResponse` with `ToolError` from `tool-error.ts`.
74+
- Tests beside sources as `*.test.ts`; use Vitest.
75+
76+
Additional guides live under [`docs/`](docs/README.md) (TOOLS, CONFIGURATION, MIGRATION, CI_CD).

README.md

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77

88
A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that implements the MCP specification via `@modelcontextprotocol/sdk` v1.25+ and provides semantic search over Pinecone vector databases using hybrid search (dense + sparse) with reranking.
99

10-
**Current version: 0.2.0** (npm `latest` after publish). Pin `@0.2.0` in install and MCP config for reproducible upgrades.
10+
Current version: 0.3.0 (npm `latest` after publish). Pin `@0.3.0` in install and MCP config for reproducible upgrades.
11+
12+
## Upgrading to 0.3.0
13+
14+
Version **0.3.0** includes breaking MCP and library changes: experimental response fields nested under `experimental`, branded `CoreServerConfig` / `AllianceServerConfig`, legacy module-facade deprecations, and core `resolveConfig` requiring an index name with suggest-flow off by default. See [docs/MIGRATION.md](docs/MIGRATION.md) for before/after examples and the [CHANGELOG](CHANGELOG.md#030---2026-06-23) **Changed** section for the full list.
1115

1216
## Upgrading from 0.1.x
1317

@@ -29,7 +33,7 @@ While the package is **`0.y.z`**, minor releases may include breaking changes ([
2933
| [docs/deprecation-policy.md](docs/deprecation-policy.md) | Release & deprecation policy |
3034
| [docs/CI_CD.md](docs/CI_CD.md) | GitHub Actions, SBOM, Docker, releases |
3135
| [docs/RELEASING.md](docs/RELEASING.md) | npm publish via GitHub Releases |
32-
| [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md) | How to contribute |
36+
| [CONTRIBUTING.md](CONTRIBUTING.md) | How to contribute |
3337
| [docs/SECURITY.md](docs/SECURITY.md) | Vulnerability reporting |
3438

3539
## Error responses
@@ -65,25 +69,25 @@ For successful `query`, `query_documents`, and `guided_query` payloads, **rerank
6569
### As a Package
6670

6771
```bash
68-
npm install @will-cppa/pinecone-read-only-mcp@0.2.0
72+
npm install @will-cppa/pinecone-read-only-mcp@0.3.0
6973
```
7074

7175
Or using yarn:
7276

7377
```bash
74-
yarn add @will-cppa/pinecone-read-only-mcp@0.2.0
78+
yarn add @will-cppa/pinecone-read-only-mcp@0.3.0
7579
```
7680

7781
Or using pnpm:
7882

7983
```bash
80-
pnpm add @will-cppa/pinecone-read-only-mcp@0.2.0
84+
pnpm add @will-cppa/pinecone-read-only-mcp@0.3.0
8185
```
8286

8387
### Global Installation
8488

8589
```bash
86-
npm install -g @will-cppa/pinecone-read-only-mcp@0.2.0
90+
npm install -g @will-cppa/pinecone-read-only-mcp@0.3.0
8791
```
8892

8993
### From Source
@@ -249,7 +253,7 @@ Add to your `claude_desktop_config.json`:
249253
"mcpServers": {
250254
"pinecone-search": {
251255
"command": "npx",
252-
"args": ["-y", "@will-cppa/pinecone-read-only-mcp@0.2.0"],
256+
"args": ["-y", "@will-cppa/pinecone-read-only-mcp@0.3.0"],
253257
"env": {
254258
"PINECONE_API_KEY": "your-api-key-here",
255259
"PINECONE_INDEX_NAME": "your-index-name",
@@ -269,7 +273,7 @@ Or with explicit options:
269273
"command": "npx",
270274
"args": [
271275
"-y",
272-
"@will-cppa/pinecone-read-only-mcp@0.2.0",
276+
"@will-cppa/pinecone-read-only-mcp@0.3.0",
273277
"--api-key",
274278
"your-api-key-here",
275279
"--index-name",
@@ -302,7 +306,7 @@ For a global installation:
302306
Run the server using npx (no installation required):
303307

304308
```bash
305-
npx @will-cppa/pinecone-read-only-mcp@0.2.0 --api-key YOUR_API_KEY --index-name YOUR_INDEX
309+
npx @will-cppa/pinecone-read-only-mcp@0.3.0 --api-key YOUR_API_KEY --index-name YOUR_INDEX
306310
```
307311

308312
Or if installed globally:
@@ -342,10 +346,10 @@ Run `pinecone-read-only-mcp --help` for the full option list.
342346

343347
```bash
344348
# install
345-
npm i @will-cppa/pinecone-read-only-mcp@0.2.0
349+
npm i @will-cppa/pinecone-read-only-mcp@0.3.0
346350

347351
# run
348-
npx @will-cppa/pinecone-read-only-mcp@0.2.0 --api-key YOUR_API_KEY
352+
npx @will-cppa/pinecone-read-only-mcp@0.3.0 --api-key YOUR_API_KEY
349353
```
350354

351355
### Deploy with Docker
@@ -751,14 +755,7 @@ npm run dev -- --api-key YOUR_API_KEY
751755

752756
### Contribution Guidelines
753757

754-
1. Fork the repository
755-
2. Create a feature branch: `git checkout -b feature-name`
756-
3. Make your changes and add tests
757-
4. Ensure all tests pass: `npm test`
758-
5. Ensure code quality checks pass: `npm run lint && npm run format:check && npm run typecheck`
759-
6. Commit your changes: `git commit -am 'Add some feature'`
760-
7. Push to the branch: `git push origin feature-name`
761-
8. Submit a pull request
758+
See [CONTRIBUTING.md](CONTRIBUTING.md) for prerequisites, dev setup, architecture overview, PR conventions, and code style. Run `npm run ci` before opening a pull request.
762759

763760
## Dependencies
764761

docs/CONTRIBUTING.md

Lines changed: 0 additions & 62 deletions
This file was deleted.

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Guides for operators, MCP client authors, and library embedders.
77
| [TOOLS.md](./TOOLS.md) | All MCP tools, parameters, success/error shapes, suggest-flow |
88
| [CONFIGURATION.md](./CONFIGURATION.md) | Environment variables, CLI flags, `resolveConfig`, precedence |
99
| [SECURITY.md](./SECURITY.md) | API keys, log redaction, Docker hardening, reporting issues |
10-
| [CONTRIBUTING.md](./CONTRIBUTING.md) | Local dev, tests, lint/format, PR expectations |
10+
| [CONTRIBUTING.md](../CONTRIBUTING.md) | Local dev, tests, lint/format, PR expectations |
1111
| [CI_CD.md](./CI_CD.md) | GitHub Actions, CodeQL, SBOM, Codecov, releases |
1212
| [FAQ.md](./FAQ.md) | Common questions |
1313
| [MIGRATION.md](./MIGRATION.md) | Breaking changes and upgrade paths |

docs/deprecation-policy.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ For step-by-step upgrades, see [MIGRATION.md](./MIGRATION.md). For publish mecha
1010

1111
## Semantic versioning while `0.y.z`
1212

13-
This package currently ships as **`0.y.z`**. Under [Semantic Versioning §4](https://semver.org/spec/v2.0.0.html#spec-item-4), **minor releases may include breaking changes** until the first `1.0.0` release. Consumers should **pin an exact version** (for example `@will-cppa/pinecone-read-only-mcp@0.2.0`) in `package.json`, MCP server config, and Docker tags.
13+
This package currently ships as **`0.y.z`**. Under [Semantic Versioning §4](https://semver.org/spec/v2.0.0.html#spec-item-4), **minor releases may include breaking changes** until the first `1.0.0` release. Consumers should **pin an exact version** (for example `@will-cppa/pinecone-read-only-mcp@0.3.0`) in `package.json`, MCP server config, and Docker tags.
1414

1515
After **`1.0.0`**, this project intends to follow standard semver: breaking changes land only in **major** releases, and the deprecation window below becomes **binding** for removals that were previously announced as deprecated.
1616

@@ -142,7 +142,7 @@ Each breaking bullet should state:
142142
- `old_name` on … — use `new_name` instead; removal targeted in **0.4.0** (deprecated **0.2.0**). See [MIGRATION.md](./MIGRATION.md#anchor).
143143
```
144144

145-
Contributors: see [CONTRIBUTING.md](./CONTRIBUTING.md) for PR expectations.
145+
Contributors: see [CONTRIBUTING.md](../CONTRIBUTING.md) for PR expectations.
146146

147147
## Release hygiene
148148

@@ -156,6 +156,6 @@ Contributors: see [CONTRIBUTING.md](./CONTRIBUTING.md) for PR expectations.
156156
| -------- | ---- |
157157
| [MIGRATION.md](./MIGRATION.md) | Per-version upgrade how-to |
158158
| [CHANGELOG.md](../CHANGELOG.md) | Authoritative change list |
159-
| [CONTRIBUTING.md](./CONTRIBUTING.md) | PR and CHANGELOG expectations |
159+
| [CONTRIBUTING.md](../CONTRIBUTING.md) | PR and CHANGELOG expectations |
160160
| [RELEASING.md](./RELEASING.md) | npm publish via GitHub Releases |
161161
| [templates/breaking-change-release-notes.md](./templates/breaking-change-release-notes.md) | GitHub Release body template |

0 commit comments

Comments
 (0)