@uluops/registry-mcp 0.1.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -4
- package/README.md +94 -93
- package/dist/client/sdk-error-mapper.d.ts +29 -0
- package/dist/client/sdk-error-mapper.d.ts.map +1 -1
- package/dist/client/sdk-error-mapper.js +53 -0
- package/dist/client/sdk-error-mapper.js.map +1 -1
- package/dist/config/index.d.ts +7 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +91 -14
- package/dist/config/index.js.map +1 -1
- package/dist/config/tool-registry.d.ts.map +1 -1
- package/dist/config/tool-registry.js +0 -8
- package/dist/config/tool-registry.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/batch-publish.js +8 -8
- package/dist/tools/batch-publish.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/render-definition.d.ts +3 -0
- package/dist/tools/render-definition.d.ts.map +1 -1
- package/dist/tools/render-definition.js +15 -1
- package/dist/tools/render-definition.js.map +1 -1
- package/dist/tools/update-and-publish.d.ts.map +1 -1
- package/dist/tools/update-and-publish.js +15 -9
- package/dist/tools/update-and-publish.js.map +1 -1
- package/dist/tools/update-definition.d.ts.map +1 -1
- package/dist/tools/update-definition.js +2 -7
- package/dist/tools/update-definition.js.map +1 -1
- package/dist/types/config.d.ts +6 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/error-guards.d.ts +21 -0
- package/dist/utils/error-guards.d.ts.map +1 -0
- package/dist/utils/error-guards.js +26 -0
- package/dist/utils/error-guards.js.map +1 -0
- package/dist/utils/tool-handler.d.ts.map +1 -1
- package/dist/utils/tool-handler.js +20 -8
- package/dist/utils/tool-handler.js.map +1 -1
- package/package.json +19 -19
- package/dist/tools/sync-models.d.ts +0 -12
- package/dist/tools/sync-models.d.ts.map +0 -1
- package/dist/tools/sync-models.js +0 -32
- package/dist/tools/sync-models.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,11 +7,103 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.2] - 2026-06-05
|
|
11
|
+
|
|
12
|
+
Hardening pass against the ship-pipeline findings. No new tools. No
|
|
13
|
+
breaking changes to existing tool contracts (the new `render_definition`
|
|
14
|
+
`overwrite` parameter defaults to `false` — agents that previously
|
|
15
|
+
silently overwrote files now receive a clear error response and need to
|
|
16
|
+
opt in).
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **`patchYamlVersion` now handles prerelease and build-metadata semver.**
|
|
21
|
+
The regex `\d+\.\d+\.\d+` was extended to `\d+\.\d+\.\d+(?:-[A-Za-z0-9.-]+)?(?:\+[A-Za-z0-9.-]+)?`. Previously, source YAML with `version: 1.0.0-rc.1` would leave the `-rc.1` suffix stranded after the replacement, producing malformed YAML that the API would reject. Closes the AF-006 audit trigger that was acknowledged at v0.2.0 ship time.
|
|
22
|
+
- **`update_and_publish` create-fallback now guards `created.version`.** A malformed SDK response with a missing `version` field would have been silently passed through to `publish()`, producing a `/versions/undefined` URL and a 404 for a draft that was just successfully created. The handler now throws a descriptive error if `created.version` is missing or empty.
|
|
23
|
+
- **`render_definition` no longer silently overwrites existing files.** New `overwrite: boolean` parameter (default `false`). When false (the default) and `output_path` resolves to an existing file, the tool returns a clear MCP error rather than destroying the prior content. Agents that need replacement semantics must explicitly pass `overwrite: true`.
|
|
24
|
+
- **`batch_publish` per-item errors now carry rich SDK context.** Previously each failed-item entry only carried `error` (message) and `status`. The per-item catch now routes through a new `extractErrorContext(error)` helper that surfaces 402 `upgrade_url` + `required_tier` + `current_tier`, 429 `retry_after`, and 409 `nextAvailable` exactly as single-call tools do via `mapSdkErrorToMcp`.
|
|
25
|
+
- **MCP server now auto-runs on the proper ESM entry-point check** instead of `NODE_ENV !== 'test'`. A stray `NODE_ENV=test` in the user's shell, CI, or `direnv` no longer silently disables `main()` — the harness would have started and hung waiting for stdio JSON-RPC that never arrived. Tests already import `main` directly and call it; no test changes needed.
|
|
26
|
+
|
|
10
27
|
### Changed
|
|
11
28
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
29
|
+
- **`isNumericSchema` swapped Zod `_def.innerType` access for Zod's public `unwrap()` / `removeDefault()` API.** Avoids coupling to Zod private internals that can rename across minor versions and would silently disable numeric coercion at the MCP boundary if Zod's `_def` shape ever changes.
|
|
30
|
+
- **`isPublishedStatusError` extracted to a shared `src/utils/error-guards.ts` module.** Previously this 3-line guard was duplicated verbatim across `update-definition.ts` and `update-and-publish.ts`. A future change to the underlying API error message now updates one location instead of two.
|
|
31
|
+
- **Added `prepublishOnly: npm run build` script.** Future `npm publish` runs no longer rely on the maintainer remembering to build first.
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- **`extractErrorContext(error)` helper in `client/sdk-error-mapper.ts`** — returns the same structured fields (`status`, `required_tier`, `upgrade_url`, `retry_after`, `nextAvailable`) that `mapSdkErrorToMcp` produces, but without wrapping them in an MCP envelope. Used by `batch_publish`.
|
|
36
|
+
|
|
37
|
+
### Tests
|
|
38
|
+
|
|
39
|
+
348 tests pass (was 345, +3 regression coverage):
|
|
40
|
+
- New: `patches prerelease semver versions in yaml during create fallback`
|
|
41
|
+
- New: `refuses to overwrite an existing file when overwrite is not opted into`
|
|
42
|
+
- New: `writes to existing file when overwrite: true is passed`
|
|
43
|
+
|
|
44
|
+
## [0.2.1] - 2026-06-05
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- **Backend URL resolution deferred to the SDK.** Previously the MCP server
|
|
49
|
+
shadowed `@uluops/registry-sdk`'s `DEFAULT_BASE_URL` with its own copy
|
|
50
|
+
and effectively required `ULUOPS_REGISTRY_URL` (treating empty/undefined
|
|
51
|
+
as "use the shadow constant"). The SDK already resolves the correct
|
|
52
|
+
production URL (`https://api.uluops.ai/api/v1/registry`) by default and
|
|
53
|
+
switches to localhost when `NODE_ENV=development`; the MCP now passes
|
|
54
|
+
`baseUrl` through as `undefined` when the env var is unset/empty and lets
|
|
55
|
+
the SDK own URL resolution. Public consumers no longer set anything but
|
|
56
|
+
`ULUOPS_API_KEY`. README's configuration table reduced to consumer-
|
|
57
|
+
relevant variables; `ULUOPS_REGISTRY_URL` removed from the public
|
|
58
|
+
surface (still honored by the code when explicitly set).
|
|
59
|
+
- **SSRF defense and host allowlist now gate on `baseUrl !== undefined`.**
|
|
60
|
+
When the operator does not set `ULUOPS_REGISTRY_URL` the SDK uses a
|
|
61
|
+
trusted compile-time constant, so the URL-parse/allowlist/private-host
|
|
62
|
+
checks are skipped — they only run when an operator explicitly provides
|
|
63
|
+
a URL that needs validation. Identical behavior for any URL that was
|
|
64
|
+
previously accepted; previously-rejected URLs are still rejected.
|
|
65
|
+
- **Pairs with `@uluops/setup@0.6.4`** which stopped stamping
|
|
66
|
+
`ULUOPS_REGISTRY_URL` into `.mcp.json` files during onboarding, and with
|
|
67
|
+
`@uluops/ops-mcp@0.2.1` which applied the same fix to the ops tracker.
|
|
68
|
+
|
|
69
|
+
### Internal
|
|
70
|
+
|
|
71
|
+
- `DEFAULT_BASE_URL` constant removed from `src/config/index.ts`.
|
|
72
|
+
- `ApiClientConfig.baseUrl` type widened to `string | undefined`.
|
|
73
|
+
- Startup log apiUrl line shows `(SDK default)` when baseUrl is unset.
|
|
74
|
+
|
|
75
|
+
## [0.2.0] - 2026-06-05
|
|
76
|
+
|
|
77
|
+
First release of the monorepo `@uluops/registry-mcp` package at parity
|
|
78
|
+
with the standalone `uluops-registry-mcp` 0.1.1 codebase, prepared for
|
|
79
|
+
first public npm publish under the scoped name.
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- **`list_languages` and `get_language` tools** — language registry
|
|
84
|
+
read tools surfaced through the MCP server.
|
|
85
|
+
|
|
86
|
+
### Changed
|
|
87
|
+
|
|
88
|
+
- **`@uluops/registry-sdk` bumped `^0.27.2` → `0.30.2`** (three minor
|
|
89
|
+
versions). Pulls in 0.29.0 publish-warning surfacing, 0.30.x sdk-core
|
|
90
|
+
security hardening cascade, and the schema-removal cleanup.
|
|
91
|
+
- **`@uluops/sdk-core` confirmed at `0.11.1`** with `redirect: 'error'`
|
|
92
|
+
on all fetch sites, control-character stripping, and widened sensitive-
|
|
93
|
+
key coverage (`x-api-key`, `set-cookie`, `proxy-authorization`).
|
|
94
|
+
- **All runtime and dev dependencies pinned to exact versions** per the
|
|
95
|
+
2026-06-01 UluOps supply-chain hardening policy.
|
|
96
|
+
- **`vitest` and `@vitest/coverage-v8` bumped to `4.1.8`** — eliminates
|
|
97
|
+
the moderate-severity esbuild advisory chained through vite. `npm audit`
|
|
98
|
+
now reports 0 vulnerabilities.
|
|
99
|
+
|
|
100
|
+
### Not included
|
|
101
|
+
|
|
102
|
+
- **`sync_models` admin tool deliberately excluded.** Calls a private
|
|
103
|
+
registry admin endpoint not exposed through the public SDK; reserved
|
|
104
|
+
for internal use and intentionally never shipped in this public package.
|
|
105
|
+
|
|
106
|
+
### Historical lineage (legacy `uluops-registry-mcp` versions below)
|
|
15
107
|
|
|
16
108
|
## [1.14.0] - 2026-05-20
|
|
17
109
|
|
|
@@ -134,7 +226,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
134
226
|
- Error sanitization stripping sensitive data (API keys, tokens, stack traces) from MCP responses
|
|
135
227
|
- Test suite with 194 tests covering all tools, resources, and registry config
|
|
136
228
|
|
|
137
|
-
[Unreleased]: https://github.com/Uluops/-uluops-registry-mcp/compare/
|
|
229
|
+
[Unreleased]: https://github.com/Uluops/-uluops-registry-mcp/compare/v0.2.1...HEAD
|
|
230
|
+
[0.2.1]: https://github.com/Uluops/-uluops-registry-mcp/compare/v0.2.0...v0.2.1
|
|
231
|
+
[0.2.0]: https://github.com/Uluops/-uluops-registry-mcp/releases/tag/v0.2.0
|
|
138
232
|
[1.14.0]: https://github.com/Uluops/-uluops-registry-mcp/compare/v1.13.0...v1.14.0
|
|
139
233
|
[1.13.0]: https://github.com/Uluops/-uluops-registry-mcp/compare/v1.12.0...v1.13.0
|
|
140
234
|
[1.12.0]: https://github.com/Uluops/-uluops-registry-mcp/compare/v1.11.0...v1.12.0
|
package/README.md
CHANGED
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
**[UluOps](https://uluops.ai)** · Operating Intelligence as Infrastructure
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
---
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
# @uluops/registry-mcp
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
git clone git@github.com:Uluops/-uluops-registry-mcp.git
|
|
9
|
-
cd -uluops-registry-mcp
|
|
10
|
-
./setup.sh YOUR_API_KEY
|
|
11
|
-
```
|
|
7
|
+
MCP (Model Context Protocol) server for the [UluOps](https://uluops.ai) Registry API. Provides **44 tools** and **4 resources** that let Claude Code, OpenCode, Gemini CLI, and other MCP-compatible harnesses browse, create, validate, version, and analyze AI workflow definitions (agents, commands, workflows, pipelines).
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
## Quick start
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
The recommended way to install this is via [@uluops/setup](https://www.npmjs.com/package/@uluops/setup), which writes the MCP config for you:
|
|
16
12
|
|
|
17
13
|
```bash
|
|
18
|
-
|
|
14
|
+
npx @uluops/setup
|
|
19
15
|
```
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
If you'd rather wire it up by hand, add this block to your harness's MCP config (e.g. `~/.claude.json` for Claude Code, `~/.config/opencode/opencode.json` for OpenCode):
|
|
22
18
|
|
|
23
19
|
```json
|
|
24
20
|
{
|
|
25
21
|
"mcpServers": {
|
|
26
22
|
"uluops-registry": {
|
|
27
|
-
"command": "
|
|
28
|
-
"args": ["/
|
|
23
|
+
"command": "npx",
|
|
24
|
+
"args": ["-y", "@uluops/registry-mcp"],
|
|
29
25
|
"env": {
|
|
30
|
-
"ULUOPS_REGISTRY_URL": "http://localhost:3001/api/v1",
|
|
31
26
|
"ULUOPS_API_KEY": "your-api-key"
|
|
32
27
|
}
|
|
33
28
|
}
|
|
@@ -35,39 +30,35 @@ Then add to your `.mcp.json`:
|
|
|
35
30
|
}
|
|
36
31
|
```
|
|
37
32
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
## Design Philosophy
|
|
41
|
-
|
|
42
|
-
**Thin Client Pattern**: This MCP client contains **zero business logic**. All data processing, validation, storage, and rendering are handled by the registry API. The client's sole responsibility is protocol translation between MCP's stdio-based JSON-RPC and the backend's REST API.
|
|
33
|
+
Get an API key at [app.uluops.ai/settings/api-keys](https://app.uluops.ai/settings/api-keys), then restart your harness.
|
|
43
34
|
|
|
44
35
|
## Configuration
|
|
45
36
|
|
|
46
|
-
All configuration is passed via environment variables in the `env` block
|
|
37
|
+
All configuration is passed via environment variables in the `env` block. No `.env` file is needed.
|
|
47
38
|
|
|
48
39
|
| Variable | Description | Required | Default |
|
|
49
40
|
|----------|-------------|----------|---------|
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `ULUOPS_REGISTRY_TIMEOUT` | Request timeout (ms) | No | 30000 |
|
|
53
|
-
| `ULUOPS_REGISTRY_RETRIES` | Retry attempts | No | 3 |
|
|
54
|
-
| `LOG_LEVEL` | Logging level | No | info |
|
|
55
|
-
| `ENABLE_FILE_LOGGING` | Write logs to disk | No | false |
|
|
56
|
-
| `LOG_DIR` | Log file directory | No |
|
|
57
|
-
| `VERBOSE_LOGGING` | Verbose security decision logging | No | false |
|
|
58
|
-
| `LOG_PERFORMANCE_METRICS` | Log performance metrics | No | false |
|
|
41
|
+
| `ULUOPS_API_KEY` | API authentication key | Yes | — |
|
|
42
|
+
| `ULUOPS_ORG_SLUG` | Organization slug for scoped requests | No | — |
|
|
43
|
+
| `ULUOPS_REGISTRY_TIMEOUT` | Request timeout (ms) | No | `30000` |
|
|
44
|
+
| `ULUOPS_REGISTRY_RETRIES` | Retry attempts | No | `3` |
|
|
45
|
+
| `LOG_LEVEL` | Logging level (`error`, `warn`, `info`, `debug`) | No | `info` |
|
|
46
|
+
| `ENABLE_FILE_LOGGING` | Write logs to disk | No | `false` |
|
|
47
|
+
| `LOG_DIR` | Log file directory | No | `./logs` |
|
|
48
|
+
| `VERBOSE_LOGGING` | Verbose security decision logging | No | `false` |
|
|
49
|
+
| `LOG_PERFORMANCE_METRICS` | Log performance metrics | No | `false` |
|
|
59
50
|
| `WORKSPACE_DIR` | Base directory for `file_path` containment (CWE-22 protection) | No | cwd |
|
|
60
51
|
| `OUTPUT_BASE_DIR` | Base directory for `output_path` containment (CWE-22 protection) | No | cwd |
|
|
61
52
|
|
|
62
|
-
|
|
53
|
+
## Design philosophy
|
|
63
54
|
|
|
64
|
-
|
|
55
|
+
**Thin client pattern.** This MCP server contains **zero business logic**. All data processing, validation, storage, and rendering are handled by the registry API. The server's sole responsibility is protocol translation between MCP's stdio JSON-RPC and the backend REST API.
|
|
65
56
|
|
|
66
|
-
|
|
57
|
+
## Quick examples
|
|
67
58
|
|
|
68
|
-
|
|
69
|
-
// These are MCP tool calls — Claude Code invokes them automatically.
|
|
59
|
+
Once configured, your harness can invoke these tools through MCP:
|
|
70
60
|
|
|
61
|
+
```jsonc
|
|
71
62
|
// Browse published definitions
|
|
72
63
|
list_definitions({ "type": "agent", "status": "published", "limit": 10 })
|
|
73
64
|
|
|
@@ -77,93 +68,114 @@ get_definition({ type: "agent", name: "code-validator", include_yaml: true })
|
|
|
77
68
|
// Search across all definition types
|
|
78
69
|
search_definitions({ query: "validation", type: "agent" })
|
|
79
70
|
|
|
80
|
-
//
|
|
81
|
-
resolve_alias({ alias: "sonnet" })
|
|
82
|
-
|
|
83
|
-
// Validate YAML before publishing
|
|
71
|
+
// Validate YAML before publishing (inline or by file path)
|
|
84
72
|
validate_definition({ type: "agent", yaml: "..." })
|
|
85
|
-
|
|
86
|
-
// Or validate from a file path instead of inline YAML
|
|
87
73
|
validate_definition({ type: "agent", file_path: "/path/to/agent.yaml" })
|
|
88
74
|
|
|
89
75
|
// Create and publish a definition
|
|
90
|
-
create_definition({ type: "agent", name: "my-agent", yaml: "
|
|
76
|
+
create_definition({ type: "agent", name: "my-agent", yaml: "..." })
|
|
91
77
|
publish_definition({ type: "agent", name: "my-agent", version: "1.0.0" })
|
|
92
78
|
|
|
93
|
-
//
|
|
94
|
-
|
|
79
|
+
// One-call create-or-update-and-publish
|
|
80
|
+
update_and_publish({ type: "agent", name: "my-agent", version: "1.1.0", yaml: "..." })
|
|
95
81
|
|
|
96
|
-
// Compare versions
|
|
97
|
-
diff_versions({ type: "agent", name: "code-validator", from: "1.0.0", to: "1.1.0"
|
|
98
|
-
|
|
82
|
+
// Compare versions in three different formats
|
|
83
|
+
diff_versions({ type: "agent", name: "code-validator", from: "1.0.0", to: "1.1.0" }) // section summary
|
|
84
|
+
diff_versions({ type: "agent", name: "code-validator", from: "1.0.0", to: "1.1.0", format: "fields" }) // structural diff + suggested bump
|
|
85
|
+
diff_versions({ type: "agent", name: "code-validator", from: "1.0.0", to: "1.1.0", format: "unified" }) // git-style diff
|
|
99
86
|
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
|
|
87
|
+
// Analytics
|
|
88
|
+
get_effectiveness({ type: "agent", name: "code-validator", version: "1.1.0" })
|
|
89
|
+
compare_effectiveness({ type: "agent", name: "code-validator", versions: ["1.0.0", "1.1.0"] })
|
|
103
90
|
```
|
|
104
91
|
|
|
105
|
-
## Available
|
|
92
|
+
## Available tools
|
|
106
93
|
|
|
107
|
-
### Core
|
|
94
|
+
### Core tools (P0)
|
|
108
95
|
| Tool | Description |
|
|
109
96
|
|------|-------------|
|
|
110
97
|
| `list_definitions` | List definitions with filters (type, status, domain, visibility, search, tags, pagination) |
|
|
111
|
-
| `get_definition` | Get a single definition by type+name, optionally with YAML/runtime/refs |
|
|
98
|
+
| `get_definition` | Get a single definition by type + name, optionally with YAML / runtime / refs |
|
|
112
99
|
| `search_definitions` | Search definitions by keyword |
|
|
113
100
|
| `list_models` | List AI models with optional filters |
|
|
114
|
-
| `resolve_alias` | Resolve alias (e.g.
|
|
101
|
+
| `resolve_alias` | Resolve an alias (e.g. `sonnet`) to provider + modelId |
|
|
115
102
|
| `validate_definition` | Validate YAML without storing (accepts `yaml` or `file_path`) |
|
|
116
|
-
| `render_definition` | Get rendered markdown for a definition.
|
|
103
|
+
| `render_definition` | Get rendered markdown for a definition. `output_path` writes directly to a file |
|
|
117
104
|
|
|
118
|
-
### Definition
|
|
105
|
+
### Definition management (P1)
|
|
119
106
|
| Tool | Description |
|
|
120
107
|
|------|-------------|
|
|
121
108
|
| `create_definition` | Create a new draft definition (accepts `yaml` or `file_path`) |
|
|
122
|
-
| `update_definition` | Update a draft definition
|
|
109
|
+
| `update_definition` | Update a draft definition. Smart version-up: if target version is published or doesn't exist and YAML is provided, automatically creates a new draft |
|
|
123
110
|
| `publish_definition` | Publish a draft definition |
|
|
124
111
|
| `deprecate_definition` | Deprecate with reason and optional successor |
|
|
112
|
+
| `archive_definition` | Archive a deprecated definition (terminal lifecycle state) |
|
|
125
113
|
| `delete_definition` | Delete a draft (published definitions cannot be deleted) |
|
|
126
114
|
|
|
127
|
-
###
|
|
115
|
+
### Composite workflows (P1)
|
|
116
|
+
| Tool | Description |
|
|
117
|
+
|------|-------------|
|
|
118
|
+
| `update_and_publish` | Update a draft and publish it in one call. Inherits smart version-up + create fallback from `update_definition` |
|
|
119
|
+
| `batch_publish` | Publish up to 20 definition versions in one call. Continues on individual failures, returns both published and failed items |
|
|
120
|
+
|
|
121
|
+
### Versions & dependencies (P1)
|
|
128
122
|
| Tool | Description |
|
|
129
123
|
|------|-------------|
|
|
130
124
|
| `list_versions` | List all versions of a definition |
|
|
131
|
-
| `diff_versions` | Compare two versions.
|
|
125
|
+
| `diff_versions` | Compare two versions. `format`: `sections` (default), `fields` (structural + suggested bump), `unified` (git-style) |
|
|
132
126
|
| `get_dependencies` | Forward dependency graph |
|
|
133
127
|
| `get_dependents` | Reverse dependency graph |
|
|
134
128
|
| `get_execution_stats` | Execution statistics for a definition version |
|
|
135
129
|
| `list_forks` | List forks of a definition |
|
|
136
130
|
|
|
137
|
-
###
|
|
131
|
+
### Forks (P2)
|
|
138
132
|
| Tool | Description |
|
|
139
133
|
|------|-------------|
|
|
140
134
|
| `fork_definition` | Fork a definition |
|
|
141
135
|
| `is_forkable` | Check if a definition version can be forked |
|
|
142
136
|
| `get_fork_lineage` | Fork ancestry chain |
|
|
143
137
|
|
|
144
|
-
### Translation
|
|
138
|
+
### Translation (P2)
|
|
145
139
|
| Tool | Description |
|
|
146
140
|
|------|-------------|
|
|
147
141
|
| `retranslate_definition` | Retranslate with the latest translator version |
|
|
148
142
|
| `upgrade_definition` | Upgrade a definition from legacy format (accepts `yaml` or `file_path`) |
|
|
149
143
|
| `get_translator_version` | Get current translator version |
|
|
150
144
|
|
|
151
|
-
###
|
|
145
|
+
### Models & languages (P2)
|
|
152
146
|
| Tool | Description |
|
|
153
147
|
|------|-------------|
|
|
154
|
-
| `get_model` | Get specific model details by provider+modelId |
|
|
148
|
+
| `get_model` | Get specific model details by provider + modelId |
|
|
155
149
|
| `list_providers` | List AI providers |
|
|
156
150
|
| `list_aliases` | List all model aliases |
|
|
157
|
-
| `
|
|
151
|
+
| `list_languages` | List supported definition languages (ADL, CDL, WDL, PDL) |
|
|
152
|
+
| `get_language` | Get a definition language with its current JSON Schema |
|
|
158
153
|
|
|
159
|
-
### Execution &
|
|
154
|
+
### Execution & users (P2)
|
|
160
155
|
| Tool | Description |
|
|
161
156
|
|------|-------------|
|
|
162
157
|
| `record_execution` | Record a definition execution (idempotent) |
|
|
163
158
|
| `get_user` | Get public user profile |
|
|
164
159
|
| `batch_users` | Batch user lookup (max 100) |
|
|
165
160
|
|
|
166
|
-
|
|
161
|
+
### Analytics (P3)
|
|
162
|
+
| Tool | Description |
|
|
163
|
+
|------|-------------|
|
|
164
|
+
| `get_effectiveness` | Effectiveness metrics for a definition: pass rate, scores, taxonomy, health score |
|
|
165
|
+
| `get_health` | Health grade and issue profile for a definition |
|
|
166
|
+
| `get_ecosystem_overview` | Ecosystem-wide analytics overview |
|
|
167
|
+
| `get_lineage` | Lineage graph for a definition (versions + forks as a tree) |
|
|
168
|
+
| `get_evolution` | Version-over-version metrics with trend detection |
|
|
169
|
+
| `get_translation_analytics` | Versions grouped by translator version with aggregate metrics |
|
|
170
|
+
| `compare_effectiveness` | Compare effectiveness across 2–5 definition versions side-by-side |
|
|
171
|
+
| `get_diff_impact` | Structural diff combined with metric deltas between two versions |
|
|
172
|
+
|
|
173
|
+
### Session
|
|
174
|
+
| Tool | Description |
|
|
175
|
+
|------|-------------|
|
|
176
|
+
| `set_default_type` | Set (or clear) a session-level default for the `type` parameter. When set, definition tools use this type unless explicitly overridden |
|
|
177
|
+
|
|
178
|
+
## Available resources
|
|
167
179
|
|
|
168
180
|
MCP resources provide read-only access to registry data via the `registry://` URI scheme.
|
|
169
181
|
|
|
@@ -171,58 +183,47 @@ MCP resources provide read-only access to registry data via the `registry://` UR
|
|
|
171
183
|
|----------|-----|-------------|
|
|
172
184
|
| Definitions | `registry://definitions` | Published definitions (up to 100) |
|
|
173
185
|
| Models | `registry://models` | AI model catalog |
|
|
174
|
-
| Definition
|
|
186
|
+
| Definition types | `registry://definition-types` | Static list: agent, command, workflow, pipeline |
|
|
175
187
|
| Providers | `registry://providers` | AI provider list |
|
|
176
188
|
|
|
177
|
-
### Resource Usage
|
|
178
|
-
|
|
179
189
|
```typescript
|
|
180
|
-
// List published definitions
|
|
181
190
|
read_resource("registry://definitions")
|
|
182
|
-
|
|
183
|
-
// Browse available AI models
|
|
184
191
|
read_resource("registry://models")
|
|
185
|
-
|
|
186
|
-
// Get supported definition types with descriptions
|
|
187
192
|
read_resource("registry://definition-types")
|
|
188
193
|
```
|
|
189
194
|
|
|
190
|
-
## Rate
|
|
195
|
+
## Rate limiting
|
|
191
196
|
|
|
192
|
-
This
|
|
197
|
+
This server uses [mcp-secure-server](https://github.com/aself101/mcp-secure-server) with configuration tuned for typical harness usage patterns. Source of truth: `src/index.ts` (global) and `src/config/tool-registry.ts` (per-tool).
|
|
193
198
|
|
|
194
199
|
| Setting | Value | Notes |
|
|
195
200
|
|---------|-------|-------|
|
|
196
201
|
| Security level | `basic` | |
|
|
197
202
|
| Max requests/min | 120 | Global rate limit |
|
|
198
203
|
| Burst threshold | 15 | Requests within burst window |
|
|
199
|
-
| Burst window |
|
|
200
|
-
| Automation detection | Disabled |
|
|
204
|
+
| Burst window | 5000 ms | |
|
|
205
|
+
| Automation detection | Disabled | The calling harness is trusted automation |
|
|
201
206
|
|
|
202
|
-
Per-tool quotas are configured in `src/config/tool-registry.ts`. Read-heavy tools (list, get, search) allow up to 240 req/min. Write tools (create, update, publish) are 30
|
|
207
|
+
Per-tool quotas are configured in `src/config/tool-registry.ts`. Read-heavy tools (list, get, search) allow up to 240 req/min. Write tools (create, update, publish) are 30–60 req/min.
|
|
203
208
|
|
|
204
209
|
## Development
|
|
205
210
|
|
|
206
211
|
```bash
|
|
207
|
-
|
|
212
|
+
git clone git@github.com:Uluops/-uluops-registry-mcp.git
|
|
213
|
+
cd -uluops-registry-mcp
|
|
208
214
|
npm install
|
|
209
|
-
|
|
210
|
-
#
|
|
211
|
-
npm run dev
|
|
212
|
-
|
|
213
|
-
# Run tests
|
|
214
|
-
npm test
|
|
215
|
-
|
|
216
|
-
# Type checking
|
|
215
|
+
npm run build
|
|
216
|
+
npm test # 329 tests
|
|
217
217
|
npm run typecheck
|
|
218
|
-
|
|
219
|
-
# Linting
|
|
220
218
|
npm run lint
|
|
221
|
-
|
|
222
|
-
# Build for production
|
|
223
|
-
npm run build
|
|
224
219
|
```
|
|
225
220
|
|
|
221
|
+
## Requirements
|
|
222
|
+
|
|
223
|
+
- **Node.js:** ≥ 18
|
|
224
|
+
- **Platform:** Linux, macOS, or WSL2
|
|
225
|
+
- **Auth:** UluOps API key ([get one here](https://app.uluops.ai/settings/api-keys))
|
|
226
|
+
|
|
226
227
|
## License
|
|
227
228
|
|
|
228
229
|
MIT
|
|
@@ -12,6 +12,35 @@ import type { McpToolResponse } from '../types/index.js';
|
|
|
12
12
|
* and truncation.
|
|
13
13
|
*/
|
|
14
14
|
export declare const sanitizeErrorMessage: typeof sanitizeString;
|
|
15
|
+
export interface ExtractedErrorContext {
|
|
16
|
+
/** Sanitized human-readable message. */
|
|
17
|
+
message: string;
|
|
18
|
+
/** HTTP status code if available on the SDK error. */
|
|
19
|
+
status?: number;
|
|
20
|
+
/** 402-only: tier required for access. */
|
|
21
|
+
required_tier?: string;
|
|
22
|
+
/** 402-only: caller's current tier. */
|
|
23
|
+
current_tier?: string;
|
|
24
|
+
/** 402-only: definition reference. */
|
|
25
|
+
definition?: {
|
|
26
|
+
type?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
};
|
|
29
|
+
/** 402-only: upgrade URL (mcp-source-tagged). */
|
|
30
|
+
upgrade_url?: string;
|
|
31
|
+
/** 409-only: next available version hint. */
|
|
32
|
+
nextAvailable?: unknown;
|
|
33
|
+
/** 429-only: server-recommended retry delay in seconds. */
|
|
34
|
+
retry_after?: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract the same structured-error fields as `mapSdkErrorToMcp` produces,
|
|
38
|
+
* but without wrapping them in an `McpToolResponse`. Useful inside batch
|
|
39
|
+
* loops where each per-item failure should embed the rich error context
|
|
40
|
+
* (402 upgrade URL, 429 retry-after, 409 nextAvailable) into the parent
|
|
41
|
+
* response rather than producing one MCP error envelope per failure.
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractErrorContext(error: unknown): ExtractedErrorContext;
|
|
15
44
|
/**
|
|
16
45
|
* Map an SDK error to an MCP tool response.
|
|
17
46
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-error-mapper.d.ts","sourceRoot":"","sources":["../../src/client/sdk-error-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,uBAAiB,CAAC;AAkCnD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAqGhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAahE"}
|
|
1
|
+
{"version":3,"file":"sdk-error-mapper.d.ts","sourceRoot":"","sources":["../../src/client/sdk-error-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,uBAAiB,CAAC;AAkCnD,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAiDzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAqGhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAahE"}
|
|
@@ -39,6 +39,59 @@ function buildErrorResponse(message, metadata) {
|
|
|
39
39
|
isError: true,
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Extract the same structured-error fields as `mapSdkErrorToMcp` produces,
|
|
44
|
+
* but without wrapping them in an `McpToolResponse`. Useful inside batch
|
|
45
|
+
* loops where each per-item failure should embed the rich error context
|
|
46
|
+
* (402 upgrade URL, 429 retry-after, 409 nextAvailable) into the parent
|
|
47
|
+
* response rather than producing one MCP error envelope per failure.
|
|
48
|
+
*/
|
|
49
|
+
export function extractErrorContext(error) {
|
|
50
|
+
const status = getStatusCode(error);
|
|
51
|
+
if (status === 402) {
|
|
52
|
+
const details = error.details ?? {};
|
|
53
|
+
const requiredTier = typeof details['requiredTier'] === 'string' ? details['requiredTier'] : undefined;
|
|
54
|
+
const currentTier = typeof details['currentTier'] === 'string' ? details['currentTier'] : undefined;
|
|
55
|
+
const def = (details['definition'] && typeof details['definition'] === 'object')
|
|
56
|
+
? details['definition']
|
|
57
|
+
: undefined;
|
|
58
|
+
const upgradeUrl = typeof details['upgradeUrl'] === 'string' ? details['upgradeUrl'] : undefined;
|
|
59
|
+
const sep = upgradeUrl?.includes('?') === true ? '&' : '?';
|
|
60
|
+
const trackedUrl = upgradeUrl !== undefined ? `${upgradeUrl}${sep}source=mcp` : undefined;
|
|
61
|
+
return {
|
|
62
|
+
message: sanitizeErrorMessage(getErrorMessage(error, 'Subscription required')),
|
|
63
|
+
status,
|
|
64
|
+
...(requiredTier !== undefined ? { required_tier: requiredTier } : {}),
|
|
65
|
+
...(currentTier !== undefined ? { current_tier: currentTier } : {}),
|
|
66
|
+
...(def !== undefined ? { definition: def } : {}),
|
|
67
|
+
...(trackedUrl !== undefined ? { upgrade_url: trackedUrl } : {}),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (isRateLimitError(error)) {
|
|
71
|
+
const details = error.details ?? {};
|
|
72
|
+
const retryAfter = typeof details['retryAfter'] === 'number' ? details['retryAfter'] : undefined;
|
|
73
|
+
return {
|
|
74
|
+
message: sanitizeErrorMessage(getErrorMessage(error, 'Rate limit exceeded')),
|
|
75
|
+
status,
|
|
76
|
+
...(retryAfter !== undefined ? { retry_after: retryAfter } : {}),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (isConflictError(error)) {
|
|
80
|
+
const details = 'details' in error
|
|
81
|
+
? error.details
|
|
82
|
+
: undefined;
|
|
83
|
+
const nextAvailable = details?.['nextAvailable'];
|
|
84
|
+
return {
|
|
85
|
+
message: sanitizeErrorMessage(getErrorMessage(error, 'Resource conflict')),
|
|
86
|
+
...(status !== undefined ? { status } : {}),
|
|
87
|
+
...(nextAvailable !== undefined ? { nextAvailable } : {}),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
message: sanitizeErrorMessage(getErrorMessage(error, 'Unknown error')),
|
|
92
|
+
...(status !== undefined ? { status } : {}),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
42
95
|
/**
|
|
43
96
|
* Map an SDK error to an MCP tool response.
|
|
44
97
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-error-mapper.js","sourceRoot":"","sources":["../../src/client/sdk-error-mapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdk-error-mapper.js","sourceRoot":"","sources":["../../src/client/sdk-error-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -12,6 +12,12 @@ export declare const VERSION: string;
|
|
|
12
12
|
export declare function loadConfig(): RegistryMcpConfig;
|
|
13
13
|
/**
|
|
14
14
|
* Validate that required configuration is present and well-formed.
|
|
15
|
+
*
|
|
16
|
+
* Returns a list of non-fatal warnings (e.g., custom registry URL accepted
|
|
17
|
+
* via escape hatch) that the caller should log so the user sees what
|
|
18
|
+
* happened during startup.
|
|
15
19
|
*/
|
|
16
|
-
export declare function validateConfig(config: RegistryMcpConfig):
|
|
20
|
+
export declare function validateConfig(config: RegistryMcpConfig): {
|
|
21
|
+
warnings: string[];
|
|
22
|
+
};
|
|
17
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,mBAAmB,CAAC;AAKrE,kEAAkE;AAClE,eAAO,MAAM,OAAO,QAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,mBAAmB,CAAC;AAKrE,kEAAkE;AAClE,eAAO,MAAM,OAAO,QAAa,CAAC;AAyBlC;;GAEG;AACH,wBAAgB,UAAU,IAAI,iBAAiB,CA6B9C;AAwCD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAqEhF"}
|