@raytio/mcp-server 2.1.0 → 2.2.0
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/README.md +5 -2
- package/contracts/persist/mcp_resource_contract.json +87457 -0
- package/dist/contracts/persist-resource-contract.d.ts +1121 -0
- package/dist/contracts/persist-resource-contract.d.ts.map +1 -0
- package/dist/contracts/persist-resource-contract.js +261 -0
- package/dist/contracts/persist-resource-contract.js.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist-resource-contract.d.ts","sourceRoot":"","sources":["../../src/contracts/persist-resource-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
3
|
+
import { dirname, resolve } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Loader and validator for the Persist "MCP resource contract" artifact
|
|
8
|
+
* produced by `persist/export_mcp_contract.py` in raytio/common/persist.
|
|
9
|
+
*
|
|
10
|
+
* The contract pins the set of PostgREST resources — with fields, operations,
|
|
11
|
+
* permission tuples, filter/order capabilities, sensitivity, side effects, and
|
|
12
|
+
* relationships — that MCP downstream tooling may safely surface as tools.
|
|
13
|
+
*
|
|
14
|
+
* MCP consumes the artifact through this module so that:
|
|
15
|
+
*
|
|
16
|
+
* - the file's shape is validated against a Zod schema (fail closed on any
|
|
17
|
+
* structural drift);
|
|
18
|
+
* - the artifact's declared `content_hash` is recomputed from a deterministic
|
|
19
|
+
* canonicalisation and compared (fail closed on any tampering, truncation,
|
|
20
|
+
* or upstream serialiser divergence);
|
|
21
|
+
* - the artifact's `contract_version` major is checked against the range this
|
|
22
|
+
* MCP build understands (fail closed on incompatible upgrades).
|
|
23
|
+
*
|
|
24
|
+
* The runtime never reaches across to the Persist repository — the artifact is
|
|
25
|
+
* vendored under `contracts/persist/mcp_resource_contract.json` at build time
|
|
26
|
+
* and scheduled CI syncs it (see `docs/persist-contract-sync.md`).
|
|
27
|
+
*/
|
|
28
|
+
/** Contract major version this MCP build understands. */
|
|
29
|
+
export const SUPPORTED_CONTRACT_MAJOR = 2;
|
|
30
|
+
const contractPath = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..', 'contracts', 'persist', 'mcp_resource_contract.json');
|
|
31
|
+
// A JSON scalar/array/object graph. Loose enough to survive contract growth,
|
|
32
|
+
// strict enough that the loader catches malformed values before hashing.
|
|
33
|
+
const jsonValueSchema = z.lazy(() => z.union([
|
|
34
|
+
z.null(),
|
|
35
|
+
z.string(),
|
|
36
|
+
z.number(),
|
|
37
|
+
z.boolean(),
|
|
38
|
+
z.array(jsonValueSchema),
|
|
39
|
+
z.record(jsonValueSchema),
|
|
40
|
+
]));
|
|
41
|
+
const permissionSchema = z.object({
|
|
42
|
+
resource_group: z.string().min(1),
|
|
43
|
+
resource_name: z.string().min(1),
|
|
44
|
+
operations: z.array(z.string()),
|
|
45
|
+
});
|
|
46
|
+
const fieldSchema = z
|
|
47
|
+
.object({
|
|
48
|
+
name: z.string().min(1),
|
|
49
|
+
type: z.union([z.string(), z.array(z.string())]),
|
|
50
|
+
required: z.boolean(),
|
|
51
|
+
read_only: z.boolean().optional(),
|
|
52
|
+
description: z.string().nullable().optional(),
|
|
53
|
+
format: z.string().optional(),
|
|
54
|
+
maxLength: z.number().int().nonnegative().optional(),
|
|
55
|
+
})
|
|
56
|
+
.passthrough();
|
|
57
|
+
const resourceSchema = z
|
|
58
|
+
.object({
|
|
59
|
+
resource_id: z.string().min(1),
|
|
60
|
+
module: z.string().min(1),
|
|
61
|
+
table: z.string().min(1),
|
|
62
|
+
schema_name: z.string().nullable(),
|
|
63
|
+
schema_version: z.string().nullable(),
|
|
64
|
+
public_endpoint: z.string().min(1),
|
|
65
|
+
primary_key: z.union([z.string(), z.array(z.string()), z.null()]),
|
|
66
|
+
title: z.string().nullable(),
|
|
67
|
+
title_plural: z.string().nullable(),
|
|
68
|
+
description: z.string().nullable(),
|
|
69
|
+
fields: z.array(fieldSchema).min(1),
|
|
70
|
+
operations: z.array(z.string()).min(1),
|
|
71
|
+
permission: permissionSchema,
|
|
72
|
+
filter_capabilities: z
|
|
73
|
+
.object({
|
|
74
|
+
filterable_fields: z.array(z.string()),
|
|
75
|
+
supported_operators: z.array(z.string()),
|
|
76
|
+
})
|
|
77
|
+
.passthrough(),
|
|
78
|
+
order_capabilities: z
|
|
79
|
+
.object({
|
|
80
|
+
orderable_fields: z.array(z.string()),
|
|
81
|
+
})
|
|
82
|
+
.passthrough(),
|
|
83
|
+
sensitivity: z.enum(['normal', 'sensitive', 'restricted']),
|
|
84
|
+
side_effects: z.array(z.string()),
|
|
85
|
+
relationships: z.array(jsonValueSchema),
|
|
86
|
+
})
|
|
87
|
+
.passthrough();
|
|
88
|
+
const exclusionSchema = z
|
|
89
|
+
.object({
|
|
90
|
+
reason: z.string().min(1),
|
|
91
|
+
detail: z.string().min(1),
|
|
92
|
+
table: z.string().min(1),
|
|
93
|
+
schema_name: z.string().nullable().optional(),
|
|
94
|
+
})
|
|
95
|
+
.passthrough();
|
|
96
|
+
const exclusionRuleSchema = z
|
|
97
|
+
.object({
|
|
98
|
+
reason: z.string().min(1),
|
|
99
|
+
description: z.string().min(1),
|
|
100
|
+
match_substrings: z.array(z.string()),
|
|
101
|
+
})
|
|
102
|
+
.passthrough();
|
|
103
|
+
const provenanceSchema = z
|
|
104
|
+
.object({
|
|
105
|
+
source_commit: z.string().min(7),
|
|
106
|
+
introspection_timestamp: z.string().min(1),
|
|
107
|
+
latest_repo_migration: z.string().nullable(),
|
|
108
|
+
})
|
|
109
|
+
.passthrough();
|
|
110
|
+
export const persistResourceContractSchema = z
|
|
111
|
+
.object({
|
|
112
|
+
contract_version: z.string().regex(/^\d+\.\d+\.\d+$/),
|
|
113
|
+
content_hash: z.string().regex(/^[0-9a-f]{64}$/),
|
|
114
|
+
source_commit: z.string().min(7),
|
|
115
|
+
source_version: z.string().min(1),
|
|
116
|
+
resource_count: z.number().int().nonnegative(),
|
|
117
|
+
excluded_count: z.number().int().nonnegative(),
|
|
118
|
+
resources: z.array(resourceSchema),
|
|
119
|
+
excluded: z.array(exclusionSchema),
|
|
120
|
+
exclusion_rules: z.array(exclusionRuleSchema).min(1),
|
|
121
|
+
modules: z.array(z.string().min(1)),
|
|
122
|
+
provenance: provenanceSchema.optional(),
|
|
123
|
+
})
|
|
124
|
+
.passthrough();
|
|
125
|
+
export class PersistContractError extends Error {
|
|
126
|
+
cause;
|
|
127
|
+
constructor(message, cause) {
|
|
128
|
+
super(message);
|
|
129
|
+
this.cause = cause;
|
|
130
|
+
this.name = 'PersistContractError';
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Canonicalise a JSON value in the exact byte-form the Persist exporter uses
|
|
135
|
+
* for `content_hash` — deep-sorted object keys, ", " / ": " separators, and
|
|
136
|
+
* UTF-8 characters kept literal (ensure_ascii=False in Python).
|
|
137
|
+
*/
|
|
138
|
+
export function canonicalJson(value) {
|
|
139
|
+
if (value === null)
|
|
140
|
+
return 'null';
|
|
141
|
+
if (typeof value === 'boolean')
|
|
142
|
+
return value ? 'true' : 'false';
|
|
143
|
+
if (typeof value === 'number') {
|
|
144
|
+
if (!Number.isFinite(value)) {
|
|
145
|
+
throw new PersistContractError(`Non-finite number in contract body: ${String(value)}`);
|
|
146
|
+
}
|
|
147
|
+
return JSON.stringify(value);
|
|
148
|
+
}
|
|
149
|
+
if (typeof value === 'string')
|
|
150
|
+
return JSON.stringify(value);
|
|
151
|
+
if (Array.isArray(value)) {
|
|
152
|
+
return '[' + value.map(canonicalJson).join(', ') + ']';
|
|
153
|
+
}
|
|
154
|
+
if (typeof value === 'object') {
|
|
155
|
+
const record = value;
|
|
156
|
+
const keys = Object.keys(record).sort();
|
|
157
|
+
return ('{' +
|
|
158
|
+
keys
|
|
159
|
+
.map((k) => `${JSON.stringify(k)}: ${canonicalJson(record[k])}`)
|
|
160
|
+
.join(', ') +
|
|
161
|
+
'}');
|
|
162
|
+
}
|
|
163
|
+
throw new PersistContractError(`Unsupported value in contract body: ${typeof value}`);
|
|
164
|
+
}
|
|
165
|
+
const UNSTABLE_TOP_LEVEL_KEYS = new Set([
|
|
166
|
+
'content_hash',
|
|
167
|
+
'source_commit',
|
|
168
|
+
'source_version',
|
|
169
|
+
'provenance',
|
|
170
|
+
]);
|
|
171
|
+
export function computeContentHash(contract) {
|
|
172
|
+
const body = {};
|
|
173
|
+
for (const [key, value] of Object.entries(contract)) {
|
|
174
|
+
if (!UNSTABLE_TOP_LEVEL_KEYS.has(key))
|
|
175
|
+
body[key] = value;
|
|
176
|
+
}
|
|
177
|
+
return createHash('sha256').update(canonicalJson(body), 'utf8').digest('hex');
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Read, structurally validate, hash-check, and version-check the pinned
|
|
181
|
+
* Persist contract. Throws {@link PersistContractError} on any failure — the
|
|
182
|
+
* caller is expected to fail closed (do not expose tools built on a bad
|
|
183
|
+
* artifact).
|
|
184
|
+
*/
|
|
185
|
+
export function loadPersistResourceContract(options = {}) {
|
|
186
|
+
const path = options.path ?? contractPath;
|
|
187
|
+
const supportedMajor = options.supportedMajor ?? SUPPORTED_CONTRACT_MAJOR;
|
|
188
|
+
let raw;
|
|
189
|
+
try {
|
|
190
|
+
raw = readFileSync(path, 'utf8');
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
throw new PersistContractError(`Cannot read Persist contract at ${path}`, error);
|
|
194
|
+
}
|
|
195
|
+
let parsed;
|
|
196
|
+
try {
|
|
197
|
+
parsed = JSON.parse(raw);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
throw new PersistContractError(`Persist contract at ${path} is not valid JSON`, error);
|
|
201
|
+
}
|
|
202
|
+
const result = persistResourceContractSchema.safeParse(parsed);
|
|
203
|
+
if (!result.success) {
|
|
204
|
+
throw new PersistContractError(`Persist contract at ${path} failed schema validation: ${result.error.message}`);
|
|
205
|
+
}
|
|
206
|
+
const contract = result.data;
|
|
207
|
+
const [majorText] = contract.contract_version.split('.');
|
|
208
|
+
const major = Number(majorText);
|
|
209
|
+
if (major !== supportedMajor) {
|
|
210
|
+
throw new PersistContractError(`Persist contract_version ${contract.contract_version} is not supported ` +
|
|
211
|
+
`by this MCP build (expects major ${supportedMajor}). Refresh Persist ` +
|
|
212
|
+
'or upgrade MCP.');
|
|
213
|
+
}
|
|
214
|
+
if (contract.resources.length !== contract.resource_count) {
|
|
215
|
+
throw new PersistContractError(`resource_count (${contract.resource_count}) disagrees with ` +
|
|
216
|
+
`resources.length (${contract.resources.length}).`);
|
|
217
|
+
}
|
|
218
|
+
if (contract.excluded.length !== contract.excluded_count) {
|
|
219
|
+
throw new PersistContractError(`excluded_count (${contract.excluded_count}) disagrees with ` +
|
|
220
|
+
`excluded.length (${contract.excluded.length}).`);
|
|
221
|
+
}
|
|
222
|
+
const seen = new Set();
|
|
223
|
+
for (const resource of contract.resources) {
|
|
224
|
+
if (seen.has(resource.resource_id)) {
|
|
225
|
+
throw new PersistContractError(`Duplicate resource_id in Persist contract: ${resource.resource_id}`);
|
|
226
|
+
}
|
|
227
|
+
seen.add(resource.resource_id);
|
|
228
|
+
}
|
|
229
|
+
const expectedHash = computeContentHash(contract);
|
|
230
|
+
if (expectedHash !== contract.content_hash) {
|
|
231
|
+
throw new PersistContractError(`Persist contract content_hash mismatch: file claims ${contract.content_hash} ` +
|
|
232
|
+
`but body hashes to ${expectedHash}. The artifact has been edited by hand or ` +
|
|
233
|
+
'the exporter is out of sync.');
|
|
234
|
+
}
|
|
235
|
+
return contract;
|
|
236
|
+
}
|
|
237
|
+
export function summariseResources(contract) {
|
|
238
|
+
return [...contract.resources]
|
|
239
|
+
.sort((a, b) => a.resource_id.localeCompare(b.resource_id))
|
|
240
|
+
.map((resource) => ({
|
|
241
|
+
resourceId: resource.resource_id,
|
|
242
|
+
module: resource.module,
|
|
243
|
+
table: resource.table,
|
|
244
|
+
publicEndpoint: resource.public_endpoint,
|
|
245
|
+
operations: resource.operations,
|
|
246
|
+
sensitivity: resource.sensitivity,
|
|
247
|
+
sideEffects: resource.side_effects,
|
|
248
|
+
permission: resource.permission,
|
|
249
|
+
fieldCount: resource.fields.length,
|
|
250
|
+
filterableFieldCount: resource.filter_capabilities.filterable_fields.length,
|
|
251
|
+
}));
|
|
252
|
+
}
|
|
253
|
+
/** Group the resource metadata by module for cataloguing tools. */
|
|
254
|
+
export function summariseModules(contract) {
|
|
255
|
+
const grouped = {};
|
|
256
|
+
for (const resource of summariseResources(contract)) {
|
|
257
|
+
(grouped[resource.module] ??= []).push(resource);
|
|
258
|
+
}
|
|
259
|
+
return grouped;
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=persist-resource-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist-resource-contract.js","sourceRoot":"","sources":["../../src/contracts/persist-resource-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
6
6
|
import { loadConfig } from './config.js';
|
|
7
|
+
import { PersistContractError, loadPersistResourceContract, } from './contracts/persist-resource-contract.js';
|
|
7
8
|
import { CognitoAuth } from './raytio/auth.js';
|
|
8
9
|
import { RaytioApiClient } from './raytio/api-client.js';
|
|
9
10
|
import { resolveDomains } from './tools/domains.js';
|
|
@@ -12,6 +13,25 @@ import { dispatchToolCall } from './tools/dispatch.js';
|
|
|
12
13
|
import { PACKAGE_VERSION } from './version.js';
|
|
13
14
|
// Load configuration
|
|
14
15
|
const config = loadConfig();
|
|
16
|
+
// Validate the pinned Persist resource contract before touching Cognito or
|
|
17
|
+
// PostgREST. Any structural, hash, or version mismatch is fatal — MCP must
|
|
18
|
+
// never advertise tools built on a malformed or incompatible artifact.
|
|
19
|
+
let persistContract;
|
|
20
|
+
try {
|
|
21
|
+
persistContract = loadPersistResourceContract();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const detail = error instanceof PersistContractError
|
|
25
|
+
? error.message
|
|
26
|
+
: error.message;
|
|
27
|
+
console.error(`Persist resource contract failed validation: ${detail}`);
|
|
28
|
+
console.error('Refusing to start — run `npm run contract:check-resource` to reproduce, or ' +
|
|
29
|
+
'`npm run contract:sync-resource` to refresh from Persist.');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
console.error(`Raytio MCP: pinned Persist contract ${persistContract.contract_version} ` +
|
|
33
|
+
`at ${persistContract.source_commit.slice(0, 8)} ` +
|
|
34
|
+
`(${persistContract.resource_count} resources, ${persistContract.excluded_count} excluded)`);
|
|
15
35
|
// Initialize authentication and API client
|
|
16
36
|
const auth = new CognitoAuth({
|
|
17
37
|
userPoolId: config.raytio.cognito.userPoolId,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raytio/mcp-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "MCP server for secure AI agent access to Raytio user data",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
"contracts/persist/mcp_resource_contract.json",
|
|
12
13
|
"config.env.example",
|
|
13
14
|
"README.md",
|
|
14
15
|
"AGENTS.md",
|
|
@@ -16,12 +17,14 @@
|
|
|
16
17
|
],
|
|
17
18
|
"scripts": {
|
|
18
19
|
"dev": "tsx src/index.ts",
|
|
19
|
-
"build": "tsc",
|
|
20
|
+
"build": "tsx scripts/check-persist-resource-contract.ts && tsc",
|
|
20
21
|
"start": "node dist/index.js",
|
|
21
22
|
"test": "vitest --run",
|
|
22
23
|
"test:ui": "vitest --ui",
|
|
23
24
|
"contract:check": "tsx scripts/check-persist-contract.ts",
|
|
24
25
|
"contract:sync": "tsx scripts/sync-persist-contract.ts",
|
|
26
|
+
"contract:check-resource": "tsx scripts/check-persist-resource-contract.ts",
|
|
27
|
+
"contract:sync-resource": "tsx scripts/sync-persist-resource-contract.ts",
|
|
25
28
|
"contract:mr": "tsx scripts/open-contract-sync-mr.ts",
|
|
26
29
|
"docs:tools": "tsx scripts/generate-tool-docs.ts",
|
|
27
30
|
"sdk:generate": "tsx scripts/generate-tool-docs.ts --emit-types",
|