@servicialo/mcp-server 0.7.0 → 0.8.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.en.md +392 -0
- package/README.md +315 -147
- package/dist/adapter-http.d.ts +51 -0
- package/dist/adapter-http.d.ts.map +1 -0
- package/dist/adapter-http.js +187 -0
- package/dist/adapter-http.js.map +1 -0
- package/dist/adapter.d.ts +42 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +42 -0
- package/dist/adapter.js.map +1 -0
- package/dist/client.d.ts +5 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -59
- package/dist/index.js.map +1 -1
- package/dist/mandate.d.ts +321 -0
- package/dist/mandate.d.ts.map +1 -0
- package/dist/mandate.js +349 -0
- package/dist/mandate.js.map +1 -0
- package/dist/provider-profile.d.ts +985 -0
- package/dist/provider-profile.d.ts.map +1 -0
- package/dist/provider-profile.js +210 -0
- package/dist/provider-profile.js.map +1 -0
- package/dist/tools/authenticated/cerrar.d.ts +5 -5
- package/dist/tools/authenticated/cerrar.d.ts.map +1 -1
- package/dist/tools/authenticated/cerrar.js.map +1 -1
- package/dist/tools/authenticated/comprometer.d.ts +4 -4
- package/dist/tools/authenticated/comprometer.d.ts.map +1 -1
- package/dist/tools/authenticated/comprometer.js.map +1 -1
- package/dist/tools/authenticated/delivery.d.ts +4 -4
- package/dist/tools/authenticated/delivery.d.ts.map +1 -1
- package/dist/tools/authenticated/delivery.js.map +1 -1
- package/dist/tools/authenticated/entender.d.ts +3 -3
- package/dist/tools/authenticated/entender.d.ts.map +1 -1
- package/dist/tools/authenticated/entender.js.map +1 -1
- package/dist/tools/authenticated/lifecycle.d.ts +5 -5
- package/dist/tools/authenticated/lifecycle.d.ts.map +1 -1
- package/dist/tools/authenticated/lifecycle.js.map +1 -1
- package/dist/tools/authenticated/resolve-auth.d.ts +118 -0
- package/dist/tools/authenticated/resolve-auth.d.ts.map +1 -0
- package/dist/tools/authenticated/resolve-auth.js +62 -0
- package/dist/tools/authenticated/resolve-auth.js.map +1 -0
- package/dist/tools/authenticated/resource.d.ts +295 -0
- package/dist/tools/authenticated/resource.d.ts.map +1 -0
- package/dist/tools/authenticated/resource.js +125 -0
- package/dist/tools/authenticated/resource.js.map +1 -0
- package/dist/tools/public/a2a.d.ts +18 -0
- package/dist/tools/public/a2a.d.ts.map +1 -0
- package/dist/tools/public/a2a.js +15 -0
- package/dist/tools/public/a2a.js.map +1 -0
- package/dist/tools/public/availability.d.ts +2 -2
- package/dist/tools/public/availability.d.ts.map +1 -1
- package/dist/tools/public/availability.js.map +1 -1
- package/dist/tools/public/registry.d.ts +8 -3
- package/dist/tools/public/registry.d.ts.map +1 -1
- package/dist/tools/public/registry.js +8 -0
- package/dist/tools/public/registry.js.map +1 -1
- package/dist/tools/public/resolve.d.ts +60 -0
- package/dist/tools/public/resolve.d.ts.map +1 -0
- package/dist/tools/public/resolve.js +60 -0
- package/dist/tools/public/resolve.js.map +1 -0
- package/dist/tools/public/services.d.ts +2 -2
- package/dist/tools/public/services.d.ts.map +1 -1
- package/dist/tools/public/services.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HttpAdapter — generic adapter for any Servicialo-compatible implementation
|
|
3
|
+
* that exposes the canonical HTTP_PROFILE.md REST endpoints.
|
|
4
|
+
*
|
|
5
|
+
* Path translation:
|
|
6
|
+
* Coordinalo internal paths (used by tool handlers) are translated to
|
|
7
|
+
* canonical /v1/* paths defined in HTTP_PROFILE.md.
|
|
8
|
+
*
|
|
9
|
+
* Public endpoints:
|
|
10
|
+
* /api/servicialo/registry → /v1/registry
|
|
11
|
+
* /api/servicialo/{slug}/services → /v1/organizations/{slug}/services
|
|
12
|
+
* /api/servicialo/{slug}/availability → /v1/organizations/{slug}/availability
|
|
13
|
+
*
|
|
14
|
+
* Authenticated endpoints:
|
|
15
|
+
* /coordinalo/* → /v1/*
|
|
16
|
+
* /relacionalo/clients/upsert → /v1/clients
|
|
17
|
+
* /planificalo/* → /v1/*
|
|
18
|
+
*
|
|
19
|
+
* Unlike CoordinaloClient, this adapter does NOT prefix paths with
|
|
20
|
+
* /api/organizations/{orgId}. The org context is communicated via
|
|
21
|
+
* the X-Servicialo-Org header (or the implementation's own mechanism).
|
|
22
|
+
*/
|
|
23
|
+
export class HttpAdapter {
|
|
24
|
+
baseUrl;
|
|
25
|
+
apiKey;
|
|
26
|
+
orgId;
|
|
27
|
+
constructor(config) {
|
|
28
|
+
this.baseUrl = config.baseUrl.replace(/\/+$/, '');
|
|
29
|
+
this.apiKey = config.apiKey;
|
|
30
|
+
this.orgId = config.orgId;
|
|
31
|
+
}
|
|
32
|
+
get isAuthenticated() {
|
|
33
|
+
return !!this.apiKey;
|
|
34
|
+
}
|
|
35
|
+
// --- Path translation ---
|
|
36
|
+
/**
|
|
37
|
+
* Translate a Coordinalo-internal path to a canonical HTTP_PROFILE.md path.
|
|
38
|
+
*/
|
|
39
|
+
translatePath(path) {
|
|
40
|
+
// Public: /api/servicialo/manifest → /v1/manifest
|
|
41
|
+
if (path === '/api/servicialo/manifest') {
|
|
42
|
+
return '/v1/manifest';
|
|
43
|
+
}
|
|
44
|
+
// Public: /api/servicialo/registry → /v1/registry
|
|
45
|
+
if (path === '/api/servicialo/registry') {
|
|
46
|
+
return '/v1/registry';
|
|
47
|
+
}
|
|
48
|
+
// Public: /api/servicialo/{slug}/* → /v1/organizations/{slug}/*
|
|
49
|
+
const pubMatch = path.match(/^\/api\/servicialo\/([^/]+)\/(.+)$/);
|
|
50
|
+
if (pubMatch) {
|
|
51
|
+
return `/v1/organizations/${pubMatch[1]}/${pubMatch[2]}`;
|
|
52
|
+
}
|
|
53
|
+
// Authenticated: /relacionalo/clients/upsert → /v1/clients
|
|
54
|
+
if (path === '/relacionalo/clients/upsert') {
|
|
55
|
+
return '/v1/clients';
|
|
56
|
+
}
|
|
57
|
+
// Authenticated: /coordinalo/* → /v1/*
|
|
58
|
+
if (path.startsWith('/coordinalo/')) {
|
|
59
|
+
return '/v1/' + path.slice('/coordinalo/'.length);
|
|
60
|
+
}
|
|
61
|
+
// Authenticated: /planificalo/* → /v1/*
|
|
62
|
+
if (path.startsWith('/planificalo/')) {
|
|
63
|
+
return '/v1/' + path.slice('/planificalo/'.length);
|
|
64
|
+
}
|
|
65
|
+
// Absolute /api/* paths: pass through
|
|
66
|
+
if (path.startsWith('/api/')) {
|
|
67
|
+
return path;
|
|
68
|
+
}
|
|
69
|
+
// Fallback: prefix with /v1
|
|
70
|
+
return '/v1' + path;
|
|
71
|
+
}
|
|
72
|
+
// --- Headers ---
|
|
73
|
+
authHeaders() {
|
|
74
|
+
const headers = {
|
|
75
|
+
'Content-Type': 'application/json',
|
|
76
|
+
};
|
|
77
|
+
if (this.apiKey) {
|
|
78
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
79
|
+
}
|
|
80
|
+
if (this.orgId) {
|
|
81
|
+
headers['X-Servicialo-Org'] = this.orgId;
|
|
82
|
+
}
|
|
83
|
+
return headers;
|
|
84
|
+
}
|
|
85
|
+
publicHeaders() {
|
|
86
|
+
const headers = {
|
|
87
|
+
'Content-Type': 'application/json',
|
|
88
|
+
};
|
|
89
|
+
if (this.orgId) {
|
|
90
|
+
headers['X-Servicialo-Org'] = this.orgId;
|
|
91
|
+
}
|
|
92
|
+
return headers;
|
|
93
|
+
}
|
|
94
|
+
buildUrl(path) {
|
|
95
|
+
return `${this.baseUrl}${this.translatePath(path)}`;
|
|
96
|
+
}
|
|
97
|
+
// --- Public API ---
|
|
98
|
+
pub = {
|
|
99
|
+
get: async (path, params) => {
|
|
100
|
+
const url = new URL(this.buildUrl(path));
|
|
101
|
+
if (params) {
|
|
102
|
+
for (const [key, value] of Object.entries(params)) {
|
|
103
|
+
if (value !== undefined) {
|
|
104
|
+
url.searchParams.set(key, String(value));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const res = await fetch(url.toString(), {
|
|
109
|
+
method: 'GET',
|
|
110
|
+
headers: this.publicHeaders(),
|
|
111
|
+
});
|
|
112
|
+
if (!res.ok) {
|
|
113
|
+
const body = await res.text();
|
|
114
|
+
throw new Error(`GET ${path} failed (${res.status}): ${body}`);
|
|
115
|
+
}
|
|
116
|
+
return res.json();
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
// --- Authenticated API ---
|
|
120
|
+
async get(path, params) {
|
|
121
|
+
const url = new URL(this.buildUrl(path));
|
|
122
|
+
if (params) {
|
|
123
|
+
for (const [key, value] of Object.entries(params)) {
|
|
124
|
+
if (value !== undefined) {
|
|
125
|
+
url.searchParams.set(key, String(value));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const res = await fetch(url.toString(), {
|
|
130
|
+
method: 'GET',
|
|
131
|
+
headers: this.authHeaders(),
|
|
132
|
+
});
|
|
133
|
+
if (!res.ok) {
|
|
134
|
+
const body = await res.text();
|
|
135
|
+
throw new Error(`GET ${path} failed (${res.status}): ${body}`);
|
|
136
|
+
}
|
|
137
|
+
return res.json();
|
|
138
|
+
}
|
|
139
|
+
async post(path, body) {
|
|
140
|
+
const res = await fetch(this.buildUrl(path), {
|
|
141
|
+
method: 'POST',
|
|
142
|
+
headers: this.authHeaders(),
|
|
143
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
144
|
+
});
|
|
145
|
+
if (!res.ok) {
|
|
146
|
+
const text = await res.text();
|
|
147
|
+
throw new Error(`POST ${path} failed (${res.status}): ${text}`);
|
|
148
|
+
}
|
|
149
|
+
return res.json();
|
|
150
|
+
}
|
|
151
|
+
async put(path, body) {
|
|
152
|
+
const res = await fetch(this.buildUrl(path), {
|
|
153
|
+
method: 'PUT',
|
|
154
|
+
headers: this.authHeaders(),
|
|
155
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
156
|
+
});
|
|
157
|
+
if (!res.ok) {
|
|
158
|
+
const text = await res.text();
|
|
159
|
+
throw new Error(`PUT ${path} failed (${res.status}): ${text}`);
|
|
160
|
+
}
|
|
161
|
+
return res.json();
|
|
162
|
+
}
|
|
163
|
+
async patch(path, body) {
|
|
164
|
+
const res = await fetch(this.buildUrl(path), {
|
|
165
|
+
method: 'PATCH',
|
|
166
|
+
headers: this.authHeaders(),
|
|
167
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
168
|
+
});
|
|
169
|
+
if (!res.ok) {
|
|
170
|
+
const text = await res.text();
|
|
171
|
+
throw new Error(`PATCH ${path} failed (${res.status}): ${text}`);
|
|
172
|
+
}
|
|
173
|
+
return res.json();
|
|
174
|
+
}
|
|
175
|
+
async delete(path) {
|
|
176
|
+
const res = await fetch(this.buildUrl(path), {
|
|
177
|
+
method: 'DELETE',
|
|
178
|
+
headers: this.authHeaders(),
|
|
179
|
+
});
|
|
180
|
+
if (!res.ok) {
|
|
181
|
+
const text = await res.text();
|
|
182
|
+
throw new Error(`DELETE ${path} failed (${res.status}): ${text}`);
|
|
183
|
+
}
|
|
184
|
+
return res.json();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=adapter-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-http.js","sourceRoot":"","sources":["../src/adapter-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServicialoAdapter — pluggable backend interface for the MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Any Servicialo-compatible implementation can be connected by providing
|
|
5
|
+
* an adapter that implements this interface. The MCP server delegates all
|
|
6
|
+
* backend calls through this abstraction.
|
|
7
|
+
*
|
|
8
|
+
* Built-in adapters:
|
|
9
|
+
* - CoordinaloClient (SERVICIALO_ADAPTER=coordinalo, default)
|
|
10
|
+
* - HttpAdapter (SERVICIALO_ADAPTER=http)
|
|
11
|
+
*/
|
|
12
|
+
export interface ServicialoAdapter {
|
|
13
|
+
/** Whether the adapter has credentials for authenticated operations. */
|
|
14
|
+
readonly isAuthenticated: boolean;
|
|
15
|
+
/** Public API — no authentication required. */
|
|
16
|
+
readonly pub: {
|
|
17
|
+
get(path: string, params?: Record<string, string | number | undefined>): Promise<unknown>;
|
|
18
|
+
};
|
|
19
|
+
/** Authenticated GET with optional query parameters. */
|
|
20
|
+
get(path: string, params?: Record<string, string | number | undefined>): Promise<unknown>;
|
|
21
|
+
/** Authenticated POST with optional JSON body. */
|
|
22
|
+
post(path: string, body?: unknown): Promise<unknown>;
|
|
23
|
+
/** Authenticated PUT with optional JSON body. */
|
|
24
|
+
put(path: string, body?: unknown): Promise<unknown>;
|
|
25
|
+
/** Authenticated PATCH with optional JSON body. */
|
|
26
|
+
patch(path: string, body?: unknown): Promise<unknown>;
|
|
27
|
+
/** Authenticated DELETE. */
|
|
28
|
+
delete(path: string): Promise<unknown>;
|
|
29
|
+
}
|
|
30
|
+
export type AdapterType = 'coordinalo' | 'http';
|
|
31
|
+
/**
|
|
32
|
+
* Factory: create the appropriate adapter based on SERVICIALO_ADAPTER env var.
|
|
33
|
+
*
|
|
34
|
+
* - "coordinalo" (default): connects to a Coordinalo-compatible backend.
|
|
35
|
+
* Paths are org-scoped under /api/organizations/{orgId}.
|
|
36
|
+
*
|
|
37
|
+
* - "http": connects to any implementation that exposes the canonical
|
|
38
|
+
* HTTP_PROFILE.md REST endpoints under /v1/*.
|
|
39
|
+
* Requires SERVICIALO_BASE_URL to point to the implementation's root.
|
|
40
|
+
*/
|
|
41
|
+
export declare function createAdapter(): Promise<ServicialoAdapter>;
|
|
42
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,EAAE;QACZ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC3F,CAAC;IAEF,wDAAwD;IACxD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1F,kDAAkD;IAClD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD,iDAAiD;IACjD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC;AAEhD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAqBhE"}
|
package/dist/adapter.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServicialoAdapter — pluggable backend interface for the MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Any Servicialo-compatible implementation can be connected by providing
|
|
5
|
+
* an adapter that implements this interface. The MCP server delegates all
|
|
6
|
+
* backend calls through this abstraction.
|
|
7
|
+
*
|
|
8
|
+
* Built-in adapters:
|
|
9
|
+
* - CoordinaloClient (SERVICIALO_ADAPTER=coordinalo, default)
|
|
10
|
+
* - HttpAdapter (SERVICIALO_ADAPTER=http)
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Factory: create the appropriate adapter based on SERVICIALO_ADAPTER env var.
|
|
14
|
+
*
|
|
15
|
+
* - "coordinalo" (default): connects to a Coordinalo-compatible backend.
|
|
16
|
+
* Paths are org-scoped under /api/organizations/{orgId}.
|
|
17
|
+
*
|
|
18
|
+
* - "http": connects to any implementation that exposes the canonical
|
|
19
|
+
* HTTP_PROFILE.md REST endpoints under /v1/*.
|
|
20
|
+
* Requires SERVICIALO_BASE_URL to point to the implementation's root.
|
|
21
|
+
*/
|
|
22
|
+
export async function createAdapter() {
|
|
23
|
+
const adapterType = (process.env.SERVICIALO_ADAPTER || 'coordinalo');
|
|
24
|
+
const baseUrl = process.env.SERVICIALO_BASE_URL || 'http://localhost:3000';
|
|
25
|
+
const config = {
|
|
26
|
+
baseUrl,
|
|
27
|
+
apiKey: process.env.SERVICIALO_API_KEY,
|
|
28
|
+
orgId: process.env.SERVICIALO_ORG_ID,
|
|
29
|
+
};
|
|
30
|
+
switch (adapterType) {
|
|
31
|
+
case 'http': {
|
|
32
|
+
const { HttpAdapter } = await import('./adapter-http.js');
|
|
33
|
+
return new HttpAdapter(config);
|
|
34
|
+
}
|
|
35
|
+
case 'coordinalo':
|
|
36
|
+
default: {
|
|
37
|
+
const { CoordinaloClient } = await import('./client.js');
|
|
38
|
+
return new CoordinaloClient(config);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA6BH;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,YAAY,CAAgB,CAAC;IACpF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB,CAAC;IAE3E,MAAM,MAAM,GAAG;QACb,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QACtC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;KACrC,CAAC;IAEF,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1D,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,YAAY,CAAC;QAClB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACzD,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -4,13 +4,17 @@
|
|
|
4
4
|
* Supports two modes:
|
|
5
5
|
* - Public: calls to /api/servicialo/* without Authorization header
|
|
6
6
|
* - Authenticated: calls to /api/organizations/{orgSlug}/* with Bearer token
|
|
7
|
+
*
|
|
8
|
+
* Implements ServicialoAdapter — the pluggable backend interface used by
|
|
9
|
+
* all MCP tool handlers. This is the default adapter (SERVICIALO_ADAPTER=coordinalo).
|
|
7
10
|
*/
|
|
11
|
+
import type { ServicialoAdapter } from './adapter.js';
|
|
8
12
|
export interface ClientConfig {
|
|
9
13
|
baseUrl: string;
|
|
10
14
|
apiKey?: string;
|
|
11
15
|
orgId?: string;
|
|
12
16
|
}
|
|
13
|
-
export declare class CoordinaloClient {
|
|
17
|
+
export declare class CoordinaloClient implements ServicialoAdapter {
|
|
14
18
|
private baseUrl;
|
|
15
19
|
private apiKey;
|
|
16
20
|
private orgId;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAqB;gBAEtB,MAAM,EAAE,YAAY;IAMhC,sEAAsE;IACtE,IAAI,eAAe,IAAI,OAAO,CAE7B;IAID,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,aAAa;IAMrB;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAOhB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAMtB,QAAQ,CAAC,GAAG;oBACQ,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAG,OAAO,CAAC,OAAO,CAAC;MAoCjG;IAII,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBzF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAepD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAenD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAerD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAa7C"}
|
package/dist/client.js
CHANGED
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* Supports two modes:
|
|
5
5
|
* - Public: calls to /api/servicialo/* without Authorization header
|
|
6
6
|
* - Authenticated: calls to /api/organizations/{orgSlug}/* with Bearer token
|
|
7
|
+
*
|
|
8
|
+
* Implements ServicialoAdapter — the pluggable backend interface used by
|
|
9
|
+
* all MCP tool handlers. This is the default adapter (SERVICIALO_ADAPTER=coordinalo).
|
|
7
10
|
*/
|
|
8
11
|
export class CoordinaloClient {
|
|
9
12
|
baseUrl;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6HpE,wBAAgB,mBAAmB,cASlC"}
|
package/dist/index.js
CHANGED
|
@@ -1,43 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
-
import {
|
|
4
|
+
import { createAdapter } from './adapter.js';
|
|
5
5
|
import { detectMode } from './mode.js';
|
|
6
6
|
// --- Public tools ---
|
|
7
7
|
import { registryTools } from './tools/public/registry.js';
|
|
8
8
|
import { publicAvailabilityTools } from './tools/public/availability.js';
|
|
9
9
|
import { publicServicesTools } from './tools/public/services.js';
|
|
10
|
+
import { resolveTools } from './tools/public/resolve.js';
|
|
11
|
+
import { a2aTools } from './tools/public/a2a.js';
|
|
10
12
|
// --- Authenticated tools (Phases 2–6) ---
|
|
11
13
|
import { entenderTools } from './tools/authenticated/entender.js';
|
|
12
14
|
import { comprometerTools } from './tools/authenticated/comprometer.js';
|
|
13
15
|
import { lifecycleTools } from './tools/authenticated/lifecycle.js';
|
|
14
16
|
import { deliveryTools } from './tools/authenticated/delivery.js';
|
|
15
17
|
import { cerrarTools } from './tools/authenticated/cerrar.js';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const BASE_URL = process.env.SERVICIALO_BASE_URL || 'http://localhost:3000';
|
|
19
|
-
if (mode === 'authenticated') {
|
|
20
|
-
console.error(`Servicialo MCP — modo autenticado [org: ${process.env.SERVICIALO_ORG_ID}]`);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
console.error('Servicialo MCP — modo discovery (sin credenciales)');
|
|
24
|
-
}
|
|
25
|
-
// --- Init client ---
|
|
26
|
-
const apiClient = new CoordinaloClient({
|
|
27
|
-
baseUrl: BASE_URL,
|
|
28
|
-
apiKey: process.env.SERVICIALO_API_KEY,
|
|
29
|
-
orgId: process.env.SERVICIALO_ORG_ID,
|
|
30
|
-
});
|
|
31
|
-
// --- Init MCP server ---
|
|
32
|
-
const server = new McpServer({
|
|
33
|
-
name: 'servicialo',
|
|
34
|
-
version: '0.6.0',
|
|
35
|
-
});
|
|
18
|
+
import { resourceTools } from './tools/authenticated/resource.js';
|
|
19
|
+
import { resolveAuthTools } from './tools/authenticated/resolve-auth.js';
|
|
36
20
|
// --- Public tools (always registered) ---
|
|
37
21
|
const publicTools = {
|
|
38
22
|
...registryTools,
|
|
39
23
|
...publicAvailabilityTools,
|
|
40
24
|
...publicServicesTools,
|
|
25
|
+
...resolveTools,
|
|
26
|
+
...a2aTools,
|
|
41
27
|
};
|
|
42
28
|
// --- Authenticated tools (only in authenticated mode) ---
|
|
43
29
|
const authenticatedTools = {
|
|
@@ -46,46 +32,64 @@ const authenticatedTools = {
|
|
|
46
32
|
...lifecycleTools,
|
|
47
33
|
...deliveryTools,
|
|
48
34
|
...cerrarTools,
|
|
35
|
+
...resourceTools,
|
|
36
|
+
...resolveAuthTools,
|
|
49
37
|
};
|
|
50
|
-
// --- Register tools ---
|
|
51
|
-
function registerTools(tools) {
|
|
52
|
-
for (const [name, tool] of Object.entries(tools)) {
|
|
53
|
-
server.tool(name, tool.description, tool.schema.shape, async (args) => {
|
|
54
|
-
try {
|
|
55
|
-
const result = await tool.handler(apiClient, args);
|
|
56
|
-
return {
|
|
57
|
-
content: [
|
|
58
|
-
{
|
|
59
|
-
type: 'text',
|
|
60
|
-
text: JSON.stringify(result, null, 2),
|
|
61
|
-
},
|
|
62
|
-
],
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
67
|
-
return {
|
|
68
|
-
content: [
|
|
69
|
-
{
|
|
70
|
-
type: 'text',
|
|
71
|
-
text: `Error: ${message}`,
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
isError: true,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Always register public tools
|
|
81
|
-
registerTools(publicTools);
|
|
82
|
-
if (mode === 'authenticated') {
|
|
83
|
-
// Register authenticated tools only when credentials are present
|
|
84
|
-
registerTools(authenticatedTools);
|
|
85
|
-
}
|
|
86
|
-
// Discovery mode: only the 4 public tools are exposed
|
|
87
38
|
// --- Connect via stdio ---
|
|
88
39
|
async function main() {
|
|
40
|
+
// --- Detect mode ---
|
|
41
|
+
const mode = detectMode();
|
|
42
|
+
const adapterType = process.env.SERVICIALO_ADAPTER || 'coordinalo';
|
|
43
|
+
if (mode === 'authenticated') {
|
|
44
|
+
console.error(`Servicialo MCP — modo autenticado [org: ${process.env.SERVICIALO_ORG_ID}, adapter: ${adapterType}]`);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error(`Servicialo MCP — modo discovery (adapter: ${adapterType})`);
|
|
48
|
+
}
|
|
49
|
+
// --- Init adapter ---
|
|
50
|
+
const adapter = await createAdapter();
|
|
51
|
+
// --- Init MCP server ---
|
|
52
|
+
const server = new McpServer({
|
|
53
|
+
name: 'servicialo',
|
|
54
|
+
version: '0.8.0',
|
|
55
|
+
});
|
|
56
|
+
// --- Register tools ---
|
|
57
|
+
function registerTools(tools) {
|
|
58
|
+
for (const [name, tool] of Object.entries(tools)) {
|
|
59
|
+
server.tool(name, tool.description, tool.schema.shape, async (args) => {
|
|
60
|
+
try {
|
|
61
|
+
const result = await tool.handler(adapter, args);
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: JSON.stringify(result, null, 2),
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'text',
|
|
77
|
+
text: `Error: ${message}`,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
isError: true,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Always register public tools
|
|
87
|
+
registerTools(publicTools);
|
|
88
|
+
if (mode === 'authenticated') {
|
|
89
|
+
// Register authenticated tools only when credentials are present
|
|
90
|
+
registerTools(authenticatedTools);
|
|
91
|
+
}
|
|
92
|
+
// Discovery mode: only the 4 public tools are exposed
|
|
89
93
|
const transport = new StdioServerTransport();
|
|
90
94
|
await server.connect(transport);
|
|
91
95
|
}
|
|
@@ -95,7 +99,7 @@ main().catch((error) => {
|
|
|
95
99
|
});
|
|
96
100
|
// --- Smithery sandbox (for registry scanning) ---
|
|
97
101
|
export function createSandboxServer() {
|
|
98
|
-
const sandbox = new McpServer({ name: 'servicialo', version: '0.
|
|
102
|
+
const sandbox = new McpServer({ name: 'servicialo', version: '0.8.0' });
|
|
99
103
|
const allTools = { ...publicTools, ...authenticatedTools };
|
|
100
104
|
for (const [name, tool] of Object.entries(allTools)) {
|
|
101
105
|
sandbox.tool(name, tool.description, tool.schema.shape, async () => ({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|