@journal.one/gateway 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @journal.one/gateway
2
+
3
+ The Journal Gateway connects MCP servers and skills running in your network to [Journal](https://journal.one). It connects outbound — your credentials never leave your infrastructure and you don't need to open any inbound ports.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @journal.one/gateway
9
+ ```
10
+
11
+ ## Quick start
12
+
13
+ Create a config file (`gateway.json`):
14
+
15
+ ```json
16
+ {
17
+ "mcpServers": [
18
+ {
19
+ "id": "postgresql",
20
+ "command": "npx",
21
+ "args": ["-y", "@modelcontextprotocol/server-postgres"],
22
+ "name": "PostgreSQL",
23
+ "envVars": { "DATABASE_URL": "DATABASE_URL" }
24
+ }
25
+ ]
26
+ }
27
+ ```
28
+
29
+ Run the gateway:
30
+
31
+ ```bash
32
+ JOURNAL_GATEWAY_TOKEN=gw_your_token journal-gateway --config gateway.json
33
+ ```
34
+
35
+ The gateway authenticates, announces its tools, and waits for requests from Journal. MCP servers are started on demand and their tools are made available automatically.
36
+
37
+ ## Transports
38
+
39
+ MCP servers can connect via three transports:
40
+
41
+ - **`stdio`** (default) — local subprocess (`command` + `args`)
42
+ - **`sse`** — legacy SSE-based remote servers
43
+ - **`streamable-http`** — current MCP spec recommendation for remote servers
44
+
45
+ ## Full documentation
46
+
47
+ See the [root README](https://github.com/journal-ai/journal-edge#readme) for the complete configuration reference, environment variables, protocol details, and Docker usage.
48
+
49
+ ## License
50
+
51
+ MIT
package/dist/config.d.ts CHANGED
@@ -1,64 +1,197 @@
1
1
  import { z } from "zod";
2
2
  import type { GatewayConfig } from "@journal.one/gateway-protocol";
3
- export interface McpServerConfig {
3
+ declare const StdioServerSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ description: z.ZodDefault<z.ZodString>;
7
+ } & {
8
+ transport: z.ZodLiteral<"stdio">;
9
+ command: z.ZodString;
10
+ args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
11
+ envVars: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
12
+ }, "strip", z.ZodTypeAny, {
4
13
  id: string;
5
- type: "mcp_server";
6
- name: string;
7
14
  description: string;
15
+ transport: "stdio";
8
16
  command: string;
9
17
  args: string[];
10
18
  envVars: Record<string, string>;
11
- }
19
+ name?: string | undefined;
20
+ }, {
21
+ id: string;
22
+ transport: "stdio";
23
+ command: string;
24
+ name?: string | undefined;
25
+ description?: string | undefined;
26
+ args?: string[] | undefined;
27
+ envVars?: Record<string, string> | undefined;
28
+ }>;
29
+ declare const SseServerSchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ name: z.ZodOptional<z.ZodString>;
32
+ description: z.ZodDefault<z.ZodString>;
33
+ } & {
34
+ transport: z.ZodLiteral<"sse">;
35
+ url: z.ZodString;
36
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ id: string;
39
+ description: string;
40
+ transport: "sse";
41
+ url: string;
42
+ headers: Record<string, string>;
43
+ name?: string | undefined;
44
+ }, {
45
+ id: string;
46
+ transport: "sse";
47
+ url: string;
48
+ name?: string | undefined;
49
+ description?: string | undefined;
50
+ headers?: Record<string, string> | undefined;
51
+ }>;
52
+ declare const StreamableHttpServerSchema: z.ZodObject<{
53
+ id: z.ZodString;
54
+ name: z.ZodOptional<z.ZodString>;
55
+ description: z.ZodDefault<z.ZodString>;
56
+ } & {
57
+ transport: z.ZodLiteral<"streamable-http">;
58
+ url: z.ZodString;
59
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ id: string;
62
+ description: string;
63
+ transport: "streamable-http";
64
+ url: string;
65
+ headers: Record<string, string>;
66
+ name?: string | undefined;
67
+ }, {
68
+ id: string;
69
+ transport: "streamable-http";
70
+ url: string;
71
+ name?: string | undefined;
72
+ description?: string | undefined;
73
+ headers?: Record<string, string> | undefined;
74
+ }>;
75
+ export type StdioServerConfig = z.infer<typeof StdioServerSchema> & {
76
+ type: "mcp_server";
77
+ name: string;
78
+ };
79
+ export type SseServerConfig = z.infer<typeof SseServerSchema> & {
80
+ type: "mcp_server";
81
+ name: string;
82
+ };
83
+ export type StreamableHttpServerConfig = z.infer<typeof StreamableHttpServerSchema> & {
84
+ type: "mcp_server";
85
+ name: string;
86
+ };
87
+ export type McpServerConfig = StdioServerConfig | SseServerConfig | StreamableHttpServerConfig;
12
88
  export type RuntimeConfig = GatewayConfig & {
13
89
  mcpServers: McpServerConfig[];
14
90
  mcpEnvVars: Map<string, Record<string, string>>;
15
91
  skillsDir: string | null;
16
92
  };
17
93
  export declare const GatewayConfigFileSchema: z.ZodObject<{
18
- mcpServers: z.ZodDefault<z.ZodArray<z.ZodObject<{
94
+ mcpServers: z.ZodPipeline<z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodUnknown, "many">>, unknown[], unknown[] | undefined>, z.ZodArray<z.ZodDiscriminatedUnion<"transport", [z.ZodObject<{
19
95
  id: z.ZodString;
20
- command: z.ZodString;
21
- args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
22
96
  name: z.ZodOptional<z.ZodString>;
23
97
  description: z.ZodDefault<z.ZodString>;
98
+ } & {
99
+ transport: z.ZodLiteral<"stdio">;
100
+ command: z.ZodString;
101
+ args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
24
102
  envVars: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
25
103
  }, "strip", z.ZodTypeAny, {
26
104
  id: string;
105
+ description: string;
106
+ transport: "stdio";
27
107
  command: string;
28
108
  args: string[];
29
- description: string;
30
109
  envVars: Record<string, string>;
31
110
  name?: string | undefined;
32
111
  }, {
33
112
  id: string;
113
+ transport: "stdio";
34
114
  command: string;
35
- args?: string[] | undefined;
36
115
  name?: string | undefined;
37
116
  description?: string | undefined;
117
+ args?: string[] | undefined;
38
118
  envVars?: Record<string, string> | undefined;
39
- }>, "many">>;
119
+ }>, z.ZodObject<{
120
+ id: z.ZodString;
121
+ name: z.ZodOptional<z.ZodString>;
122
+ description: z.ZodDefault<z.ZodString>;
123
+ } & {
124
+ transport: z.ZodLiteral<"sse">;
125
+ url: z.ZodString;
126
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
127
+ }, "strip", z.ZodTypeAny, {
128
+ id: string;
129
+ description: string;
130
+ transport: "sse";
131
+ url: string;
132
+ headers: Record<string, string>;
133
+ name?: string | undefined;
134
+ }, {
135
+ id: string;
136
+ transport: "sse";
137
+ url: string;
138
+ name?: string | undefined;
139
+ description?: string | undefined;
140
+ headers?: Record<string, string> | undefined;
141
+ }>, z.ZodObject<{
142
+ id: z.ZodString;
143
+ name: z.ZodOptional<z.ZodString>;
144
+ description: z.ZodDefault<z.ZodString>;
145
+ } & {
146
+ transport: z.ZodLiteral<"streamable-http">;
147
+ url: z.ZodString;
148
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ id: string;
151
+ description: string;
152
+ transport: "streamable-http";
153
+ url: string;
154
+ headers: Record<string, string>;
155
+ name?: string | undefined;
156
+ }, {
157
+ id: string;
158
+ transport: "streamable-http";
159
+ url: string;
160
+ name?: string | undefined;
161
+ description?: string | undefined;
162
+ headers?: Record<string, string> | undefined;
163
+ }>]>, "many">>;
40
164
  skillsDir: z.ZodDefault<z.ZodNullable<z.ZodString>>;
41
165
  }, "strip", z.ZodTypeAny, {
42
- mcpServers: {
166
+ mcpServers: ({
43
167
  id: string;
168
+ description: string;
169
+ transport: "stdio";
44
170
  command: string;
45
171
  args: string[];
46
- description: string;
47
172
  envVars: Record<string, string>;
48
173
  name?: string | undefined;
49
- }[];
50
- skillsDir: string | null;
51
- }, {
52
- mcpServers?: {
174
+ } | {
53
175
  id: string;
54
- command: string;
55
- args?: string[] | undefined;
176
+ description: string;
177
+ transport: "sse";
178
+ url: string;
179
+ headers: Record<string, string>;
56
180
  name?: string | undefined;
57
- description?: string | undefined;
58
- envVars?: Record<string, string> | undefined;
59
- }[] | undefined;
181
+ } | {
182
+ id: string;
183
+ description: string;
184
+ transport: "streamable-http";
185
+ url: string;
186
+ headers: Record<string, string>;
187
+ name?: string | undefined;
188
+ })[];
189
+ skillsDir: string | null;
190
+ }, {
191
+ mcpServers?: unknown[] | undefined;
60
192
  skillsDir?: string | null | undefined;
61
193
  }>;
62
194
  export type GatewayConfigFile = z.infer<typeof GatewayConfigFileSchema>;
63
195
  export declare function parseConfig(env?: Record<string, string | undefined>, argv?: string[]): RuntimeConfig;
196
+ export {};
64
197
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC1C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAiBF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAwBxE,wBAAgB,WAAW,CACzB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,IAAI,GAAE,MAAM,EAAiB,GAC5B,aAAa,CAyEf"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAUnE,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;EAKrB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;EAInB,CAAC;AAEH,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;EAI9B,CAAC;AAUH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GAAG;IAClE,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GAAG;IAC9D,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,0BAA0B,CAClC,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,eAAe,GACf,0BAA0B,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAC1C,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AA4BF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAwBxE,wBAAgB,WAAW,CACzB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,IAAI,GAAE,MAAM,EAAiB,GAC5B,aAAa,CAoFf"}
package/dist/config.js CHANGED
@@ -1,20 +1,58 @@
1
1
  import { z } from "zod";
2
2
  import { readFileSync } from "node:fs";
3
- const OperationalSchema = z.object({
4
- token: z.string().min(1, "JOURNAL_GATEWAY_TOKEN is required"),
5
- url: z.string().url(),
6
- logLevel: z.enum(["debug", "info", "warn", "error"]),
7
- });
8
- const McpServerConfigSchema = z.object({
3
+ // --- Discriminated union for MCP server configs ---
4
+ const McpServerBaseSchema = z.object({
9
5
  id: z.string().min(1, "Each MCP server must have an id"),
10
- command: z.string().min(1, "Each MCP server must have a command"),
11
- args: z.array(z.string()).default([]),
12
6
  name: z.string().optional(),
13
7
  description: z.string().default(""),
8
+ });
9
+ const StdioServerSchema = McpServerBaseSchema.extend({
10
+ transport: z.literal("stdio"),
11
+ command: z.string().min(1, "stdio transport requires a command"),
12
+ args: z.array(z.string()).default([]),
14
13
  envVars: z.record(z.string()).default({}),
15
14
  });
15
+ const SseServerSchema = McpServerBaseSchema.extend({
16
+ transport: z.literal("sse"),
17
+ url: z.string().url("sse transport requires a valid url"),
18
+ headers: z.record(z.string()).default({}),
19
+ });
20
+ const StreamableHttpServerSchema = McpServerBaseSchema.extend({
21
+ transport: z.literal("streamable-http"),
22
+ url: z.string().url("streamable-http transport requires a valid url"),
23
+ headers: z.record(z.string()).default({}),
24
+ });
25
+ const McpServerConfigSchema = z.discriminatedUnion("transport", [
26
+ StdioServerSchema,
27
+ SseServerSchema,
28
+ StreamableHttpServerSchema,
29
+ ]);
30
+ const OperationalSchema = z.object({
31
+ token: z.string().min(1, "JOURNAL_GATEWAY_TOKEN is required"),
32
+ url: z.string().url(),
33
+ logLevel: z.enum(["debug", "info", "warn", "error"]),
34
+ });
35
+ /**
36
+ * Backward compat: inject `transport: "stdio"` into objects that have
37
+ * `command` but no `transport` field.
38
+ */
39
+ function preprocessMcpServers(servers) {
40
+ return servers.map((s) => {
41
+ if (typeof s === "object" &&
42
+ s !== null &&
43
+ "command" in s &&
44
+ !("transport" in s)) {
45
+ return { ...s, transport: "stdio" };
46
+ }
47
+ return s;
48
+ });
49
+ }
16
50
  export const GatewayConfigFileSchema = z.object({
17
- mcpServers: z.array(McpServerConfigSchema).default([]),
51
+ mcpServers: z
52
+ .array(z.unknown())
53
+ .default([])
54
+ .transform((servers) => preprocessMcpServers(servers))
55
+ .pipe(z.array(McpServerConfigSchema)),
18
56
  skillsDir: z.string().nullable().default(null),
19
57
  });
20
58
  function parseCliConfigArg(argv) {
@@ -74,26 +112,35 @@ export function parseConfig(env = process.env, argv = process.argv) {
74
112
  if (configFile.mcpServers.length === 0 && !configFile.skillsDir) {
75
113
  console.warn("Warning: no mcpServers or skillsDir configured. The gateway will connect but have no tools or skills to offer.");
76
114
  }
77
- // Build McpServerConfig[] and resolve envVars
115
+ // Build McpServerConfig[] and resolve envVars / headers
78
116
  const mcpServers = [];
79
117
  const mcpEnvVars = new Map();
80
118
  for (const server of configFile.mcpServers) {
81
119
  const config = {
82
- id: server.id,
120
+ ...server,
83
121
  type: "mcp_server",
84
122
  name: server.name ?? server.id,
85
- description: server.description,
86
- command: server.command,
87
- args: server.args,
88
- envVars: server.envVars,
89
123
  };
90
124
  const resolvedEnv = {};
91
- for (const [hostVar, serverVar] of Object.entries(config.envVars)) {
92
- const value = env[hostVar];
93
- if (!value) {
94
- throw new Error(`MCP server "${config.id}" requires environment variable ${hostVar}`);
125
+ if (config.transport === "stdio") {
126
+ // Resolve envVars mapping: { hostVar: serverVar }
127
+ for (const [hostVar, serverVar] of Object.entries(config.envVars)) {
128
+ const value = env[hostVar];
129
+ if (!value) {
130
+ throw new Error(`MCP server "${config.id}" requires environment variable ${hostVar}`);
131
+ }
132
+ resolvedEnv[serverVar] = value;
133
+ }
134
+ }
135
+ else {
136
+ // SSE / streamable-http: resolve headers mapping { headerName: envVarName }
137
+ for (const [headerName, envVarName] of Object.entries(config.headers)) {
138
+ const value = env[envVarName];
139
+ if (!value) {
140
+ throw new Error(`MCP server "${config.id}" requires environment variable ${envVarName} for header "${headerName}"`);
141
+ }
142
+ resolvedEnv[headerName] = value;
95
143
  }
96
- resolvedEnv[serverVar] = value;
97
144
  }
98
145
  mcpServers.push(config);
99
146
  mcpEnvVars.set(config.id, resolvedEnv);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare class McpClient extends EventEmitter<McpClientEvents> {
14
14
  private transport;
15
15
  private running;
16
16
  constructor(definition: McpServerConfig, env: Record<string, string>, logger: Logger);
17
+ private createTransport;
17
18
  start(): Promise<void>;
18
19
  listTools(): Promise<ToolDefinition[]>;
19
20
  callTool(name: string, args: Record<string, unknown>): Promise<ToolResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAgB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,aAAa,EAAE,EAAE,CAAC;CACnB;AAED,qBAAa,SAAU,SAAQ,YAAY,CAAC,eAAe,CAAC;IAMxD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,OAAO,CAAS;gBAGd,UAAU,EAAE,eAAe,EAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,MAAM,EAAE,MAAM;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CtB,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWtC,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC;IAwBhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,SAAS,IAAI,OAAO;IAIpB,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAgB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,aAAa,EAAE,EAAE,CAAC;CACnB;AAED,qBAAa,SAAU,SAAQ,YAAY,CAAC,eAAe,CAAC;IAMxD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,OAAO,CAAS;gBAGd,UAAU,EAAE,eAAe,EAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,MAAM,EAAE,MAAM;IAKxB,OAAO,CAAC,eAAe;IAsBjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CtB,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWtC,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC;IAwBhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,SAAS,IAAI,OAAO;IAIpB,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
@@ -1,5 +1,7 @@
1
1
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
2
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
4
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
3
5
  import { ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
4
6
  import { VERSION } from "./version.js";
5
7
  import { EventEmitter } from "node:events";
@@ -16,21 +18,32 @@ export class McpClient extends EventEmitter {
16
18
  this.env = env;
17
19
  this.logger = logger;
18
20
  }
21
+ createTransport() {
22
+ switch (this.definition.transport) {
23
+ case "stdio":
24
+ return new StdioClientTransport({
25
+ command: this.definition.command,
26
+ args: this.definition.args,
27
+ env: { ...process.env, ...this.env },
28
+ });
29
+ case "sse":
30
+ return new SSEClientTransport(new URL(this.definition.url), {
31
+ requestInit: { headers: this.env },
32
+ });
33
+ case "streamable-http":
34
+ return new StreamableHTTPClientTransport(new URL(this.definition.url), { requestInit: { headers: this.env } });
35
+ }
36
+ }
19
37
  async start() {
20
- this.logger.info(`Starting MCP process for integration "${this.definition.id}"`, {
21
- command: this.definition.command,
22
- args: this.definition.args,
23
- });
24
- this.transport = new StdioClientTransport({
25
- command: this.definition.command,
26
- args: this.definition.args,
27
- env: { ...process.env, ...this.env },
28
- });
38
+ this.logger.info(`Starting MCP ${this.definition.transport} transport for integration "${this.definition.id}"`, this.definition.transport === "stdio"
39
+ ? { command: this.definition.command, args: this.definition.args }
40
+ : { url: this.definition.url });
41
+ this.transport = this.createTransport();
29
42
  this.client = new Client({ name: `journal-gateway/${this.definition.id}`, version: VERSION }, { capabilities: {} });
30
43
  this.transport.onclose = () => {
31
44
  if (this.running) {
32
45
  this.running = false;
33
- const err = new Error(`MCP process for integration "${this.definition.id}" exited unexpectedly`);
46
+ const err = new Error(`MCP ${this.definition.transport} transport for integration "${this.definition.id}" closed unexpectedly`);
34
47
  this.logger.error(err.message);
35
48
  this.emit("crash", err);
36
49
  }
@@ -41,7 +54,7 @@ export class McpClient extends EventEmitter {
41
54
  this.logger.info(`MCP server "${this.definition.id}" reported tools changed`);
42
55
  this.emit("tools_changed");
43
56
  });
44
- this.logger.info(`MCP process for integration "${this.definition.id}" started successfully`);
57
+ this.logger.info(`MCP ${this.definition.transport} transport for integration "${this.definition.id}" started successfully`);
45
58
  }
46
59
  async listTools() {
47
60
  if (!this.client)
@@ -79,7 +92,7 @@ export class McpClient extends EventEmitter {
79
92
  this.transport = null;
80
93
  }
81
94
  this.client = null;
82
- this.logger.info(`MCP process for integration "${this.definition.id}" stopped`);
95
+ this.logger.info(`MCP ${this.definition.transport} transport for integration "${this.definition.id}" stopped`);
83
96
  }
84
97
  isRunning() {
85
98
  return this.running;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAKvF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,OAAO,SAAU,SAAQ,YAA6B;IAMhD;IACA;IACA;IAPF,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAqB,IAAI,CAAC;IACnC,OAAO,GAAG,KAAK,CAAC;IAExB,YACU,UAA2B,EAC3B,GAA2B,EAC3B,MAAc;QAEtB,KAAK,EAAE,CAAC;QAJA,eAAU,GAAV,UAAU,CAAiB;QAC3B,QAAG,GAAH,GAAG,CAAwB;QAC3B,WAAM,GAAN,MAAM,CAAQ;IAGxB,CAAC;IAEO,eAAe;QACrB,QAAQ,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAClC,KAAK,OAAO;gBACV,OAAO,IAAI,oBAAoB,CAAC;oBAC9B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;oBAChC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;oBAC1B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAA4B;iBAC/D,CAAC,CAAC;YAEL,KAAK,KAAK;gBACR,OAAO,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;oBAC1D,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;iBACnC,CAAC,CAAC;YAEL,KAAK,iBAAiB;gBACpB,OAAO,IAAI,6BAA6B,CACtC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAC5B,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CACvC,CAAC;QACN,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gBAAgB,IAAI,CAAC,UAAU,CAAC,SAAS,+BAA+B,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAC7F,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,OAAO;YACnC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YAClE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CACjC,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EACnE,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,+BAA+B,IAAI,CAAC,UAAU,CAAC,EAAE,uBAAuB,CACzG,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,iCAAiC,EACjC,KAAK,IAAI,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,eAAe,IAAI,CAAC,UAAU,CAAC,EAAE,0BAA0B,CAC5D,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,+BAA+B,IAAI,CAAC,UAAU,CAAC,EAAE,wBAAwB,CAC1G,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YACnC,WAAW,EAAE,IAAI,CAAC,WAAsC;SACzD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,IAAY,EACZ,IAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,MAAM,OAAO,GACX,MAAM,CAAC,OACR,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,OAAO;oBACL,IAAI,EAAE,OAAgB;oBACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;oBACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,WAAW;iBACxC,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO;YACP,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACpD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,+BAA+B,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAC7F,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@journal.one/gateway",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
+ "license": "MIT",
4
5
  "type": "module",
5
6
  "main": "./dist/main.js",
6
7
  "types": "./dist/main.d.ts",
@@ -23,7 +24,7 @@
23
24
  "@modelcontextprotocol/sdk": "^1.12",
24
25
  "ws": "^8",
25
26
  "zod": "^3.24",
26
- "@journal.one/gateway-protocol": "0.1.0"
27
+ "@journal.one/gateway-protocol": "0.2.0"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/node": "^22",