@jrmc/adonis-mcp 1.0.0-beta.4 → 1.0.0-beta.6
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 +25 -5
- package/build/configure.d.ts.map +1 -1
- package/build/configure.js +5 -1
- package/build/providers/mcp_provider.d.ts.map +1 -1
- package/build/providers/mcp_provider.js +14 -5
- package/build/providers/vinejs_provider.d.ts +13 -0
- package/build/providers/vinejs_provider.d.ts.map +1 -0
- package/build/providers/vinejs_provider.js +10 -0
- package/build/src/request.d.ts +6 -2
- package/build/src/request.d.ts.map +1 -1
- package/build/src/request.js +6 -2
- package/build/src/response.d.ts +1 -1
- package/build/src/response.d.ts.map +1 -1
- package/build/src/response.js +1 -1
- package/build/src/server/annotations/is_destructive.d.ts +1 -1
- package/build/src/server/annotations/is_destructive.d.ts.map +1 -1
- package/build/src/server/annotations/is_idempotent.d.ts +1 -1
- package/build/src/server/annotations/is_idempotent.d.ts.map +1 -1
- package/build/src/server/annotations/is_open_world.d.ts +1 -1
- package/build/src/server/annotations/is_open_world.d.ts.map +1 -1
- package/build/src/server/annotations/is_read_only.d.ts +1 -1
- package/build/src/server/annotations/is_read_only.d.ts.map +1 -1
- package/build/src/server/contents/embedded_resource.js +1 -1
- package/build/src/server/contents/error.d.ts +5 -0
- package/build/src/server/contents/error.d.ts.map +1 -1
- package/build/src/server/contents/error.js +10 -1
- package/build/src/server/contents/resource_link.js +1 -1
- package/build/src/server/context.d.ts +1 -3
- package/build/src/server/context.d.ts.map +1 -1
- package/build/src/server/context.js +3 -21
- package/build/src/server/contracts/context.d.ts +2 -3
- package/build/src/server/contracts/context.d.ts.map +1 -1
- package/build/src/server/contracts/request.d.ts +12 -0
- package/build/src/server/contracts/request.d.ts.map +1 -0
- package/build/src/server/contracts/request.js +1 -0
- package/build/src/server/contracts/response.d.ts +1 -1
- package/build/src/server/contracts/response.d.ts.map +1 -1
- package/build/src/server/exceptions/jsonrpc_error.d.ts +7 -0
- package/build/src/server/exceptions/jsonrpc_error.d.ts.map +1 -0
- package/build/src/server/exceptions/jsonrpc_error.js +10 -0
- package/build/src/server/methods/call_tool.d.ts.map +1 -1
- package/build/src/server/methods/call_tool.js +13 -4
- package/build/src/server/methods/completion.js +5 -5
- package/build/src/server/methods/get_prompt.js +3 -3
- package/build/src/server/methods/list_prompts.d.ts.map +1 -1
- package/build/src/server/methods/list_prompts.js +1 -12
- package/build/src/server/methods/list_resource_templates.d.ts.map +1 -1
- package/build/src/server/methods/list_resource_templates.js +2 -13
- package/build/src/server/methods/list_resources.d.ts.map +1 -1
- package/build/src/server/methods/list_resources.js +2 -13
- package/build/src/server/methods/list_tools.d.ts.map +1 -1
- package/build/src/server/methods/list_tools.js +1 -12
- package/build/src/server/methods/read_resource.d.ts.map +1 -1
- package/build/src/server/methods/read_resource.js +11 -4
- package/build/src/server/pagination/cursor_paginator.d.ts +6 -4
- package/build/src/server/pagination/cursor_paginator.d.ts.map +1 -1
- package/build/src/server/pagination/cursor_paginator.js +4 -4
- package/build/src/server/prompt.d.ts +2 -1
- package/build/src/server/prompt.d.ts.map +1 -1
- package/build/src/server/requests/request_validator.d.ts +15 -0
- package/build/src/server/requests/request_validator.d.ts.map +1 -0
- package/build/src/server/requests/request_validator.js +25 -0
- package/build/src/server.d.ts +2 -0
- package/build/src/server.d.ts.map +1 -1
- package/build/src/server.js +5 -0
- package/build/src/types/context.d.ts +7 -6
- package/build/src/types/context.d.ts.map +1 -1
- package/build/src/types/method.d.ts +19 -11
- package/build/src/types/method.d.ts.map +1 -1
- package/build/src/types/request.d.ts +25 -2
- package/build/src/types/request.d.ts.map +1 -1
- package/build/src/types/response.d.ts +10 -3
- package/build/src/types/response.d.ts.map +1 -1
- package/build/src/utils/find_resource_pattern.js +1 -1
- package/build/stubs/make/mcp/prompts/main.ts.stub +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -26,15 +26,15 @@ AdonisJS MCP - Server MCP for your AdonisJS applications.
|
|
|
26
26
|
- [x] Inspector
|
|
27
27
|
- [x] Session
|
|
28
28
|
- [x] Documentation
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
29
|
+
- [x] Inject support
|
|
30
|
+
- [x] VineJs integration
|
|
31
|
+
- [ ] JSON Schema with VineJs
|
|
31
32
|
- [ ] Bounce integration (WIP)
|
|
32
33
|
- [ ] Auth helpers (WIP)
|
|
33
|
-
- [ ] Inject support
|
|
34
34
|
- [ ] Events
|
|
35
35
|
- [ ] Logger
|
|
36
36
|
- [ ] Alternative transports (SSE)
|
|
37
|
-
- [ ]
|
|
37
|
+
- [ ] Output tool
|
|
38
38
|
- [ ] Login flow
|
|
39
39
|
- [ ] Starter kit
|
|
40
40
|
- [ ] Demo applications
|
|
@@ -92,7 +92,6 @@ export default class MyToolTool extends Tool<Schema> {
|
|
|
92
92
|
description = 'Tool description'
|
|
93
93
|
|
|
94
94
|
async handle({ args, response }: ToolContext<Schema>) {
|
|
95
|
-
console.log(args.text)
|
|
96
95
|
return response.text('Hello, world!')
|
|
97
96
|
}
|
|
98
97
|
|
|
@@ -152,6 +151,27 @@ schema() {
|
|
|
152
151
|
}
|
|
153
152
|
```
|
|
154
153
|
|
|
154
|
+
You can also use VineJS(>= [v4](https://vinejs.dev/docs/json-schema-generation)) to define your schema:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
import vine from '@vinejs/vine'
|
|
158
|
+
|
|
159
|
+
const vineSchema = vine.object({
|
|
160
|
+
page: vine.number().meta({
|
|
161
|
+
description: 'page number for pagination',
|
|
162
|
+
}),
|
|
163
|
+
perPage: vine.number().optional().meta({
|
|
164
|
+
description: 'per page limit for pagination',
|
|
165
|
+
})
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
schema() {
|
|
169
|
+
return vine.create(
|
|
170
|
+
vineSchema
|
|
171
|
+
).toJSONSchema() as Schema
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
155
175
|
### Handler Implementation
|
|
156
176
|
|
|
157
177
|
The `handle` method contains your tool's logic. It receives a typed context with validated arguments:
|
package/build/configure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAG9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAG9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,iBA4BjD"}
|
package/build/configure.js
CHANGED
|
@@ -18,11 +18,15 @@ export async function configure(command) {
|
|
|
18
18
|
await codemods.registerMiddleware('router', [
|
|
19
19
|
{ path: '#middleware/mcp_middleware', position: 'after' },
|
|
20
20
|
]);
|
|
21
|
+
const useVine = await command.prompt.toggle('Is Vinejs used for validation?', ['Yes', 'No']);
|
|
21
22
|
/**
|
|
22
23
|
* Register provider
|
|
23
24
|
*/
|
|
24
25
|
await codemods.updateRcFile((rcFile) => {
|
|
25
|
-
rcFile.addProvider('@jrmc/adonis-mcp/mcp_provider');
|
|
26
26
|
rcFile.addCommand('@jrmc/adonis-mcp/commands');
|
|
27
|
+
rcFile.addProvider('@jrmc/adonis-mcp/mcp_provider');
|
|
28
|
+
if (useVine) {
|
|
29
|
+
rcFile.addProvider('@jrmc/adonis-mcp/vinejs_provider');
|
|
30
|
+
}
|
|
27
31
|
});
|
|
28
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp_provider.d.ts","sourceRoot":"","sources":["../../providers/mcp_provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"mcp_provider.d.ts","sourceRoot":"","sources":["../../providers/mcp_provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAMrD,OAAO,SAAS,MAAM,kBAAkB,CAAA;AAExC,MAAM,CAAC,OAAO,OAAO,WAAW;IAClB,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IAQF,KAAK;IAeL,aAAa;IAIb,iBAAiB;IAIjB,eAAe;IAIf,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ;CA6C3D;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,MAAM;QACd,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,UAAU,CAAA;KACtC;CACF;AAED,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,iBAAiB;QACzB,UAAU,EAAE,SAAS,CAAA;KACtB;CACF"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { fsReadAll } from '@adonisjs/core/helpers';
|
|
8
8
|
import string from '@adonisjs/core/helpers/string';
|
|
9
|
+
import { UriTemplate } from '../src/utils/uri_template.js';
|
|
9
10
|
import McpServer from '../src/server.js';
|
|
10
11
|
export default class McpProvider {
|
|
11
12
|
app;
|
|
@@ -50,20 +51,28 @@ export default class McpProvider {
|
|
|
50
51
|
const path = this.app.makePath(mcpPath, file);
|
|
51
52
|
const { default: Method } = await import(path);
|
|
52
53
|
const instance = new Method();
|
|
54
|
+
const entry = { path, json: instance.toJson() };
|
|
53
55
|
switch (type) {
|
|
54
56
|
case 'tool':
|
|
55
57
|
server.addTool({
|
|
56
|
-
[instance.name]:
|
|
58
|
+
[instance.name]: entry,
|
|
57
59
|
});
|
|
58
60
|
break;
|
|
59
61
|
case 'resource':
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
if (UriTemplate.isTemplate(instance.uri)) {
|
|
63
|
+
server.addResourceTemplate({
|
|
64
|
+
[instance.uri]: entry,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
server.addResource({
|
|
69
|
+
[instance.uri]: entry,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
63
72
|
break;
|
|
64
73
|
case 'prompt':
|
|
65
74
|
server.addPrompt({
|
|
66
|
-
[instance.name]:
|
|
75
|
+
[instance.name]: entry,
|
|
67
76
|
});
|
|
68
77
|
break;
|
|
69
78
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RequestValidator } from '../src/server/requests/request_validator.js';
|
|
2
|
+
export default class VineJSServiceProvider {
|
|
3
|
+
boot(): void;
|
|
4
|
+
}
|
|
5
|
+
declare module '../src/types/request.js' {
|
|
6
|
+
interface McpResourceRequest extends RequestValidator {
|
|
7
|
+
}
|
|
8
|
+
interface McpToolRequest extends RequestValidator {
|
|
9
|
+
}
|
|
10
|
+
interface McpPromptRequest extends RequestValidator {
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=vinejs_provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vinejs_provider.d.ts","sourceRoot":"","sources":["../../providers/vinejs_provider.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAA;AAE9E,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACxC,IAAI;CAQL;AAED,OAAO,QAAQ,yBAAyB,CAAC;IACvC,UAAU,kBAAmB,SAAQ,gBAAgB;KAAG;IACxD,UAAU,cAAe,SAAQ,gBAAgB;KAAG;IACpD,UAAU,gBAAiB,SAAQ,gBAAgB;KAAG;CACvD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import McpRequest from '../src/request.js';
|
|
2
|
+
import { RequestValidator } from '../src/server/requests/request_validator.js';
|
|
3
|
+
export default class VineJSServiceProvider {
|
|
4
|
+
boot() {
|
|
5
|
+
;
|
|
6
|
+
McpRequest.macro('validateUsing', function (validator, options) {
|
|
7
|
+
return new RequestValidator(this.ctx).validateUsing(validator, options);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
}
|
package/build/src/request.d.ts
CHANGED
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
7
|
import type { JsonRpcRequest } from './types/jsonrpc.js';
|
|
8
|
-
|
|
8
|
+
import type { Request } from './server/contracts/request.js';
|
|
9
|
+
import type { Context } from './server/contracts/context.js';
|
|
10
|
+
import Macroable from '@poppinss/macroable';
|
|
11
|
+
export default class McpRequest extends Macroable implements Request {
|
|
12
|
+
ctx: Context;
|
|
9
13
|
jsonrpc: '2.0';
|
|
10
14
|
id: string | number;
|
|
11
15
|
method: string;
|
|
@@ -13,6 +17,6 @@ export default class Request implements JsonRpcRequest {
|
|
|
13
17
|
cursor?: string;
|
|
14
18
|
[key: string]: unknown;
|
|
15
19
|
};
|
|
16
|
-
constructor(request: JsonRpcRequest);
|
|
20
|
+
constructor(ctx: Context, request: JsonRpcRequest);
|
|
17
21
|
}
|
|
18
22
|
//# sourceMappingURL=request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAE5D,OAAO,SAAS,MAAM,qBAAqB,CAAA;AAE3C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,SAAU,YAAW,OAAO;IAClE,GAAG,EAAE,OAAO,CAAA;IACZ,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;gBAEW,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc;CAQlD"}
|
package/build/src/request.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import Macroable from '@poppinss/macroable';
|
|
2
|
+
export default class McpRequest extends Macroable {
|
|
3
|
+
ctx;
|
|
2
4
|
jsonrpc;
|
|
3
5
|
id;
|
|
4
6
|
method;
|
|
5
7
|
params;
|
|
6
|
-
constructor(request) {
|
|
8
|
+
constructor(ctx, request) {
|
|
9
|
+
super();
|
|
10
|
+
this.ctx = ctx;
|
|
7
11
|
this.jsonrpc = request.jsonrpc;
|
|
8
12
|
this.id = request.id;
|
|
9
13
|
this.method = request.method;
|
package/build/src/response.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export default class<T extends McpRequestType = McpRequestType> implements Respo
|
|
|
26
26
|
structured(object: Record<string, unknown>): Structured;
|
|
27
27
|
resourceLink(uri: string): ResourceLink;
|
|
28
28
|
embeddedResource(uri: string): EmbeddedResource;
|
|
29
|
-
error(message
|
|
29
|
+
error(message?: string): Error;
|
|
30
30
|
complete(completion: Completion): Completion;
|
|
31
31
|
static toJsonRpc({ id, result, error }: Omit<JsonRpcResponse, 'jsonrpc'>): JsonRpcResponse;
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,IAAI,MAAM,2BAA2B,CAAA;AAC5C,OAAO,IAAI,MAAM,2BAA2B,CAAA;AAC5C,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAC9C,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAC9C,OAAO,UAAU,MAAM,iCAAiC,CAAA;AACxD,OAAO,YAAY,MAAM,oCAAoC,CAAA;AAC7D,OAAO,gBAAgB,MAAM,wCAAwC,CAAA;AACrE,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,YAAW,QAAQ;IACjF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;gBAEJ,cAAc,EAAE,cAAc;IAc1C,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIpC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIpC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1C,YAAY,CAAC,GAAG,EAAE,MAAM;IAIxB,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,IAAI,MAAM,2BAA2B,CAAA;AAC5C,OAAO,IAAI,MAAM,2BAA2B,CAAA;AAC5C,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAC9C,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAC9C,OAAO,UAAU,MAAM,iCAAiC,CAAA;AACxD,OAAO,YAAY,MAAM,oCAAoC,CAAA;AAC7D,OAAO,gBAAgB,MAAM,wCAAwC,CAAA;AACrE,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,YAAW,QAAQ;IACjF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;gBAEJ,cAAc,EAAE,cAAc;IAc1C,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIpC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIpC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1C,YAAY,CAAC,GAAG,EAAE,MAAM;IAIxB,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAI5B,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM;IAItB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAI/B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,eAAe;CAQ3F"}
|
package/build/src/response.js
CHANGED
|
@@ -21,7 +21,7 @@ export default class {
|
|
|
21
21
|
else if (jsonRpcRequest.method === 'prompts/get') {
|
|
22
22
|
this.type = 'prompts/get';
|
|
23
23
|
}
|
|
24
|
-
else if (jsonRpcRequest.method === '
|
|
24
|
+
else if (jsonRpcRequest.method === 'tools/call') {
|
|
25
25
|
this.type = 'tools/call';
|
|
26
26
|
}
|
|
27
27
|
else if (jsonRpcRequest.method === 'completion/complete') {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolAnnotations } from '../../types/jsonrpc.js';
|
|
8
|
-
export declare function isDestructive(destructive?:
|
|
8
|
+
export declare function isDestructive(destructive?: boolean): <T extends {
|
|
9
9
|
new (...args: any[]): {
|
|
10
10
|
annotations?: ToolAnnotations;
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is_destructive.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_destructive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,aAAa,CAAC,WAAW,GAAE,
|
|
1
|
+
{"version":3,"file":"is_destructive.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_destructive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,aAAa,CAAC,WAAW,GAAE,OAAc,IACtC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,CAAA;CAAE,EACpF,aAAa,CAAC;kBAGS,GAAG,EAAE;sBAJqC,eAAe;;MAmBnF"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolAnnotations } from '../../types/jsonrpc.js';
|
|
8
|
-
export declare function isIdempotent(idempotent?:
|
|
8
|
+
export declare function isIdempotent(idempotent?: boolean): <T extends {
|
|
9
9
|
new (...args: any[]): {
|
|
10
10
|
annotations?: ToolAnnotations;
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is_idempotent.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_idempotent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,YAAY,CAAC,UAAU,GAAE,
|
|
1
|
+
{"version":3,"file":"is_idempotent.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_idempotent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,YAAY,CAAC,UAAU,GAAE,OAAc,IACpC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,CAAA;CAAE,EACpF,aAAa,CAAC;kBAGS,GAAG,EAAE;sBAJqC,eAAe;;MAmBnF"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolAnnotations } from '../../types/jsonrpc.js';
|
|
8
|
-
export declare function isOpenWorld(openWorld?:
|
|
8
|
+
export declare function isOpenWorld(openWorld?: boolean): <T extends {
|
|
9
9
|
new (...args: any[]): {
|
|
10
10
|
annotations?: ToolAnnotations;
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is_open_world.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_open_world.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,WAAW,CAAC,SAAS,GAAE,
|
|
1
|
+
{"version":3,"file":"is_open_world.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_open_world.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,WAAW,CAAC,SAAS,GAAE,OAAc,IAClC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,CAAA;CAAE,EACpF,aAAa,CAAC;kBAGS,GAAG,EAAE;sBAJqC,eAAe;;MAmBnF"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolAnnotations } from '../../types/jsonrpc.js';
|
|
8
|
-
export declare function isReadOnly(readonly?:
|
|
8
|
+
export declare function isReadOnly(readonly?: boolean): <T extends {
|
|
9
9
|
new (...args: any[]): {
|
|
10
10
|
annotations?: ToolAnnotations;
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is_read_only.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_read_only.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,UAAU,CAAC,QAAQ,GAAE,
|
|
1
|
+
{"version":3,"file":"is_read_only.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_read_only.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,UAAU,CAAC,QAAQ,GAAE,OAAc,IAChC,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,CAAA;CAAE,EACpF,aAAa,CAAC;kBAGS,GAAG,EAAE;sBAJqC,eAAe;;MAmBnF"}
|
|
@@ -6,9 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Content } from '../contracts/content.js';
|
|
8
8
|
import type { Prompt } from '../prompt.js';
|
|
9
|
+
import type { Tool } from '../tool.js';
|
|
9
10
|
import type { Resource } from '../resource.js';
|
|
11
|
+
import type { TextContent } from '../../types/jsonrpc.js';
|
|
10
12
|
import Text from './text.js';
|
|
11
13
|
export default class Error extends Text implements Content {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(text?: string);
|
|
16
|
+
toTool(tool: Tool): Promise<TextContent>;
|
|
12
17
|
toPrompt(_prompt: Prompt): never;
|
|
13
18
|
toResource(_resource: Resource): never;
|
|
14
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../src/server/contents/error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,IAAK,YAAW,OAAO;
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../src/server/contents/error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,IAAK,YAAW,OAAO;;gBAG5C,IAAI,CAAC,EAAE,MAAM;IAKnB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IAK9C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAIhC,UAAU,CAAC,SAAS,EAAE,QAAQ,GAAG,KAAK;CAGvC"}
|
|
@@ -7,10 +7,19 @@
|
|
|
7
7
|
import Text from './text.js';
|
|
8
8
|
import { createError } from '@adonisjs/core/exceptions';
|
|
9
9
|
export default class Error extends Text {
|
|
10
|
+
#text;
|
|
11
|
+
constructor(text) {
|
|
12
|
+
super(text);
|
|
13
|
+
this.#text = text;
|
|
14
|
+
}
|
|
15
|
+
async toTool(tool) {
|
|
16
|
+
this.#text = this.#text || 'An error occurred';
|
|
17
|
+
return super.toTool(tool);
|
|
18
|
+
}
|
|
10
19
|
toPrompt(_prompt) {
|
|
11
20
|
throw createError('Error content may not be used in prompts.', 'E_ERROR_NOT_SUPPORTED');
|
|
12
21
|
}
|
|
13
22
|
toResource(_resource) {
|
|
14
|
-
throw createError(
|
|
23
|
+
throw createError(this.#text || 'Resource not found', 'E_ERROR_NOT_FOUND');
|
|
15
24
|
}
|
|
16
25
|
}
|
|
@@ -10,7 +10,6 @@ import type { ServerContextOptions } from '../types/context.js';
|
|
|
10
10
|
import type { ToolList, ResourceList, PromptList } from '../types/method.js';
|
|
11
11
|
import type { McpRequest, McpRequestType } from '../types/request.js';
|
|
12
12
|
export default class ServerContext implements Context {
|
|
13
|
-
#private;
|
|
14
13
|
readonly requestMethod: McpRequestType;
|
|
15
14
|
supportedProtocolVersions: string[];
|
|
16
15
|
serverCapabilities: Record<string, any>;
|
|
@@ -21,12 +20,11 @@ export default class ServerContext implements Context {
|
|
|
21
20
|
defaultPaginationLength: number;
|
|
22
21
|
tools: ToolList;
|
|
23
22
|
resources: ResourceList;
|
|
23
|
+
resourceTemplates: ResourceList;
|
|
24
24
|
prompts: PromptList;
|
|
25
25
|
request: McpRequest<this['requestMethod']>;
|
|
26
26
|
response: McpResponse<this['requestMethod']>;
|
|
27
27
|
constructor(options: ServerContextOptions);
|
|
28
28
|
getPerPage(requestedPerPage?: number): number;
|
|
29
|
-
getResources(): Promise<ResourceList>;
|
|
30
|
-
getResourceTemplates(): Promise<ResourceList>;
|
|
31
29
|
}
|
|
32
30
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/server/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAKrE,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,OAAO;IACnD,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAA;IAEtC,yBAAyB,EAAE,MAAM,EAAE,CAAA;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAA;IACf,SAAS,EAAE,YAAY,CAAA;IACvB,iBAAiB,EAAE,YAAY,CAAA;IAC/B,OAAO,EAAE,UAAU,CAAA;IACnB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IAC1C,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;gBAEhC,OAAO,EAAE,oBAAoB;IAuBzC,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;CAG9C"}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import Request from '../request.js';
|
|
8
8
|
import Response from '../response.js';
|
|
9
|
-
import { UriTemplate } from '../utils/uri_template.js';
|
|
10
9
|
export default class ServerContext {
|
|
11
10
|
requestMethod;
|
|
12
11
|
supportedProtocolVersions;
|
|
@@ -18,6 +17,7 @@ export default class ServerContext {
|
|
|
18
17
|
defaultPaginationLength;
|
|
19
18
|
tools;
|
|
20
19
|
resources;
|
|
20
|
+
resourceTemplates;
|
|
21
21
|
prompts;
|
|
22
22
|
request;
|
|
23
23
|
response;
|
|
@@ -32,30 +32,12 @@ export default class ServerContext {
|
|
|
32
32
|
this.defaultPaginationLength = options.defaultPaginationLength;
|
|
33
33
|
this.tools = options.tools;
|
|
34
34
|
this.resources = options.resources;
|
|
35
|
+
this.resourceTemplates = options.resourceTemplates;
|
|
35
36
|
this.prompts = options.prompts;
|
|
36
|
-
this.request = new Request(options.jsonRpcRequest);
|
|
37
|
+
this.request = new Request(this, options.jsonRpcRequest);
|
|
37
38
|
this.response = new Response(options.jsonRpcRequest);
|
|
38
39
|
}
|
|
39
40
|
getPerPage(requestedPerPage) {
|
|
40
41
|
return Math.min(requestedPerPage ?? this.defaultPaginationLength, this.maxPaginationLength);
|
|
41
42
|
}
|
|
42
|
-
async getResources() {
|
|
43
|
-
return this.#filterResources({ includeTemplates: false });
|
|
44
|
-
}
|
|
45
|
-
async getResourceTemplates() {
|
|
46
|
-
return this.#filterResources({ includeTemplates: true });
|
|
47
|
-
}
|
|
48
|
-
async #filterResources({ includeTemplates, }) {
|
|
49
|
-
const resourceEntries = Object.entries(this.resources);
|
|
50
|
-
const filteredEntries = await Promise.all(resourceEntries.map(async ([key, resource]) => {
|
|
51
|
-
const { default: Resource } = await import(resource);
|
|
52
|
-
const resourceInstance = new Resource();
|
|
53
|
-
const isTemplate = this.#isResourceTemplate(resourceInstance);
|
|
54
|
-
return (includeTemplates ? isTemplate : !isTemplate) ? [key, resource] : null;
|
|
55
|
-
}));
|
|
56
|
-
return Object.fromEntries(filteredEntries.filter((entry) => entry !== null));
|
|
57
|
-
}
|
|
58
|
-
#isResourceTemplate(resource) {
|
|
59
|
-
return UriTemplate.isTemplate(resource.uri);
|
|
60
|
-
}
|
|
61
43
|
}
|
|
@@ -8,6 +8,7 @@ import type { ToolList, ResourceList, PromptList } from '../../types/method.js';
|
|
|
8
8
|
import type { McpRequest, McpRequestType } from '../../types/request.js';
|
|
9
9
|
import type { McpResponse } from '../../types/response.js';
|
|
10
10
|
export interface Context {
|
|
11
|
+
args?: Record<string, unknown>;
|
|
11
12
|
requestMethod: McpRequestType;
|
|
12
13
|
supportedProtocolVersions: string[];
|
|
13
14
|
serverCapabilities: Record<string, any>;
|
|
@@ -18,12 +19,10 @@ export interface Context {
|
|
|
18
19
|
defaultPaginationLength: number;
|
|
19
20
|
tools: ToolList;
|
|
20
21
|
resources: ResourceList;
|
|
21
|
-
resourceTemplates
|
|
22
|
+
resourceTemplates: ResourceList;
|
|
22
23
|
prompts: PromptList;
|
|
23
24
|
request: McpRequest<this['requestMethod']>;
|
|
24
25
|
response: McpResponse<this['requestMethod']>;
|
|
25
26
|
getPerPage(requestedPerPage?: number): number;
|
|
26
|
-
getResources(): Promise<ResourceList>;
|
|
27
|
-
getResourceTemplates(): Promise<ResourceList>;
|
|
28
27
|
}
|
|
29
28
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/server/contracts/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,MAAM,WAAW,OAAO;IACtB,aAAa,EAAE,cAAc,CAAA;IAE7B,yBAAyB,EAAE,MAAM,EAAE,CAAA;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAA;IACf,SAAS,EAAE,YAAY,CAAA;IACvB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/server/contracts/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE9B,aAAa,EAAE,cAAc,CAAA;IAE7B,yBAAyB,EAAE,MAAM,EAAE,CAAA;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAA;IACf,SAAS,EAAE,YAAY,CAAA;IACvB,iBAAiB,EAAE,YAAY,CAAA;IAC/B,OAAO,EAAE,UAAU,CAAA;IACnB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IAC1C,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IAE5C,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC9C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Context } from './context.js';
|
|
2
|
+
export interface Request {
|
|
3
|
+
ctx: Context;
|
|
4
|
+
jsonrpc: '2.0';
|
|
5
|
+
id: string | number;
|
|
6
|
+
method: string;
|
|
7
|
+
params?: {
|
|
8
|
+
cursor?: string;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../../src/server/contracts/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,OAAO,CAAA;IACZ,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -19,7 +19,7 @@ export interface Response<T extends McpRequestType = McpRequestType> {
|
|
|
19
19
|
structured(object: Record<string, unknown>): Structured;
|
|
20
20
|
resourceLink(uri: string): ResourceLinkContent;
|
|
21
21
|
embeddedResource(uri: string): EmbeddedResourceContent;
|
|
22
|
-
error(message
|
|
22
|
+
error(message?: string): Error;
|
|
23
23
|
complete(completion: Completion): Completion;
|
|
24
24
|
}
|
|
25
25
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/server/contracts/response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,KAAK,EACL,WAAW,EACX,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAK,EACL,YAAY,IAAI,mBAAmB,EACnC,gBAAgB,IAAI,uBAAuB,EAC5C,MAAM,wBAAwB,CAAA;AAE/B,KAAK,gBAAgB,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,aAAa,GAAG,UAAU,GAAG,IAAI,CAAA;AAC7F,KAAK,iBAAiB,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,aAAa,GAAG,WAAW,GAAG,KAAK,CAAA;AAChG,KAAK,iBAAiB,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,aAAa,GAAG,WAAW,GAAG,KAAK,CAAA;AAEhG,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACjE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;IAC5F,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;IAC5F,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAA;IACvD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;IAC9C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAA;IACtD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/server/contracts/response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,KAAK,EACL,WAAW,EACX,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAK,EACL,YAAY,IAAI,mBAAmB,EACnC,gBAAgB,IAAI,uBAAuB,EAC5C,MAAM,wBAAwB,CAAA;AAE/B,KAAK,gBAAgB,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,aAAa,GAAG,UAAU,GAAG,IAAI,CAAA;AAC7F,KAAK,iBAAiB,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,aAAa,GAAG,WAAW,GAAG,KAAK,CAAA;AAChG,KAAK,iBAAiB,CAAC,CAAC,SAAS,cAAc,IAAI,CAAC,SAAS,aAAa,GAAG,WAAW,GAAG,KAAK,CAAA;AAEhG,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACjE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;IAC5F,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;IAC5F,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAA;IACvD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;IAC9C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAA;IACtD,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAA;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonrpc_error.d.ts","sourceRoot":"","sources":["../../../../src/server/exceptions/jsonrpc_error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,sBAAsB,CAAA;AAExC,MAAM,CAAC,OAAO,OAAO,YAAY;;gBAGnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAI9C,iBAAiB,IAAI,KAAK,EAAE;CAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call_tool.d.ts","sourceRoot":"","sources":["../../../../src/server/methods/call_tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,wBAAwB,CAAA;AAa1E,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,MAAM;IACvC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,oDAAqB;
|
|
1
|
+
{"version":3,"file":"call_tool.d.ts","sourceRoot":"","sources":["../../../../src/server/methods/call_tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,wBAAwB,CAAA;AAa1E,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,MAAM;IACvC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,oDAAqB;CA6ExD"}
|
|
@@ -18,13 +18,13 @@ export default class CallTool {
|
|
|
18
18
|
if (!params?.name) {
|
|
19
19
|
throw new JsonRpcException(`The tool name is required.`, ErrorCode.InvalidParams, ctx.request.id);
|
|
20
20
|
}
|
|
21
|
-
const
|
|
22
|
-
if (!
|
|
21
|
+
const entry = ctx.tools[params.name];
|
|
22
|
+
if (!entry) {
|
|
23
23
|
throw new JsonRpcException(`The tool ${params.name} was not found.`, ErrorCode.InvalidParams, ctx.request.id);
|
|
24
24
|
}
|
|
25
25
|
let Tool;
|
|
26
26
|
try {
|
|
27
|
-
const module = await import(
|
|
27
|
+
const module = await import(entry.path);
|
|
28
28
|
Tool = module.default;
|
|
29
29
|
}
|
|
30
30
|
catch (error) {
|
|
@@ -33,7 +33,16 @@ export default class CallTool {
|
|
|
33
33
|
;
|
|
34
34
|
ctx.args = params.arguments ?? {};
|
|
35
35
|
const tool = await app.container.make(Tool);
|
|
36
|
-
|
|
36
|
+
let contents;
|
|
37
|
+
try {
|
|
38
|
+
contents = await app.container.call(tool, 'handle', [ctx]);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof JsonRpcException) {
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
contents = error;
|
|
45
|
+
}
|
|
37
46
|
let data;
|
|
38
47
|
if (!Array.isArray(contents)) {
|
|
39
48
|
data = [contents];
|
|
@@ -17,20 +17,20 @@ export default class Completion {
|
|
|
17
17
|
const argument = params.argument;
|
|
18
18
|
const context = params.context;
|
|
19
19
|
const ref = params.ref;
|
|
20
|
-
let
|
|
20
|
+
let entry = null;
|
|
21
21
|
let key = null;
|
|
22
22
|
if (ref && ref.type === 'ref/prompt') {
|
|
23
23
|
key = ref.name;
|
|
24
|
-
|
|
24
|
+
entry = ctx.prompts[key];
|
|
25
25
|
}
|
|
26
26
|
else if (ref && ref.type === 'ref/resource') {
|
|
27
27
|
key = ref.uri;
|
|
28
|
-
|
|
28
|
+
entry = ctx.resources[key] ?? ctx.resourceTemplates[key];
|
|
29
29
|
}
|
|
30
|
-
if (!
|
|
30
|
+
if (!entry) {
|
|
31
31
|
throw new JsonRpcException(`${key} was not found.`, ErrorCode.InvalidParams, ctx.request.id);
|
|
32
32
|
}
|
|
33
|
-
const { default: Model } = await import(path);
|
|
33
|
+
const { default: Model } = await import(entry.path);
|
|
34
34
|
const entity = await app.container.make(Model);
|
|
35
35
|
let args = {};
|
|
36
36
|
if (context?.arguments) {
|
|
@@ -18,11 +18,11 @@ export default class GetPrompt {
|
|
|
18
18
|
if (!params?.name) {
|
|
19
19
|
throw new JsonRpcException(`The prompt name is required.`, ErrorCode.InvalidParams, ctx.request.id);
|
|
20
20
|
}
|
|
21
|
-
const
|
|
22
|
-
if (!
|
|
21
|
+
const entry = ctx.prompts[params.name];
|
|
22
|
+
if (!entry) {
|
|
23
23
|
throw new JsonRpcException(`The prompt ${params.name} was not found.`, ErrorCode.InvalidParams, ctx.request.id);
|
|
24
24
|
}
|
|
25
|
-
const { default: Prompt } = await import(
|
|
25
|
+
const { default: Prompt } = await import(entry.path);
|
|
26
26
|
ctx.args = params.arguments ?? {};
|
|
27
27
|
const prompt = await app.container.make(Prompt);
|
|
28
28
|
const contents = await app.container.call(prompt, 'handle', [ctx]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list_prompts.d.ts","sourceRoot":"","sources":["../../../../src/server/methods/list_prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"list_prompts.d.ts","sourceRoot":"","sources":["../../../../src/server/methods/list_prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,uBAAuB,CAAA;AAKrE,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,MAAM;IAC1C,MAAM,CAAC,GAAG,EAAE,UAAU;CAqB7B"}
|