@jrmc/adonis-mcp 1.0.0-beta.1 → 1.0.0-beta.10
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 +33 -13
- package/build/commands/commands.json +1 -1
- package/build/commands/inspector.d.ts +1 -0
- package/build/commands/inspector.d.ts.map +1 -1
- package/build/commands/inspector.js +1 -0
- package/build/commands/make/prompt.d.ts.map +1 -1
- package/build/commands/make/prompt.js +4 -1
- package/build/commands/make/tool.d.ts.map +1 -1
- package/build/commands/make/tool.js +4 -1
- package/build/configure.d.ts.map +1 -1
- package/build/configure.js +17 -3
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/providers/mcp_provider.d.ts.map +1 -1
- package/build/providers/mcp_provider.js +16 -6
- 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.d.ts +2 -1
- package/build/src/server/contents/embedded_resource.d.ts.map +1 -1
- package/build/src/server/contents/embedded_resource.js +6 -2
- 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.d.ts +2 -1
- package/build/src/server/contents/resource_link.d.ts.map +1 -1
- package/build/src/server/contents/resource_link.js +6 -2
- 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/mcp_bouncer.d.ts +115 -0
- package/build/src/server/mcp_bouncer.d.ts.map +1 -0
- package/build/src/server/mcp_bouncer.js +123 -0
- package/build/src/server/methods/call_tool.d.ts +1 -1
- package/build/src/server/methods/call_tool.d.ts.map +1 -1
- package/build/src/server/methods/call_tool.js +16 -6
- package/build/src/server/methods/completion.d.ts +1 -1
- package/build/src/server/methods/completion.d.ts.map +1 -1
- package/build/src/server/methods/completion.js +9 -8
- package/build/src/server/methods/get_prompt.d.ts +1 -1
- package/build/src/server/methods/get_prompt.d.ts.map +1 -1
- package/build/src/server/methods/get_prompt.js +7 -6
- 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 +1 -1
- package/build/src/server/methods/read_resource.d.ts.map +1 -1
- package/build/src/server/methods/read_resource.js +15 -6
- 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 +3 -2
- package/build/src/server/prompt.d.ts.map +1 -1
- package/build/src/server/prompt.js +2 -2
- 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/resource.d.ts +2 -2
- package/build/src/server/resource.d.ts.map +1 -1
- package/build/src/server/resource.js +2 -2
- package/build/src/server/tool.d.ts +1 -1
- package/build/src/server/tool.d.ts.map +1 -1
- package/build/src/server/transports/http_transport.d.ts.map +1 -1
- package/build/src/server/transports/http_transport.js +4 -3
- package/build/src/server.d.ts +2 -0
- package/build/src/server.d.ts.map +1 -1
- package/build/src/server.js +9 -3
- 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 +22 -12
- 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.d.ts +3 -1
- package/build/src/utils/find_resource_pattern.d.ts.map +1 -1
- package/build/src/utils/find_resource_pattern.js +3 -3
- package/build/stubs/config.ts.stub +1 -0
- package/build/stubs/main.d.ts.map +1 -1
- package/build/stubs/main.js +1 -2
- package/build/stubs/make/mcp/prompts/main.ts.stub +2 -2
- package/build/stubs/make/mcp/prompts/with_vine.ts.stub +40 -0
- package/build/stubs/make/mcp/resources/main.ts.stub +1 -1
- package/build/stubs/make/mcp/tools/with_vine.ts.stub +37 -0
- package/build/stubs/make/middleware/mcp_middleware.ts.stub +18 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +21 -8
package/README.md
CHANGED
|
@@ -26,17 +26,17 @@ AdonisJS MCP - Server MCP for your AdonisJS applications.
|
|
|
26
26
|
- [x] Inspector
|
|
27
27
|
- [x] Session
|
|
28
28
|
- [x] Documentation
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
32
|
-
- [
|
|
33
|
-
- [
|
|
34
|
-
- [
|
|
29
|
+
- [x] Inject support
|
|
30
|
+
- [x] VineJs integration
|
|
31
|
+
- [x] JSON Schema with VineJs
|
|
32
|
+
- [x] Bounce integration
|
|
33
|
+
- [x] Auth helpers
|
|
34
|
+
- [x] Starter kit
|
|
35
|
+
- [x] Demo applications
|
|
36
|
+
- [ ] Events
|
|
37
|
+
- [ ] Logger
|
|
35
38
|
- [ ] Alternative transports (SSE)
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ] Login flow
|
|
38
|
-
- [ ] Starter kit
|
|
39
|
-
- [ ] Demo applications
|
|
39
|
+
- [ ] Output tool
|
|
40
40
|
|
|
41
41
|
## Installation & Configuration
|
|
42
42
|
|
|
@@ -91,7 +91,6 @@ export default class MyToolTool extends Tool<Schema> {
|
|
|
91
91
|
description = 'Tool description'
|
|
92
92
|
|
|
93
93
|
async handle({ args, response }: ToolContext<Schema>) {
|
|
94
|
-
console.log(args.text)
|
|
95
94
|
return response.text('Hello, world!')
|
|
96
95
|
}
|
|
97
96
|
|
|
@@ -151,6 +150,27 @@ schema() {
|
|
|
151
150
|
}
|
|
152
151
|
```
|
|
153
152
|
|
|
153
|
+
You can also use VineJS(>= [v4](https://vinejs.dev/docs/json-schema-generation)) to define your schema:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import vine from '@vinejs/vine'
|
|
157
|
+
|
|
158
|
+
const vineSchema = vine.object({
|
|
159
|
+
page: vine.number().meta({
|
|
160
|
+
description: 'page number for pagination',
|
|
161
|
+
}),
|
|
162
|
+
perPage: vine.number().optional().meta({
|
|
163
|
+
description: 'per page limit for pagination',
|
|
164
|
+
})
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
schema() {
|
|
168
|
+
return vine.create(
|
|
169
|
+
vineSchema
|
|
170
|
+
).toJSONSchema() as Schema
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
154
174
|
### Handler Implementation
|
|
155
175
|
|
|
156
176
|
The `handle` method contains your tool's logic. It receives a typed context with validated arguments:
|
|
@@ -171,10 +191,10 @@ To use `auth` and `bouncer` in your MCP tools, prompts, and resources, add the f
|
|
|
171
191
|
```typescript
|
|
172
192
|
declare module '@jrmc/adonis-mcp/types/context' {
|
|
173
193
|
export interface McpContext {
|
|
174
|
-
auth
|
|
194
|
+
auth: {
|
|
175
195
|
user?: HttpContext['auth']['user']
|
|
176
196
|
}
|
|
177
|
-
bouncer
|
|
197
|
+
bouncer: McpBouncer<
|
|
178
198
|
Exclude<HttpContext['auth']['user'], undefined>,
|
|
179
199
|
typeof abilities,
|
|
180
200
|
typeof policies
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"commands":[{"commandName":"mcp:inspector","description":"Open the MCP Inspector tool to debug and test MCP Servers.","help":"","namespace":"mcp","aliases":[],"flags":[],"args":[{"name":"transport","argumentName":"transport","required":true,"description":"Transport type","default":"http","type":"string"}],"options":{"startApp":true},"filePath":"inspector.js"},{"commandName":"make:mcp-prompt","description":"Create a new MCP prompt","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the prompt","type":"string"}],"options":{"startApp":true},"filePath":"make/prompt.js"},{"commandName":"make:mcp-resource","description":"Create a new MCP resource","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the resource","type":"string"}],"options":{"startApp":true},"filePath":"make/resource.js"},{"commandName":"make:mcp-tool","description":"Create a new MCP tool","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the tool","type":"string"}],"options":{"startApp":true},"filePath":"make/tool.js"},{"commandName":"mcp:start","description":"Start the MCP server stdio transport","help":"","namespace":"mcp","aliases":[],"flags":[],"args":[],"options":{"startApp":true},"filePath":"start.js"}],"version":1}
|
|
1
|
+
{"commands":[{"commandName":"mcp:inspector","description":"Open the MCP Inspector tool to debug and test MCP Servers.","help":"","namespace":"mcp","aliases":["mcp:inspect"],"flags":[],"args":[{"name":"transport","argumentName":"transport","required":true,"description":"Transport type","default":"http","type":"string"}],"options":{"startApp":true},"filePath":"inspector.js"},{"commandName":"make:mcp-prompt","description":"Create a new MCP prompt","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the prompt","type":"string"}],"options":{"startApp":true},"filePath":"make/prompt.js"},{"commandName":"make:mcp-resource","description":"Create a new MCP resource","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the resource","type":"string"}],"options":{"startApp":true},"filePath":"make/resource.js"},{"commandName":"make:mcp-tool","description":"Create a new MCP tool","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the tool","type":"string"}],"options":{"startApp":true},"filePath":"make/tool.js"},{"commandName":"mcp:start","description":"Start the MCP server stdio transport","help":"","namespace":"mcp","aliases":[],"flags":[],"args":[],"options":{"startApp":true},"filePath":"start.js"}],"version":1}
|
|
@@ -9,6 +9,7 @@ import { BaseCommand } from '@adonisjs/core/ace';
|
|
|
9
9
|
export default class Inspector extends BaseCommand {
|
|
10
10
|
static commandName: string;
|
|
11
11
|
static description: string;
|
|
12
|
+
static aliases: string[];
|
|
12
13
|
static options: CommandOptions;
|
|
13
14
|
transport: string;
|
|
14
15
|
run(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../commands/inspector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA+D;
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../commands/inspector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA+D;IACjF,MAAM,CAAC,OAAO,WAAkB;IAEhC,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,SAAS,EAAE,MAAM,CAAA;IAEnB,GAAG;CAoCV"}
|
|
@@ -15,6 +15,7 @@ import { args, BaseCommand } from '@adonisjs/core/ace';
|
|
|
15
15
|
export default class Inspector extends BaseCommand {
|
|
16
16
|
static commandName = 'mcp:inspector';
|
|
17
17
|
static description = 'Open the MCP Inspector tool to debug and test MCP Servers.';
|
|
18
|
+
static aliases = ['mcp:inspect'];
|
|
18
19
|
static options = {
|
|
19
20
|
startApp: true,
|
|
20
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../commands/make/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,SAAoB;IACtC,MAAM,CAAC,WAAW,SAA4B;IAE9C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../commands/make/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,SAAoB;IACtC,MAAM,CAAC,WAAW,SAA4B;IAE9C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;CAcV"}
|
|
@@ -21,7 +21,10 @@ export default class MakePrompt extends BaseCommand {
|
|
|
21
21
|
};
|
|
22
22
|
async run() {
|
|
23
23
|
const codemods = await this.createCodemods();
|
|
24
|
-
|
|
24
|
+
let stubPath = `make/mcp/prompts/main.ts.stub`;
|
|
25
|
+
if (this.app.usingVineJS) {
|
|
26
|
+
stubPath = `make/mcp/prompts/with_vine.ts.stub`;
|
|
27
|
+
}
|
|
25
28
|
await codemods.makeUsingStub(stubsRoot, stubPath, {
|
|
26
29
|
name: string.pascalCase(this.name),
|
|
27
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../commands/make/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../commands/make/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;CAcV"}
|
|
@@ -21,7 +21,10 @@ export default class MakeTool extends BaseCommand {
|
|
|
21
21
|
};
|
|
22
22
|
async run() {
|
|
23
23
|
const codemods = await this.createCodemods();
|
|
24
|
-
|
|
24
|
+
let stubPath = `make/mcp/tools/main.ts.stub`;
|
|
25
|
+
if (this.app.usingVineJS) {
|
|
26
|
+
stubPath = `make/mcp/tools/with_vine.ts.stub`;
|
|
27
|
+
}
|
|
25
28
|
await codemods.makeUsingStub(stubsRoot, stubPath, {
|
|
26
29
|
name: string.pascalCase(this.name),
|
|
27
30
|
});
|
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;
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAI9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,iBAsCjD"}
|
package/build/configure.js
CHANGED
|
@@ -4,9 +4,19 @@
|
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
|
|
6
6
|
*/
|
|
7
|
+
import { mkdir } from 'node:fs/promises';
|
|
7
8
|
import { stubsRoot } from './stubs/main.js';
|
|
8
9
|
export async function configure(command) {
|
|
9
10
|
const codemods = await command.createCodemods();
|
|
11
|
+
/**
|
|
12
|
+
* Create mcp directory if it doesn't exist
|
|
13
|
+
*/
|
|
14
|
+
const mcpDirectory = command.app.rcFile.directories['mcp'] || 'app/mcp/';
|
|
15
|
+
await Promise.all([
|
|
16
|
+
mkdir(command.app.makePath(mcpDirectory, 'tools'), { recursive: true }),
|
|
17
|
+
mkdir(command.app.makePath(mcpDirectory, 'resources'), { recursive: true }),
|
|
18
|
+
mkdir(command.app.makePath(mcpDirectory, 'prompts'), { recursive: true }),
|
|
19
|
+
]);
|
|
10
20
|
/**
|
|
11
21
|
* Create default config file
|
|
12
22
|
*/
|
|
@@ -15,14 +25,18 @@ export async function configure(command) {
|
|
|
15
25
|
* Create and configuredefault middleware file
|
|
16
26
|
*/
|
|
17
27
|
await codemods.makeUsingStub(stubsRoot, 'make/middleware/mcp_middleware.ts.stub', {});
|
|
18
|
-
await codemods.registerMiddleware('
|
|
19
|
-
{ path: '#middleware/mcp_middleware', position: 'after' },
|
|
28
|
+
await codemods.registerMiddleware('named', [
|
|
29
|
+
{ name: 'mcp', path: '#middleware/mcp_middleware', position: 'after' },
|
|
20
30
|
]);
|
|
31
|
+
const useVine = await command.prompt.toggle('Is Vinejs used for validation?', ['Yes', 'No']);
|
|
21
32
|
/**
|
|
22
33
|
* Register provider
|
|
23
34
|
*/
|
|
24
35
|
await codemods.updateRcFile((rcFile) => {
|
|
25
|
-
rcFile.addProvider('@jrmc/adonis-mcp/mcp_provider');
|
|
26
36
|
rcFile.addCommand('@jrmc/adonis-mcp/commands');
|
|
37
|
+
rcFile.addProvider('@jrmc/adonis-mcp/mcp_provider');
|
|
38
|
+
if (useVine) {
|
|
39
|
+
rcFile.addProvider('@jrmc/adonis-mcp/vinejs_provider');
|
|
40
|
+
}
|
|
27
41
|
});
|
|
28
42
|
}
|
package/build/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ export { Tool } from './src/server/tool.js';
|
|
|
3
3
|
export { Resource } from './src/server/resource.js';
|
|
4
4
|
export { Prompt } from './src/server/prompt.js';
|
|
5
5
|
export * as McpResponse from './src/response.js';
|
|
6
|
+
export { default as McpBouncer } from './src/server/mcp_bouncer.js';
|
|
6
7
|
export { defineConfig } from './src/define_config.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA"}
|
package/build/index.js
CHANGED
|
@@ -3,4 +3,5 @@ export { Tool } from './src/server/tool.js';
|
|
|
3
3
|
export { Resource } from './src/server/resource.js';
|
|
4
4
|
export { Prompt } from './src/server/prompt.js';
|
|
5
5
|
export * as McpResponse from './src/response.js';
|
|
6
|
+
export { default as McpBouncer } from './src/server/mcp_bouncer.js';
|
|
6
7
|
export { defineConfig } from './src/define_config.js';
|
|
@@ -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;
|
|
@@ -43,26 +44,35 @@ export default class McpProvider {
|
|
|
43
44
|
const server = await this.app.container.make('jrmc.mcp');
|
|
44
45
|
const mcpPath = this.app.makePath(this.app.rcFile.directories['mcp'] || 'app/mcp/', `${string.plural(type)}/`);
|
|
45
46
|
const files = await fsReadAll(mcpPath, {
|
|
46
|
-
filter: (filePath) => filePath.
|
|
47
|
+
filter: (filePath) => !filePath.endsWith('.map') &&
|
|
48
|
+
(filePath.includes(`_${type}.ts`) || filePath.includes(`_${type}.js`)),
|
|
47
49
|
});
|
|
48
50
|
await Promise.all(files.map(async (file) => {
|
|
49
51
|
const path = this.app.makePath(mcpPath, file);
|
|
50
52
|
const { default: Method } = await import(path);
|
|
51
53
|
const instance = new Method();
|
|
54
|
+
const entry = { path, json: instance.toJson() };
|
|
52
55
|
switch (type) {
|
|
53
56
|
case 'tool':
|
|
54
57
|
server.addTool({
|
|
55
|
-
[instance.name]:
|
|
58
|
+
[instance.name]: entry,
|
|
56
59
|
});
|
|
57
60
|
break;
|
|
58
61
|
case 'resource':
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
+
}
|
|
62
72
|
break;
|
|
63
73
|
case 'prompt':
|
|
64
74
|
server.addPrompt({
|
|
65
|
-
[instance.name]:
|
|
75
|
+
[instance.name]: entry,
|
|
66
76
|
});
|
|
67
77
|
break;
|
|
68
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"}
|
|
@@ -12,7 +12,8 @@ import type { Resource } from '../resource.js';
|
|
|
12
12
|
import type { ResourceContext } from '../../types/context.js';
|
|
13
13
|
export default class EmbeddedResource implements Content {
|
|
14
14
|
#private;
|
|
15
|
-
|
|
15
|
+
private app;
|
|
16
|
+
constructor(uri: string, app?: import("@adonisjs/core/types").ApplicationService);
|
|
16
17
|
preProcess(ctx: ResourceContext): Promise<this>;
|
|
17
18
|
toTool(_tool: Tool): Promise<EmbeddedResourceContent>;
|
|
18
19
|
toPrompt(_prompt: Prompt): Promise<EmbeddedResourceContent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedded_resource.d.ts","sourceRoot":"","sources":["../../../../src/server/contents/embedded_resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACzF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"embedded_resource.d.ts","sourceRoot":"","sources":["../../../../src/server/contents/embedded_resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACzF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAO7D,MAAM,CAAC,OAAO,OAAO,gBAAiB,YAAW,OAAO;;IAUpD,OAAO,CAAC,GAAG;gBADX,GAAG,EAAE,MAAM,EACH,GAAG,oDAAqB;IAM5B,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAYrD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY3D,UAAU,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAOrD,WAAW,IAAI,IAAI;IAKnB,MAAM,IAAI,IAAI;IAKd,IAAI,IAAI,yBAEP;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAY9C"}
|
|
@@ -6,21 +6,25 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { createError } from '@adonisjs/core/exceptions';
|
|
8
8
|
import { findResource } from '../../utils/find_resource_pattern.js';
|
|
9
|
+
import applicationService from '@adonisjs/core/services/app';
|
|
9
10
|
export default class EmbeddedResource {
|
|
11
|
+
app;
|
|
10
12
|
#uri;
|
|
11
13
|
#resource;
|
|
12
14
|
#role;
|
|
13
15
|
#meta;
|
|
14
16
|
#ctx;
|
|
15
|
-
constructor(uri) {
|
|
17
|
+
constructor(uri, app = applicationService) {
|
|
18
|
+
this.app = app;
|
|
16
19
|
this.#uri = uri;
|
|
17
20
|
this.#role = 'user';
|
|
18
21
|
}
|
|
19
22
|
async preProcess(ctx) {
|
|
20
23
|
this.#ctx = ctx;
|
|
21
24
|
this.#resource = await findResource({
|
|
25
|
+
app: this.app,
|
|
22
26
|
uri: this.#uri,
|
|
23
|
-
resourceList: ctx.resources,
|
|
27
|
+
resourceList: { ...ctx.resources, ...ctx.resourceTemplates },
|
|
24
28
|
ctx,
|
|
25
29
|
});
|
|
26
30
|
return this;
|
|
@@ -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
|
}
|
|
@@ -12,7 +12,8 @@ import type { Resource } from '../resource.js';
|
|
|
12
12
|
import type { ResourceContext } from '../../types/context.js';
|
|
13
13
|
export default class ResourceLink implements Content {
|
|
14
14
|
#private;
|
|
15
|
-
|
|
15
|
+
private app;
|
|
16
|
+
constructor(uri: string, app?: import("@adonisjs/core/types").ApplicationService);
|
|
16
17
|
preProcess(ctx: ResourceContext): Promise<this>;
|
|
17
18
|
toTool(_tool: Tool): Promise<ResourceLinkContent>;
|
|
18
19
|
toPrompt(_prompt: Prompt): Promise<never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource_link.d.ts","sourceRoot":"","sources":["../../../../src/server/contents/resource_link.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"resource_link.d.ts","sourceRoot":"","sources":["../../../../src/server/contents/resource_link.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAO7D,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,OAAO;;IAOhD,OAAO,CAAC,GAAG;gBADX,GAAG,EAAE,MAAM,EACH,GAAG,oDAAqB;IAM5B,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C,MAAM,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgBjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAOzC,UAAU,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAOrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAY9C"}
|
|
@@ -6,18 +6,22 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { createError } from '@adonisjs/core/exceptions';
|
|
8
8
|
import { findResource } from '../../utils/find_resource_pattern.js';
|
|
9
|
+
import applicationService from '@adonisjs/core/services/app';
|
|
9
10
|
export default class ResourceLink {
|
|
11
|
+
app;
|
|
10
12
|
#uri;
|
|
11
13
|
#resource;
|
|
12
14
|
#meta;
|
|
13
|
-
constructor(uri) {
|
|
15
|
+
constructor(uri, app = applicationService) {
|
|
16
|
+
this.app = app;
|
|
14
17
|
this.#uri = uri;
|
|
15
18
|
this.#resource = null;
|
|
16
19
|
}
|
|
17
20
|
async preProcess(ctx) {
|
|
18
21
|
this.#resource = await findResource({
|
|
22
|
+
app: this.app,
|
|
19
23
|
uri: this.#uri,
|
|
20
|
-
resourceList: ctx.resources,
|
|
24
|
+
resourceList: { ...ctx.resources, ...ctx.resourceTemplates },
|
|
21
25
|
ctx,
|
|
22
26
|
});
|
|
23
27
|
return this;
|
|
@@ -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"}
|