onlymcp 0.8.1 → 0.9.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/dist/apiClient.d.ts +76 -0
- package/dist/apiClient.js +50 -2
- package/dist/apiClient.js.map +1 -1
- package/dist/bin/mcp.js +24 -4
- package/dist/bin/mcp.js.map +1 -1
- package/dist/instructions.js +3 -1
- package/dist/instructions.js.map +1 -1
- package/dist/tools/connections.d.ts +154 -0
- package/dist/tools/connections.js +164 -0
- package/dist/tools/connections.js.map +1 -0
- package/dist/tools/write.d.ts +166 -0
- package/dist/tools/write.js +193 -0
- package/dist/tools/write.js.map +1 -0
- package/package.json +1 -1
package/dist/apiClient.d.ts
CHANGED
|
@@ -33,6 +33,51 @@ export type MemoryFile = {
|
|
|
33
33
|
updatedAt: string;
|
|
34
34
|
updatedByDevice: string | null;
|
|
35
35
|
};
|
|
36
|
+
export type MemoryListItem = {
|
|
37
|
+
path: string;
|
|
38
|
+
updatedAt: string;
|
|
39
|
+
scope: 'personal' | 'team';
|
|
40
|
+
teamName: string | null;
|
|
41
|
+
canEdit: boolean;
|
|
42
|
+
};
|
|
43
|
+
export type Connection = {
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
slug: string;
|
|
47
|
+
url: string;
|
|
48
|
+
transport: string;
|
|
49
|
+
authType: string;
|
|
50
|
+
authHeaderName: string | null;
|
|
51
|
+
secretHint: string | null;
|
|
52
|
+
enabled: boolean;
|
|
53
|
+
status: string;
|
|
54
|
+
statusError: string | null;
|
|
55
|
+
scope: 'personal' | 'team';
|
|
56
|
+
can?: {
|
|
57
|
+
edit: boolean;
|
|
58
|
+
delete: boolean;
|
|
59
|
+
toggleTools: boolean;
|
|
60
|
+
manageCredentials: boolean;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export type Capability = {
|
|
64
|
+
id: string;
|
|
65
|
+
kind: 'tool' | 'resource' | 'prompt';
|
|
66
|
+
name: string;
|
|
67
|
+
description: string;
|
|
68
|
+
enabled: boolean;
|
|
69
|
+
exposedAs: string | null;
|
|
70
|
+
};
|
|
71
|
+
export type ConnectionInput = {
|
|
72
|
+
name: string;
|
|
73
|
+
slug: string;
|
|
74
|
+
url: string;
|
|
75
|
+
transport?: 'http' | 'sse';
|
|
76
|
+
authType?: 'none' | 'bearer' | 'header';
|
|
77
|
+
authHeaderName?: string;
|
|
78
|
+
secret?: string;
|
|
79
|
+
teamId?: string | null;
|
|
80
|
+
};
|
|
36
81
|
export type WriteResult = {
|
|
37
82
|
path: string;
|
|
38
83
|
updatedAt: string;
|
|
@@ -90,4 +135,35 @@ export declare class ApiClient {
|
|
|
90
135
|
}>;
|
|
91
136
|
readMemory(path: string): Promise<MemoryFile>;
|
|
92
137
|
writeMemory(path: string, content: string, deviceLabel?: string): Promise<WriteResult>;
|
|
138
|
+
private memoryUrl;
|
|
139
|
+
listMemory(): Promise<{
|
|
140
|
+
files: MemoryListItem[];
|
|
141
|
+
}>;
|
|
142
|
+
deleteMemory(path: string): Promise<void>;
|
|
143
|
+
deleteSkill(name: string): Promise<void>;
|
|
144
|
+
deleteSkillFile(name: string, path: string): Promise<void>;
|
|
145
|
+
deleteAgent(name: string): Promise<void>;
|
|
146
|
+
listConnections(): Promise<{
|
|
147
|
+
connections: Connection[];
|
|
148
|
+
}>;
|
|
149
|
+
createConnection(input: ConnectionInput): Promise<{
|
|
150
|
+
connection: Connection;
|
|
151
|
+
}>;
|
|
152
|
+
updateConnection(id: string, patch: Partial<ConnectionInput> & {
|
|
153
|
+
enabled?: boolean;
|
|
154
|
+
}): Promise<{
|
|
155
|
+
connection: Connection;
|
|
156
|
+
}>;
|
|
157
|
+
deleteConnection(id: string): Promise<{
|
|
158
|
+
ok: boolean;
|
|
159
|
+
}>;
|
|
160
|
+
listCapabilities(id: string): Promise<{
|
|
161
|
+
capabilities: Capability[];
|
|
162
|
+
}>;
|
|
163
|
+
toggleCapability(id: string, capId: string, enabled: boolean): Promise<{
|
|
164
|
+
capability: {
|
|
165
|
+
id: string;
|
|
166
|
+
enabled: boolean;
|
|
167
|
+
};
|
|
168
|
+
}>;
|
|
93
169
|
}
|
package/dist/apiClient.js
CHANGED
|
@@ -73,10 +73,58 @@ export class ApiClient {
|
|
|
73
73
|
return this.call(`/api/agents/${encodeURIComponent(name)}`);
|
|
74
74
|
}
|
|
75
75
|
readMemory(path) {
|
|
76
|
-
return this.call(
|
|
76
|
+
return this.call(this.memoryUrl(path));
|
|
77
77
|
}
|
|
78
78
|
writeMemory(path, content, deviceLabel) {
|
|
79
|
-
return this.call(
|
|
79
|
+
return this.call(this.memoryUrl(path), { method: 'PUT', body: JSON.stringify({ content, deviceLabel }) });
|
|
80
|
+
}
|
|
81
|
+
// --- Loeschen und Auflisten, seit 0.9.0 ---------------------------------
|
|
82
|
+
//
|
|
83
|
+
// Bis dahin konnte dieser Client lesen und schreiben, aber nichts wegnehmen
|
|
84
|
+
// und die Memory-Dateien nicht einmal aufzaehlen. Wer keinen Browser offen
|
|
85
|
+
// hatte, kam an einen Tippfehler im Pfad nicht mehr heran.
|
|
86
|
+
memoryUrl(path) {
|
|
87
|
+
return `/api/memory/${path.split('/').map(encodeURIComponent).join('/')}`;
|
|
88
|
+
}
|
|
89
|
+
listMemory() {
|
|
90
|
+
return this.call('/api/memory');
|
|
91
|
+
}
|
|
92
|
+
deleteMemory(path) {
|
|
93
|
+
return this.call(this.memoryUrl(path), { method: 'DELETE' });
|
|
94
|
+
}
|
|
95
|
+
deleteSkill(name) {
|
|
96
|
+
return this.call(`/api/skills/${encodeURIComponent(name)}`, { method: 'DELETE' });
|
|
97
|
+
}
|
|
98
|
+
deleteSkillFile(name, path) {
|
|
99
|
+
return this.call(this.skillFileUrl(name, path), { method: 'DELETE' });
|
|
100
|
+
}
|
|
101
|
+
deleteAgent(name) {
|
|
102
|
+
return this.call(`/api/agents/${encodeURIComponent(name)}`, { method: 'DELETE' });
|
|
103
|
+
}
|
|
104
|
+
// --- Fremde MCP-Server -------------------------------------------------
|
|
105
|
+
listConnections() {
|
|
106
|
+
return this.call('/api/mcp-connections');
|
|
107
|
+
}
|
|
108
|
+
createConnection(input) {
|
|
109
|
+
return this.call('/api/mcp-connections', {
|
|
110
|
+
method: 'POST',
|
|
111
|
+
body: JSON.stringify(input),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
updateConnection(id, patch) {
|
|
115
|
+
return this.call(`/api/mcp-connections/${id}`, {
|
|
116
|
+
method: 'PATCH',
|
|
117
|
+
body: JSON.stringify(patch),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
deleteConnection(id) {
|
|
121
|
+
return this.call(`/api/mcp-connections/${id}`, { method: 'DELETE' });
|
|
122
|
+
}
|
|
123
|
+
listCapabilities(id) {
|
|
124
|
+
return this.call(`/api/mcp-connections/${id}/capabilities`);
|
|
125
|
+
}
|
|
126
|
+
toggleCapability(id, capId, enabled) {
|
|
127
|
+
return this.call(`/api/mcp-connections/${id}/capabilities/${capId}`, { method: 'PATCH', body: JSON.stringify({ enabled }) });
|
|
80
128
|
}
|
|
81
129
|
}
|
|
82
130
|
//# sourceMappingURL=apiClient.js.map
|
package/dist/apiClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../src/apiClient.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEtB;IACA;IACA;IAHX,YACW,IAAY,EACZ,SAAkC,EAAE,EACpC,SAAS,CAAC;QAEnB,KAAK,CAAC,IAAI,CAAC,CAAC;QAJH,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAA8B;QACpC,WAAM,GAAN,MAAM,CAAI;QAGnB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../src/apiClient.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEtB;IACA;IACA;IAHX,YACW,IAAY,EACZ,SAAkC,EAAE,EACpC,SAAS,CAAC;QAEnB,KAAK,CAAC,IAAI,CAAC,CAAC;QAJH,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAA8B;QACpC,WAAM,GAAN,MAAM,CAAI;QAGnB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAwED,MAAM,OAAO,SAAS;IAED;IACA;IAFnB,YACmB,OAAe,EACf,KAA0B;QAD1B,YAAO,GAAP,OAAO,CAAQ;QACf,UAAK,GAAL,KAAK,CAAqB;IAC1C,CAAC;IAEI,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,OAAoB,EAAE;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,GAAG,IAAI;YACP,OAAO,EAAE;gBACP,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvB,aAAa,EAAE,UAAU,GAAG,EAAE;gBAC9B,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,SAAc,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAwD,SAAS,CAAC,CAAC;IACrF,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAA8B,aAAa,CAAC,CAAC;IAC/D,CAAC;IACD,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,IAAI,CACd,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAC1C,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,IAAY,EAAE,IAAY;QACjC,OAAO,IAAI,CAAC,IAAI,CACd,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,EACzC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAClD,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,mEAAmE;IACnE,4EAA4E;IAC5E,8BAA8B;IACtB,YAAY,CAAC,IAAY,EAAE,IAAY;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,eAAe,kBAAkB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACjE,CAAC;IACD,YAAY,CAAC,IAAY,EAAE,IAAY;QACrC,OAAO,IAAI,CAAC,IAAI,CAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe,EAAE,WAAyB,MAAM;QACvF,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAC7B,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAA8B,aAAa,CAAC,CAAC;IAC/D,CAAC;IACD,QAAQ,CAAC,IAAY,EAAE,CAAyE;QAC9F,OAAO,IAAI,CAAC,IAAI,CACd,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,EACzC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAC3C,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,IAAI,CACd,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAC1C,CAAC;IACJ,CAAC;IACD,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,IAAI,CAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE,WAAoB;QAC7D,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAClE,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,EAAE;IACF,4EAA4E;IAC5E,2EAA2E;IAC3E,2DAA2D;IAEnD,SAAS,CAAC,IAAY;QAC5B,OAAO,eAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAA8B,aAAa,CAAC,CAAC;IAC/D,CAAC;IACD,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,IAAI,CAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAO,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,eAAe,CAAC,IAAY,EAAE,IAAY;QACxC,OAAO,IAAI,CAAC,IAAI,CAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,IAAI,CAAO,eAAe,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,0EAA0E;IAE1E,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAgC,sBAAsB,CAAC,CAAC;IAC1E,CAAC;IACD,gBAAgB,CAAC,KAAsB;QACrC,OAAO,IAAI,CAAC,IAAI,CAA6B,sBAAsB,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,gBAAgB,CAAC,EAAU,EAAE,KAAuD;QAClF,OAAO,IAAI,CAAC,IAAI,CAA6B,wBAAwB,EAAE,EAAE,EAAE;YACzE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,gBAAgB,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAkB,wBAAwB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,gBAAgB,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAiC,wBAAwB,EAAE,eAAe,CAAC,CAAC;IAC9F,CAAC;IACD,gBAAgB,CAAC,EAAU,EAAE,KAAa,EAAE,OAAgB;QAC1D,OAAO,IAAI,CAAC,IAAI,CACd,wBAAwB,EAAE,iBAAiB,KAAK,EAAE,EAClD,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CACvD,CAAC;IACJ,CAAC;CACF"}
|
package/dist/bin/mcp.js
CHANGED
|
@@ -16,18 +16,38 @@ import { createGetSkillTool } from '../tools/getSkill.js';
|
|
|
16
16
|
import { createListAgentsTool, createListSkillsTool } from '../tools/lists.js';
|
|
17
17
|
import { createMemoryReadTool } from '../tools/memoryRead.js';
|
|
18
18
|
import { createMemoryWriteTool } from '../tools/memoryWrite.js';
|
|
19
|
+
import { createConnectionCreateTool, createConnectionDeleteTool, createConnectionToolToggleTool, createConnectionToolsTool, createConnectionUpdateTool, createListConnectionsTool, } from '../tools/connections.js';
|
|
20
|
+
import { createAgentDeleteTool, createAgentWriteTool, createListMemoryTool, createListSkillFilesTool, createMemoryDeleteTool, createSkillDeleteTool, createSkillFileDeleteTool, createSkillFileWriteTool, createSkillWriteTool, } from '../tools/write.js';
|
|
19
21
|
const { version } = createRequire(import.meta.url)('../../package.json');
|
|
20
22
|
const baseUrl = process.env.ONLYMCP_API_URL ?? 'https://only-mcp.com';
|
|
21
23
|
const api = new ApiClient(baseUrl, () => Keyring.read());
|
|
22
24
|
const cache = new TtlCache();
|
|
25
|
+
// Reihenfolge ist die, in der ein Client sie zu sehen bekommt: erst das
|
|
26
|
+
// Gedaechtnis (am haeufigsten gebraucht), dann Skills, Agenten, und zuletzt
|
|
27
|
+
// die Verwaltung der angebundenen Server.
|
|
23
28
|
const tools = [
|
|
29
|
+
createMemoryReadTool(api),
|
|
30
|
+
createMemoryWriteTool(api),
|
|
31
|
+
createListMemoryTool(api),
|
|
32
|
+
createMemoryDeleteTool(api),
|
|
33
|
+
createListSkillsTool(api),
|
|
24
34
|
createGetSkillTool(api, cache),
|
|
35
|
+
createSkillWriteTool(api),
|
|
36
|
+
createSkillDeleteTool(api),
|
|
37
|
+
createListSkillFilesTool(api),
|
|
25
38
|
createGetSkillFileTool(api),
|
|
26
|
-
|
|
27
|
-
|
|
39
|
+
createSkillFileWriteTool(api),
|
|
40
|
+
createSkillFileDeleteTool(api),
|
|
28
41
|
createListAgentsTool(api),
|
|
29
|
-
|
|
30
|
-
|
|
42
|
+
createGetAgentDefinitionTool(api, cache),
|
|
43
|
+
createAgentWriteTool(api),
|
|
44
|
+
createAgentDeleteTool(api),
|
|
45
|
+
createListConnectionsTool(api),
|
|
46
|
+
createConnectionCreateTool(api),
|
|
47
|
+
createConnectionUpdateTool(api),
|
|
48
|
+
createConnectionDeleteTool(api),
|
|
49
|
+
createConnectionToolsTool(api),
|
|
50
|
+
createConnectionToolToggleTool(api),
|
|
31
51
|
];
|
|
32
52
|
// Der Katalog fuers instructions-Feld. Schlaegt der Abruf fehl (offline, nicht
|
|
33
53
|
// angemeldet), bleibt die reine Bedienungsanleitung uebrig: der Client weiss
|
package/dist/bin/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/bin/mcp.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/bin/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/instructions.js
CHANGED
|
@@ -12,7 +12,9 @@ const PREAMBLE = [
|
|
|
12
12
|
'get_skill(name) to load a skill before following it, and',
|
|
13
13
|
'get_agent_definition(name) for an agent. Call list_skills or list_agents for',
|
|
14
14
|
'anything not named here. Memory is live: memory_read(path) and',
|
|
15
|
-
'memory_write(path, content).',
|
|
15
|
+
'memory_write(path, content). All of it is writable, not just readable:',
|
|
16
|
+
'skill_write, agent_write and the matching *_delete tools; connection_create',
|
|
17
|
+
'adds another MCP server to this account.',
|
|
16
18
|
].join(' ');
|
|
17
19
|
function section(label, tool, names, used) {
|
|
18
20
|
if (names.length === 0)
|
package/dist/instructions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,QAAQ,GAAG;IACf,6EAA6E;IAC7E,qEAAqE;IACrE,0DAA0D;IAC1D,8EAA8E;IAC9E,gEAAgE;IAChE,
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,QAAQ,GAAG;IACf,6EAA6E;IAC7E,qEAAqE;IACrE,0DAA0D;IAC1D,8EAA8E;IAC9E,gEAAgE;IAChE,wEAAwE;IACxE,6EAA6E;IAC7E,0CAA0C;CAC3C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,SAAS,OAAO,CAAC,KAAa,EAAE,IAAY,EAAE,KAAe,EAAE,IAAY;IACzE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,eAAe,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QAClE,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,mBAAmB;YAAE,MAAM;QACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,KAAK,UAAU,IAAI,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,eAAe,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAgB,EAAE,MAAgB;IAClE,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,8EAA8E;IAC9E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACtE,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ApiClient } from '../apiClient.js';
|
|
3
|
+
export declare const ListConnectionsInput: z.ZodObject<{}, z.core.$strip>;
|
|
4
|
+
export declare function createListConnectionsTool(api: ApiClient): {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
inputSchema: z.ZodObject<{}, z.core.$strip>;
|
|
8
|
+
handler: () => Promise<{
|
|
9
|
+
content: {
|
|
10
|
+
type: "text";
|
|
11
|
+
text: string;
|
|
12
|
+
}[];
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
export declare const ConnectionCreateInput: z.ZodObject<{
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
slug: z.ZodString;
|
|
18
|
+
url: z.ZodString;
|
|
19
|
+
transport: z.ZodDefault<z.ZodEnum<{
|
|
20
|
+
http: "http";
|
|
21
|
+
sse: "sse";
|
|
22
|
+
}>>;
|
|
23
|
+
authType: z.ZodDefault<z.ZodEnum<{
|
|
24
|
+
none: "none";
|
|
25
|
+
bearer: "bearer";
|
|
26
|
+
header: "header";
|
|
27
|
+
}>>;
|
|
28
|
+
authHeaderName: z.ZodOptional<z.ZodString>;
|
|
29
|
+
secret: z.ZodOptional<z.ZodString>;
|
|
30
|
+
teamId: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare function createConnectionCreateTool(api: ApiClient): {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
inputSchema: z.ZodObject<{
|
|
36
|
+
name: z.ZodString;
|
|
37
|
+
slug: z.ZodString;
|
|
38
|
+
url: z.ZodString;
|
|
39
|
+
transport: z.ZodDefault<z.ZodEnum<{
|
|
40
|
+
http: "http";
|
|
41
|
+
sse: "sse";
|
|
42
|
+
}>>;
|
|
43
|
+
authType: z.ZodDefault<z.ZodEnum<{
|
|
44
|
+
none: "none";
|
|
45
|
+
bearer: "bearer";
|
|
46
|
+
header: "header";
|
|
47
|
+
}>>;
|
|
48
|
+
authHeaderName: z.ZodOptional<z.ZodString>;
|
|
49
|
+
secret: z.ZodOptional<z.ZodString>;
|
|
50
|
+
teamId: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
handler: (args: z.infer<typeof ConnectionCreateInput>) => Promise<{
|
|
53
|
+
content: {
|
|
54
|
+
type: "text";
|
|
55
|
+
text: string;
|
|
56
|
+
}[];
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
export declare const ConnectionUpdateInput: z.ZodObject<{
|
|
60
|
+
slug: z.ZodString;
|
|
61
|
+
name: z.ZodOptional<z.ZodString>;
|
|
62
|
+
url: z.ZodOptional<z.ZodString>;
|
|
63
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
64
|
+
http: "http";
|
|
65
|
+
sse: "sse";
|
|
66
|
+
}>>;
|
|
67
|
+
authType: z.ZodOptional<z.ZodEnum<{
|
|
68
|
+
none: "none";
|
|
69
|
+
bearer: "bearer";
|
|
70
|
+
header: "header";
|
|
71
|
+
}>>;
|
|
72
|
+
authHeaderName: z.ZodOptional<z.ZodString>;
|
|
73
|
+
secret: z.ZodOptional<z.ZodString>;
|
|
74
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
export declare function createConnectionUpdateTool(api: ApiClient): {
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
inputSchema: z.ZodObject<{
|
|
80
|
+
slug: z.ZodString;
|
|
81
|
+
name: z.ZodOptional<z.ZodString>;
|
|
82
|
+
url: z.ZodOptional<z.ZodString>;
|
|
83
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
84
|
+
http: "http";
|
|
85
|
+
sse: "sse";
|
|
86
|
+
}>>;
|
|
87
|
+
authType: z.ZodOptional<z.ZodEnum<{
|
|
88
|
+
none: "none";
|
|
89
|
+
bearer: "bearer";
|
|
90
|
+
header: "header";
|
|
91
|
+
}>>;
|
|
92
|
+
authHeaderName: z.ZodOptional<z.ZodString>;
|
|
93
|
+
secret: z.ZodOptional<z.ZodString>;
|
|
94
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
95
|
+
}, z.core.$strip>;
|
|
96
|
+
handler: (args: z.infer<typeof ConnectionUpdateInput>) => Promise<{
|
|
97
|
+
content: {
|
|
98
|
+
type: "text";
|
|
99
|
+
text: string;
|
|
100
|
+
}[];
|
|
101
|
+
}>;
|
|
102
|
+
};
|
|
103
|
+
export declare const ConnectionDeleteInput: z.ZodObject<{
|
|
104
|
+
slug: z.ZodString;
|
|
105
|
+
}, z.core.$strip>;
|
|
106
|
+
export declare function createConnectionDeleteTool(api: ApiClient): {
|
|
107
|
+
name: string;
|
|
108
|
+
description: string;
|
|
109
|
+
inputSchema: z.ZodObject<{
|
|
110
|
+
slug: z.ZodString;
|
|
111
|
+
}, z.core.$strip>;
|
|
112
|
+
handler: (args: z.infer<typeof ConnectionDeleteInput>) => Promise<{
|
|
113
|
+
content: {
|
|
114
|
+
type: "text";
|
|
115
|
+
text: string;
|
|
116
|
+
}[];
|
|
117
|
+
}>;
|
|
118
|
+
};
|
|
119
|
+
export declare const ConnectionToolsInput: z.ZodObject<{
|
|
120
|
+
slug: z.ZodString;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
export declare function createConnectionToolsTool(api: ApiClient): {
|
|
123
|
+
name: string;
|
|
124
|
+
description: string;
|
|
125
|
+
inputSchema: z.ZodObject<{
|
|
126
|
+
slug: z.ZodString;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
handler: (args: z.infer<typeof ConnectionToolsInput>) => Promise<{
|
|
129
|
+
content: {
|
|
130
|
+
type: "text";
|
|
131
|
+
text: string;
|
|
132
|
+
}[];
|
|
133
|
+
}>;
|
|
134
|
+
};
|
|
135
|
+
export declare const ConnectionToolToggleInput: z.ZodObject<{
|
|
136
|
+
slug: z.ZodString;
|
|
137
|
+
tool: z.ZodString;
|
|
138
|
+
enabled: z.ZodBoolean;
|
|
139
|
+
}, z.core.$strip>;
|
|
140
|
+
export declare function createConnectionToolToggleTool(api: ApiClient): {
|
|
141
|
+
name: string;
|
|
142
|
+
description: string;
|
|
143
|
+
inputSchema: z.ZodObject<{
|
|
144
|
+
slug: z.ZodString;
|
|
145
|
+
tool: z.ZodString;
|
|
146
|
+
enabled: z.ZodBoolean;
|
|
147
|
+
}, z.core.$strip>;
|
|
148
|
+
handler: (args: z.infer<typeof ConnectionToolToggleInput>) => Promise<{
|
|
149
|
+
content: {
|
|
150
|
+
type: "text";
|
|
151
|
+
text: string;
|
|
152
|
+
}[];
|
|
153
|
+
}>;
|
|
154
|
+
};
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ApiError } from '../apiClient.js';
|
|
3
|
+
/**
|
|
4
|
+
* Fremde MCP-Server anbinden, ohne das Dashboard zu oeffnen.
|
|
5
|
+
*
|
|
6
|
+
* Angesprochen wird ueber den slug und nicht ueber die Kennung: der slug ist
|
|
7
|
+
* der Name, unter dem ein Agent die Werkzeuge dieses Servers ohnehin schon
|
|
8
|
+
* sieht ("fabbrica__list_customers"), waehrend eine UUID nichts ist, was
|
|
9
|
+
* jemand im Gespraech bei sich hat. Die Kennung holt dieses Modul selbst.
|
|
10
|
+
*
|
|
11
|
+
* Zum Geheimnis: es darf mitgegeben werden, und die Beschreibung sagt, was
|
|
12
|
+
* das kostet - ein Schluessel, der als Argument durch einen Agenten laeuft,
|
|
13
|
+
* steht in dessen Verlauf. Wer das nicht will, legt die Verbindung ohne an
|
|
14
|
+
* und traegt ihn im Dashboard nach.
|
|
15
|
+
*/
|
|
16
|
+
const text = (value) => ({ content: [{ type: 'text', text: value }] });
|
|
17
|
+
const bad = (value) => ({ content: [{ type: 'text', text: value }], isError: true });
|
|
18
|
+
async function attempt(run) {
|
|
19
|
+
try {
|
|
20
|
+
return text(await run());
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
if (e instanceof ApiError) {
|
|
24
|
+
const params = Object.keys(e.params).length ? ` ${JSON.stringify(e.params)}` : '';
|
|
25
|
+
return bad(`${e.code}${params}`);
|
|
26
|
+
}
|
|
27
|
+
return bad('errors.UNKNOWN');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const slug = z
|
|
31
|
+
.string()
|
|
32
|
+
.min(1)
|
|
33
|
+
.max(32)
|
|
34
|
+
.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, 'errors.INVALID_SLUG');
|
|
35
|
+
/** Die eigene, private Verbindung gewinnt: privat und Team duerfen denselben slug tragen. */
|
|
36
|
+
async function bySlug(api, wanted) {
|
|
37
|
+
const { connections } = await api.listConnections();
|
|
38
|
+
const hits = connections.filter((c) => c.slug === wanted);
|
|
39
|
+
return hits.find((c) => c.scope === 'personal') ?? hits[0] ?? null;
|
|
40
|
+
}
|
|
41
|
+
function describe(c) {
|
|
42
|
+
const auth = c.authType === 'none' ? 'no auth' : `${c.authType}, secret ...${c.secretHint ?? '?'}`;
|
|
43
|
+
return `${c.slug} — ${c.name} (${c.scope}, ${c.enabled ? c.status : 'disabled'}, ${auth})\n ${c.url}${c.statusError ? `\n last error: ${c.statusError}` : ''}`;
|
|
44
|
+
}
|
|
45
|
+
export const ListConnectionsInput = z.object({});
|
|
46
|
+
export function createListConnectionsTool(api) {
|
|
47
|
+
return {
|
|
48
|
+
name: 'list_connections',
|
|
49
|
+
description: 'List the MCP servers connected through this OnlyMCP account, with the tool-name prefix each one uses.',
|
|
50
|
+
inputSchema: ListConnectionsInput,
|
|
51
|
+
handler: () => attempt(async () => {
|
|
52
|
+
const { connections } = await api.listConnections();
|
|
53
|
+
if (connections.length === 0) {
|
|
54
|
+
return 'No MCP servers are connected yet. Add one with connection_create.';
|
|
55
|
+
}
|
|
56
|
+
return connections.map(describe).join('\n');
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export const ConnectionCreateInput = z.object({
|
|
61
|
+
name: z.string().min(1).max(80),
|
|
62
|
+
slug,
|
|
63
|
+
url: z.string().url().max(2000),
|
|
64
|
+
transport: z.enum(['http', 'sse']).default('http'),
|
|
65
|
+
authType: z.enum(['none', 'bearer', 'header']).default('none'),
|
|
66
|
+
authHeaderName: z.string().max(80).optional(),
|
|
67
|
+
secret: z.string().max(4000).optional(),
|
|
68
|
+
teamId: z.string().max(64).optional(),
|
|
69
|
+
});
|
|
70
|
+
export function createConnectionCreateTool(api) {
|
|
71
|
+
return {
|
|
72
|
+
name: 'connection_create',
|
|
73
|
+
description: 'Connect a remote MCP server (http or sse only - a stdio server cannot be started on somebody else\'s behalf). It is probed straight away. Passing a secret here puts it into this conversation; leave it out and set it in the dashboard if that matters.',
|
|
74
|
+
inputSchema: ConnectionCreateInput,
|
|
75
|
+
handler: (args) => attempt(async () => {
|
|
76
|
+
const { connection } = await api.createConnection(args);
|
|
77
|
+
return `Connected.\n${describe(connection)}\n\nIts tools are now available as "${connection.slug}__<tool>".`;
|
|
78
|
+
}),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export const ConnectionUpdateInput = z.object({
|
|
82
|
+
slug,
|
|
83
|
+
name: z.string().min(1).max(80).optional(),
|
|
84
|
+
url: z.string().url().max(2000).optional(),
|
|
85
|
+
transport: z.enum(['http', 'sse']).optional(),
|
|
86
|
+
authType: z.enum(['none', 'bearer', 'header']).optional(),
|
|
87
|
+
authHeaderName: z.string().max(80).optional(),
|
|
88
|
+
secret: z.string().max(4000).optional(),
|
|
89
|
+
enabled: z.boolean().optional(),
|
|
90
|
+
});
|
|
91
|
+
export function createConnectionUpdateTool(api) {
|
|
92
|
+
return {
|
|
93
|
+
name: 'connection_update',
|
|
94
|
+
description: 'Change a connected MCP server. Only the fields you pass are touched; url, transport, authType and secret trigger a fresh probe.',
|
|
95
|
+
inputSchema: ConnectionUpdateInput,
|
|
96
|
+
handler: (args) => attempt(async () => {
|
|
97
|
+
const found = await bySlug(api, args.slug);
|
|
98
|
+
if (!found)
|
|
99
|
+
return `Connection not found: ${args.slug}`;
|
|
100
|
+
const { slug: _ignored, ...patch } = args;
|
|
101
|
+
const { connection } = await api.updateConnection(found.id, patch);
|
|
102
|
+
return `Updated.\n${describe(connection)}`;
|
|
103
|
+
}),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export const ConnectionDeleteInput = z.object({ slug });
|
|
107
|
+
export function createConnectionDeleteTool(api) {
|
|
108
|
+
return {
|
|
109
|
+
name: 'connection_delete',
|
|
110
|
+
description: 'Disconnect a remote MCP server and forget its stored credential. Its tools disappear from the gateway.',
|
|
111
|
+
inputSchema: ConnectionDeleteInput,
|
|
112
|
+
handler: (args) => attempt(async () => {
|
|
113
|
+
const found = await bySlug(api, args.slug);
|
|
114
|
+
if (!found)
|
|
115
|
+
return `Connection not found: ${args.slug}`;
|
|
116
|
+
await api.deleteConnection(found.id);
|
|
117
|
+
return `Disconnected ${args.slug}.`;
|
|
118
|
+
}),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export const ConnectionToolsInput = z.object({ slug });
|
|
122
|
+
export function createConnectionToolsTool(api) {
|
|
123
|
+
return {
|
|
124
|
+
name: 'connection_tools',
|
|
125
|
+
description: 'List what one connected server offers, and whether each tool is switched on for the gateway.',
|
|
126
|
+
inputSchema: ConnectionToolsInput,
|
|
127
|
+
handler: (args) => attempt(async () => {
|
|
128
|
+
const found = await bySlug(api, args.slug);
|
|
129
|
+
if (!found)
|
|
130
|
+
return `Connection not found: ${args.slug}`;
|
|
131
|
+
const { capabilities } = await api.listCapabilities(found.id);
|
|
132
|
+
if (capabilities.length === 0) {
|
|
133
|
+
return `${args.slug} has nothing on record yet. Its status is "${found.status}".`;
|
|
134
|
+
}
|
|
135
|
+
return capabilities
|
|
136
|
+
.map((cap) => `${cap.enabled ? '[on] ' : '[off]'} ${cap.kind} ${cap.name}${cap.exposedAs ? ` -> ${cap.exposedAs}` : ''}${cap.description ? ` — ${cap.description}` : ''}`)
|
|
137
|
+
.join('\n');
|
|
138
|
+
}),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export const ConnectionToolToggleInput = z.object({
|
|
142
|
+
slug,
|
|
143
|
+
tool: z.string().min(1).max(200),
|
|
144
|
+
enabled: z.boolean(),
|
|
145
|
+
});
|
|
146
|
+
export function createConnectionToolToggleTool(api) {
|
|
147
|
+
return {
|
|
148
|
+
name: 'connection_tool_toggle',
|
|
149
|
+
description: 'Switch one tool of a connected server on or off. A tool that is off costs no room in any client\'s tool list.',
|
|
150
|
+
inputSchema: ConnectionToolToggleInput,
|
|
151
|
+
handler: (args) => attempt(async () => {
|
|
152
|
+
const found = await bySlug(api, args.slug);
|
|
153
|
+
if (!found)
|
|
154
|
+
return `Connection not found: ${args.slug}`;
|
|
155
|
+
const { capabilities } = await api.listCapabilities(found.id);
|
|
156
|
+
const cap = capabilities.find((x) => x.kind === 'tool' && x.name === args.tool);
|
|
157
|
+
if (!cap)
|
|
158
|
+
return `${args.slug} offers no tool called ${args.tool}.`;
|
|
159
|
+
await api.toggleCapability(found.id, cap.id, args.enabled);
|
|
160
|
+
return `${args.slug}__${cap.name} is now ${args.enabled ? 'on' : 'off'}.`;
|
|
161
|
+
}),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=connections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.js","sourceRoot":"","sources":["../../src/tools/connections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ApiClient } from '../apiClient.js';
|
|
3
|
+
export declare const SkillWriteInput: z.ZodObject<{
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
body: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export declare function createSkillWriteTool(api: ApiClient): {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
inputSchema: z.ZodObject<{
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
body: z.ZodString;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
handler: (args: z.infer<typeof SkillWriteInput>) => Promise<{
|
|
15
|
+
content: {
|
|
16
|
+
type: "text";
|
|
17
|
+
text: string;
|
|
18
|
+
}[];
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
21
|
+
export declare const SkillDeleteInput: z.ZodObject<{
|
|
22
|
+
name: z.ZodString;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export declare function createSkillDeleteTool(api: ApiClient): {
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
inputSchema: z.ZodObject<{
|
|
28
|
+
name: z.ZodString;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
handler: (args: z.infer<typeof SkillDeleteInput>) => Promise<{
|
|
31
|
+
content: {
|
|
32
|
+
type: "text";
|
|
33
|
+
text: string;
|
|
34
|
+
}[];
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
export declare const ListSkillFilesInput: z.ZodObject<{
|
|
38
|
+
skill: z.ZodString;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
export declare function createListSkillFilesTool(api: ApiClient): {
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
inputSchema: z.ZodObject<{
|
|
44
|
+
skill: z.ZodString;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
handler: (args: z.infer<typeof ListSkillFilesInput>) => Promise<{
|
|
47
|
+
content: {
|
|
48
|
+
type: "text";
|
|
49
|
+
text: string;
|
|
50
|
+
}[];
|
|
51
|
+
}>;
|
|
52
|
+
};
|
|
53
|
+
export declare const SkillFileWriteInput: z.ZodObject<{
|
|
54
|
+
skill: z.ZodString;
|
|
55
|
+
path: z.ZodString;
|
|
56
|
+
content: z.ZodString;
|
|
57
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
58
|
+
utf8: "utf8";
|
|
59
|
+
base64: "base64";
|
|
60
|
+
}>>;
|
|
61
|
+
}, z.core.$strip>;
|
|
62
|
+
export declare function createSkillFileWriteTool(api: ApiClient): {
|
|
63
|
+
name: string;
|
|
64
|
+
description: string;
|
|
65
|
+
inputSchema: z.ZodObject<{
|
|
66
|
+
skill: z.ZodString;
|
|
67
|
+
path: z.ZodString;
|
|
68
|
+
content: z.ZodString;
|
|
69
|
+
encoding: z.ZodDefault<z.ZodEnum<{
|
|
70
|
+
utf8: "utf8";
|
|
71
|
+
base64: "base64";
|
|
72
|
+
}>>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
handler: (args: z.infer<typeof SkillFileWriteInput>) => Promise<{
|
|
75
|
+
content: {
|
|
76
|
+
type: "text";
|
|
77
|
+
text: string;
|
|
78
|
+
}[];
|
|
79
|
+
}>;
|
|
80
|
+
};
|
|
81
|
+
export declare const SkillFileDeleteInput: z.ZodObject<{
|
|
82
|
+
skill: z.ZodString;
|
|
83
|
+
path: z.ZodString;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export declare function createSkillFileDeleteTool(api: ApiClient): {
|
|
86
|
+
name: string;
|
|
87
|
+
description: string;
|
|
88
|
+
inputSchema: z.ZodObject<{
|
|
89
|
+
skill: z.ZodString;
|
|
90
|
+
path: z.ZodString;
|
|
91
|
+
}, z.core.$strip>;
|
|
92
|
+
handler: (args: z.infer<typeof SkillFileDeleteInput>) => Promise<{
|
|
93
|
+
content: {
|
|
94
|
+
type: "text";
|
|
95
|
+
text: string;
|
|
96
|
+
}[];
|
|
97
|
+
}>;
|
|
98
|
+
};
|
|
99
|
+
export declare const AgentWriteInput: z.ZodObject<{
|
|
100
|
+
name: z.ZodString;
|
|
101
|
+
description: z.ZodString;
|
|
102
|
+
body: z.ZodString;
|
|
103
|
+
model: z.ZodOptional<z.ZodString>;
|
|
104
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
105
|
+
}, z.core.$strip>;
|
|
106
|
+
export declare function createAgentWriteTool(api: ApiClient): {
|
|
107
|
+
name: string;
|
|
108
|
+
description: string;
|
|
109
|
+
inputSchema: z.ZodObject<{
|
|
110
|
+
name: z.ZodString;
|
|
111
|
+
description: z.ZodString;
|
|
112
|
+
body: z.ZodString;
|
|
113
|
+
model: z.ZodOptional<z.ZodString>;
|
|
114
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
115
|
+
}, z.core.$strip>;
|
|
116
|
+
handler: (args: z.infer<typeof AgentWriteInput>) => Promise<{
|
|
117
|
+
content: {
|
|
118
|
+
type: "text";
|
|
119
|
+
text: string;
|
|
120
|
+
}[];
|
|
121
|
+
}>;
|
|
122
|
+
};
|
|
123
|
+
export declare const AgentDeleteInput: z.ZodObject<{
|
|
124
|
+
name: z.ZodString;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
export declare function createAgentDeleteTool(api: ApiClient): {
|
|
127
|
+
name: string;
|
|
128
|
+
description: string;
|
|
129
|
+
inputSchema: z.ZodObject<{
|
|
130
|
+
name: z.ZodString;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
handler: (args: z.infer<typeof AgentDeleteInput>) => Promise<{
|
|
133
|
+
content: {
|
|
134
|
+
type: "text";
|
|
135
|
+
text: string;
|
|
136
|
+
}[];
|
|
137
|
+
}>;
|
|
138
|
+
};
|
|
139
|
+
export declare const ListMemoryInput: z.ZodObject<{}, z.core.$strip>;
|
|
140
|
+
export declare function createListMemoryTool(api: ApiClient): {
|
|
141
|
+
name: string;
|
|
142
|
+
description: string;
|
|
143
|
+
inputSchema: z.ZodObject<{}, z.core.$strip>;
|
|
144
|
+
handler: () => Promise<{
|
|
145
|
+
content: {
|
|
146
|
+
type: "text";
|
|
147
|
+
text: string;
|
|
148
|
+
}[];
|
|
149
|
+
}>;
|
|
150
|
+
};
|
|
151
|
+
export declare const MemoryDeleteInput: z.ZodObject<{
|
|
152
|
+
path: z.ZodString;
|
|
153
|
+
}, z.core.$strip>;
|
|
154
|
+
export declare function createMemoryDeleteTool(api: ApiClient): {
|
|
155
|
+
name: string;
|
|
156
|
+
description: string;
|
|
157
|
+
inputSchema: z.ZodObject<{
|
|
158
|
+
path: z.ZodString;
|
|
159
|
+
}, z.core.$strip>;
|
|
160
|
+
handler: (args: z.infer<typeof MemoryDeleteInput>) => Promise<{
|
|
161
|
+
content: {
|
|
162
|
+
type: "text";
|
|
163
|
+
text: string;
|
|
164
|
+
}[];
|
|
165
|
+
}>;
|
|
166
|
+
};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ApiError } from '../apiClient.js';
|
|
3
|
+
import { isSafeMemoryPath } from '../memoryPath.js';
|
|
4
|
+
import { isSafeSkillFilePath } from '../skillFilePath.js';
|
|
5
|
+
/**
|
|
6
|
+
* Anlegen, Aendern und Loeschen ueber den stdio-Server.
|
|
7
|
+
*
|
|
8
|
+
* Bis 0.9.0 konnte dieser Server lesen und genau eine Sache schreiben:
|
|
9
|
+
* memory_write. Ein Skill liess sich damit laden, aber nicht anlegen - dafuer
|
|
10
|
+
* blieben das Dashboard oder `npx onlymcp import`. Das war nie ein Entscheid,
|
|
11
|
+
* es war eine Luecke: die API konnte es die ganze Zeit.
|
|
12
|
+
*
|
|
13
|
+
* Die Rechtepruefung sitzt im Server, nicht hier. Dieser Client schickt die
|
|
14
|
+
* Anfrage und gibt den Fehlercode weiter, den er zurueckbekommt - `errors.
|
|
15
|
+
* FORBIDDEN` heisst dann, dass ein Team-Recht fehlt, und der Agent liest das
|
|
16
|
+
* und hoert auf, es zu versuchen.
|
|
17
|
+
*/
|
|
18
|
+
const text = (value) => ({ content: [{ type: 'text', text: value }] });
|
|
19
|
+
const bad = (value) => ({ content: [{ type: 'text', text: value }], isError: true });
|
|
20
|
+
/** Jeder Aufruf endet entweder in einer Antwort oder in einem Fehlercode. */
|
|
21
|
+
async function attempt(run) {
|
|
22
|
+
try {
|
|
23
|
+
return text(await run());
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
if (e instanceof ApiError) {
|
|
27
|
+
const params = Object.keys(e.params).length ? ` ${JSON.stringify(e.params)}` : '';
|
|
28
|
+
return bad(`${e.code}${params}`);
|
|
29
|
+
}
|
|
30
|
+
return bad('errors.UNKNOWN');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const skillNameSchema = z
|
|
34
|
+
.string()
|
|
35
|
+
.min(1)
|
|
36
|
+
.max(64)
|
|
37
|
+
.regex(/^[a-z0-9]+(-[a-z0-9]+)*$/, 'errors.INVALID_NAME');
|
|
38
|
+
export const SkillWriteInput = z.object({
|
|
39
|
+
name: skillNameSchema,
|
|
40
|
+
body: z.string().max(200_000),
|
|
41
|
+
});
|
|
42
|
+
export function createSkillWriteTool(api) {
|
|
43
|
+
return {
|
|
44
|
+
name: 'skill_write',
|
|
45
|
+
description: 'Create a skill or replace the body of an existing one. The body is the whole SKILL.md, frontmatter included.',
|
|
46
|
+
inputSchema: SkillWriteInput,
|
|
47
|
+
handler: (args) => attempt(async () => {
|
|
48
|
+
const res = await api.putSkill(args.name, args.body);
|
|
49
|
+
return `${res.name} ${res.updatedAt}`;
|
|
50
|
+
}),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export const SkillDeleteInput = z.object({ name: skillNameSchema });
|
|
54
|
+
export function createSkillDeleteTool(api) {
|
|
55
|
+
return {
|
|
56
|
+
name: 'skill_delete',
|
|
57
|
+
description: 'Delete one skill and every file that belongs to it. This cannot be undone.',
|
|
58
|
+
inputSchema: SkillDeleteInput,
|
|
59
|
+
handler: (args) => attempt(async () => {
|
|
60
|
+
await api.deleteSkill(args.name);
|
|
61
|
+
return `Deleted skill ${args.name}`;
|
|
62
|
+
}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export const ListSkillFilesInput = z.object({ skill: skillNameSchema });
|
|
66
|
+
export function createListSkillFilesTool(api) {
|
|
67
|
+
return {
|
|
68
|
+
name: 'list_skill_files',
|
|
69
|
+
description: 'List the companion files of one skill, with their size in bytes.',
|
|
70
|
+
inputSchema: ListSkillFilesInput,
|
|
71
|
+
handler: (args) => attempt(async () => {
|
|
72
|
+
const { files } = await api.getSkill(args.skill);
|
|
73
|
+
if (files.length === 0)
|
|
74
|
+
return `${args.skill} has no companion files.`;
|
|
75
|
+
return files.map((f) => `${f.path} (${f.size} bytes, ${f.encoding})`).join('\n');
|
|
76
|
+
}),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export const SkillFileWriteInput = z.object({
|
|
80
|
+
skill: skillNameSchema,
|
|
81
|
+
path: z.string().min(1).max(256),
|
|
82
|
+
content: z.string().max(3_000_000),
|
|
83
|
+
encoding: z.enum(['utf8', 'base64']).default('utf8'),
|
|
84
|
+
});
|
|
85
|
+
export function createSkillFileWriteTool(api) {
|
|
86
|
+
return {
|
|
87
|
+
name: 'skill_file_write',
|
|
88
|
+
description: 'Create or replace one companion file of a skill. Use encoding base64 for anything that is not text.',
|
|
89
|
+
inputSchema: SkillFileWriteInput,
|
|
90
|
+
handler: (args) => {
|
|
91
|
+
if (!isSafeSkillFilePath(args.path))
|
|
92
|
+
return Promise.resolve(bad('errors.INVALID_PATH'));
|
|
93
|
+
return attempt(async () => {
|
|
94
|
+
const res = await api.putSkillFile(args.skill, args.path, args.content, args.encoding);
|
|
95
|
+
return `${args.skill}/${res.path} ${res.size} bytes`;
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export const SkillFileDeleteInput = z.object({
|
|
101
|
+
skill: skillNameSchema,
|
|
102
|
+
path: z.string().min(1).max(256),
|
|
103
|
+
});
|
|
104
|
+
export function createSkillFileDeleteTool(api) {
|
|
105
|
+
return {
|
|
106
|
+
name: 'skill_file_delete',
|
|
107
|
+
description: 'Delete one companion file of a skill. The skill itself stays.',
|
|
108
|
+
inputSchema: SkillFileDeleteInput,
|
|
109
|
+
handler: (args) => {
|
|
110
|
+
if (!isSafeSkillFilePath(args.path))
|
|
111
|
+
return Promise.resolve(bad('errors.INVALID_PATH'));
|
|
112
|
+
return attempt(async () => {
|
|
113
|
+
await api.deleteSkillFile(args.skill, args.path);
|
|
114
|
+
return `Deleted ${args.skill}/${args.path}`;
|
|
115
|
+
});
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export const AgentWriteInput = z.object({
|
|
120
|
+
name: skillNameSchema,
|
|
121
|
+
description: z.string().min(1).max(1000),
|
|
122
|
+
body: z.string().max(200_000),
|
|
123
|
+
model: z.string().max(64).optional(),
|
|
124
|
+
tools: z.array(z.string().max(128)).max(200).optional(),
|
|
125
|
+
});
|
|
126
|
+
export function createAgentWriteTool(api) {
|
|
127
|
+
return {
|
|
128
|
+
name: 'agent_write',
|
|
129
|
+
description: 'Create an agent or replace an existing one. Leave model out to keep the one it already has.',
|
|
130
|
+
inputSchema: AgentWriteInput,
|
|
131
|
+
handler: (args) => attempt(async () => {
|
|
132
|
+
// Die REST-Route ersetzt die ganze Zeile, anders als das Werkzeug am
|
|
133
|
+
// entfernten Gateway. Also erst lesen, was da ist, damit ein
|
|
134
|
+
// Nachfuehren der Beschreibung nicht stillschweigend das Modell
|
|
135
|
+
// abraeumt - ein Agent ohne model laeuft danach auf dem Modell der
|
|
136
|
+
// Hauptsitzung.
|
|
137
|
+
const before = await api.getAgent(args.name).catch(() => null);
|
|
138
|
+
const res = await api.putAgent(args.name, {
|
|
139
|
+
description: args.description,
|
|
140
|
+
body: args.body,
|
|
141
|
+
model: args.model ?? before?.model ?? undefined,
|
|
142
|
+
tools: args.tools ?? before?.tools ?? [],
|
|
143
|
+
});
|
|
144
|
+
return `${res.name} ${res.updatedAt}`;
|
|
145
|
+
}),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export const AgentDeleteInput = z.object({ name: skillNameSchema });
|
|
149
|
+
export function createAgentDeleteTool(api) {
|
|
150
|
+
return {
|
|
151
|
+
name: 'agent_delete',
|
|
152
|
+
description: 'Delete one agent. This cannot be undone.',
|
|
153
|
+
inputSchema: AgentDeleteInput,
|
|
154
|
+
handler: (args) => attempt(async () => {
|
|
155
|
+
await api.deleteAgent(args.name);
|
|
156
|
+
return `Deleted agent ${args.name}`;
|
|
157
|
+
}),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
export const ListMemoryInput = z.object({});
|
|
161
|
+
export function createListMemoryTool(api) {
|
|
162
|
+
return {
|
|
163
|
+
name: 'list_memory',
|
|
164
|
+
description: 'List the paths of every memory file in this account, private and team.',
|
|
165
|
+
inputSchema: ListMemoryInput,
|
|
166
|
+
handler: () => attempt(async () => {
|
|
167
|
+
const { files } = await api.listMemory();
|
|
168
|
+
if (files.length === 0)
|
|
169
|
+
return '(none)';
|
|
170
|
+
return files
|
|
171
|
+
.map((f) => f.path + (f.scope === 'team' ? ` (team${f.teamName ? `: ${f.teamName}` : ''})` : ''))
|
|
172
|
+
.sort()
|
|
173
|
+
.join('\n');
|
|
174
|
+
}),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export const MemoryDeleteInput = z.object({ path: z.string().min(3).max(256) });
|
|
178
|
+
export function createMemoryDeleteTool(api) {
|
|
179
|
+
return {
|
|
180
|
+
name: 'memory_delete',
|
|
181
|
+
description: 'Delete one memory file. This cannot be undone.',
|
|
182
|
+
inputSchema: MemoryDeleteInput,
|
|
183
|
+
handler: (args) => {
|
|
184
|
+
if (!isSafeMemoryPath(args.path))
|
|
185
|
+
return Promise.resolve(bad('errors.INVALID_PATH'));
|
|
186
|
+
return attempt(async () => {
|
|
187
|
+
await api.deleteMemory(args.path);
|
|
188
|
+
return `Deleted ${args.path}`;
|
|
189
|
+
});
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "onlymcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Skills, Agents und Memory aus der OnlyMCP-Cloud in jedem MCP-Client. Enthaelt den stdio-MCP-Server und die CLI zum Einrichten von Claude Code, Codex und Gemini CLI.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Francesco Palazzo",
|