@manhq/localmcp 1.0.1 → 1.0.3

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/index.js CHANGED
@@ -3,10 +3,13 @@ import { fileURLToPath } from "node:url";
3
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
5
5
  import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
6
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
7
  import { env } from "./shared/env.js";
7
8
  import { registerFigmaTools } from "./services/figma/index.js";
8
9
  import { registerAtlassianTools } from "./services/atlassian/index.js";
9
10
  import { registerGChatTools } from "./services/google-chat/index.js";
11
+ import { createMcpServerWithRegistry } from "./api/server-with-registry.js";
12
+ import { mountRestApi } from "./api/rest.js";
10
13
  const SERVICE_REGISTRY = {
11
14
  figma: { register: registerFigmaTools, combinedPrefix: "figma", enabled: !!env.figma },
12
15
  atlassian: { register: registerAtlassianTools, combinedPrefix: "atlassian", enabled: !!env.atlassian },
@@ -15,9 +18,16 @@ const SERVICE_REGISTRY = {
15
18
  const activeServices = Object.entries(SERVICE_REGISTRY)
16
19
  .filter(([, s]) => s.enabled)
17
20
  .map(([name]) => name);
21
+ // Populates REST registry AND returns a connected McpServer — used for warm-up and stdio.
18
22
  function createServiceServer(name) {
23
+ const server = createMcpServerWithRegistry(name, { name, version: "1.0.0" });
24
+ SERVICE_REGISTRY[name].register(server);
25
+ return server;
26
+ }
27
+ // Returns a plain McpServer without touching the REST registry — used per HTTP request
28
+ // so the global registry is not re-populated on every MCP call.
29
+ function createServiceServerOnly(name) {
19
30
  const server = new McpServer({ name, version: "1.0.0" });
20
- // Per-service path: no prefix, tools keep their base names
21
31
  SERVICE_REGISTRY[name].register(server);
22
32
  return server;
23
33
  }
@@ -92,20 +102,26 @@ function makeCombinedServer() {
92
102
  export function createApp() {
93
103
  const app = express();
94
104
  app.use(express.json());
105
+ // Warm up registry by creating all service servers once (no transport needed)
106
+ for (const name of activeServices) {
107
+ createServiceServer(name);
108
+ }
95
109
  // Streamable HTTP — combined
96
110
  mountMcpHandler(app, "/mcp", makeCombinedServer);
97
111
  // Streamable HTTP — per-service: /mcp/figma, /mcp/atlassian, /mcp/google-chat
98
112
  for (const name of activeServices) {
99
113
  const service = name;
100
- mountMcpHandler(app, `/mcp/${service}`, () => createServiceServer(service));
114
+ mountMcpHandler(app, `/mcp/${service}`, () => createServiceServerOnly(service));
101
115
  }
102
116
  // Legacy SSE (2024-11-05) — combined: GET /sse → POST /messages?sessionId=...
103
117
  mountLegacySseHandler(app, "/sse", "/messages", makeCombinedServer);
104
118
  // Legacy SSE — per-service: GET /sse/:service → POST /messages/:service?sessionId=...
105
119
  for (const name of activeServices) {
106
120
  const service = name;
107
- mountLegacySseHandler(app, `/sse/${service}`, `/messages/${service}`, () => createServiceServer(service));
121
+ mountLegacySseHandler(app, `/sse/${service}`, `/messages/${service}`, () => createServiceServerOnly(service));
108
122
  }
123
+ // REST API + Playground
124
+ mountRestApi(app);
109
125
  app.get("/health", (_req, res) => {
110
126
  res.json({
111
127
  status: "ok",
@@ -119,6 +135,13 @@ export function createApp() {
119
135
  combined: "/sse",
120
136
  ...Object.fromEntries(activeServices.map((s) => [s, `/sse/${s}`])),
121
137
  },
138
+ rest: {
139
+ index: "/api",
140
+ service: "/api/:service",
141
+ call: "/api/:service/:tool",
142
+ spec: "/api/openapi.json",
143
+ playground: "/playground",
144
+ },
122
145
  },
123
146
  });
124
147
  });
@@ -127,14 +150,29 @@ export function createApp() {
127
150
  export function startServer() {
128
151
  createApp().listen(env.PORT, () => {
129
152
  const base = `http://localhost:${env.PORT}`;
153
+ const cliPath = fileURLToPath(new URL("cli.js", import.meta.url));
154
+ const stdioCmd = `${process.execPath} ${cliPath} stdio`;
130
155
  console.log(`Local MCP server running at ${base}`);
156
+ console.log(``);
131
157
  console.log(` Streamable HTTP : ${base}/mcp`);
132
- console.log(` Legacy SSE : ${base}/sse (messages: ${base}/messages)`);
158
+ console.log(` Legacy SSE : ${base}/sse`);
133
159
  for (const s of activeServices) {
134
160
  console.log(` [${s}] ${base}/mcp/${s} | ${base}/sse/${s}`);
135
161
  }
162
+ console.log(` REST API : ${base}/api`);
163
+ console.log(` Playground : ${base}/playground`);
164
+ console.log(``);
165
+ console.log(` stdio command : ${stdioCmd}`);
166
+ for (const s of activeServices) {
167
+ console.log(` stdio [${s}] : ${process.execPath} ${cliPath} stdio ${s}`);
168
+ }
136
169
  });
137
170
  }
171
+ export async function startStdio(service) {
172
+ const server = service ? createServiceServer(service) : makeCombinedServer();
173
+ const transport = new StdioServerTransport();
174
+ await server.connect(transport);
175
+ }
138
176
  if (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {
139
177
  startServer();
140
178
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/docs/atlassian.md CHANGED
@@ -33,34 +33,82 @@ http://localhost:47001/mcp/atlassian
33
33
 
34
34
  ## Register with AI Agents
35
35
 
36
- **Claude Code**`.claude/settings.local.json`
36
+ Each agent supports two transports pick whichever fits your setup:
37
+
38
+ - **HTTP** — requires the server to be running (`localmcp`). Shared across agents.
39
+ - **stdio** — the agent spawns the process on demand. No running server needed.
40
+
41
+ Or use `localmcp register` to set up automatically.
42
+
43
+ ---
44
+
45
+ ### Claude Code
46
+
47
+ **HTTP** — `.claude/settings.local.json`
37
48
  ```json
38
49
  {
39
50
  "mcpServers": {
40
51
  "atlassian": {
52
+ "type": "http",
41
53
  "url": "http://localhost:47001/mcp/atlassian"
42
54
  }
43
55
  }
44
56
  }
45
57
  ```
46
58
 
59
+ **stdio** — `.claude/settings.local.json`
60
+ ```json
61
+ {
62
+ "mcpServers": {
63
+ "atlassian": {
64
+ "type": "stdio",
65
+ "command": "localmcp",
66
+ "args": ["stdio", "atlassian"]
67
+ }
68
+ }
69
+ }
70
+ ```
71
+
47
72
  Or register from the command line:
48
73
  ```bash
74
+ # HTTP
49
75
  claude mcp add --transport http atlassian http://localhost:47001/mcp/atlassian
76
+
77
+ # stdio
78
+ claude mcp add atlassian localmcp stdio atlassian
50
79
  ```
51
80
 
52
- **Codex** — `~/.codex/config.toml`
81
+ ---
82
+
83
+ ### Codex
84
+
85
+ **HTTP** — `~/.codex/config.toml`
53
86
  ```toml
54
87
  [mcp_servers.atlassian]
55
88
  url = "http://localhost:47001/mcp/atlassian"
56
89
  ```
57
90
 
91
+ **stdio** — `~/.codex/config.toml`
92
+ ```toml
93
+ [mcp_servers.atlassian]
94
+ command = "localmcp"
95
+ args = ["stdio", "atlassian"]
96
+ ```
97
+
58
98
  Or register from the command line:
59
99
  ```bash
100
+ # HTTP
60
101
  codex mcp add atlassian --url http://localhost:47001/mcp/atlassian
102
+
103
+ # stdio
104
+ codex mcp add atlassian localmcp stdio atlassian
61
105
  ```
62
106
 
63
- **GitHub Copilot / VS Code** — `.vscode/mcp.json`
107
+ ---
108
+
109
+ ### GitHub Copilot / VS Code
110
+
111
+ **HTTP** — `.vscode/mcp.json`
64
112
  ```json
65
113
  {
66
114
  "servers": {
@@ -72,7 +120,24 @@ codex mcp add atlassian --url http://localhost:47001/mcp/atlassian
72
120
  }
73
121
  ```
74
122
 
75
- **Cursor** — `.cursor/mcp.json`
123
+ **stdio** — `.vscode/mcp.json`
124
+ ```json
125
+ {
126
+ "servers": {
127
+ "atlassian": {
128
+ "type": "stdio",
129
+ "command": "localmcp",
130
+ "args": ["stdio", "atlassian"]
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ### Cursor
139
+
140
+ **HTTP** — `.cursor/mcp.json`
76
141
  ```json
77
142
  {
78
143
  "mcpServers": {
@@ -83,7 +148,23 @@ codex mcp add atlassian --url http://localhost:47001/mcp/atlassian
83
148
  }
84
149
  ```
85
150
 
86
- **Windsurf** — `~/.codeium/windsurf/mcp_config.json`
151
+ **stdio** — `.cursor/mcp.json`
152
+ ```json
153
+ {
154
+ "mcpServers": {
155
+ "atlassian": {
156
+ "command": "localmcp",
157
+ "args": ["stdio", "atlassian"]
158
+ }
159
+ }
160
+ }
161
+ ```
162
+
163
+ ---
164
+
165
+ ### Windsurf
166
+
167
+ **HTTP** — `~/.codeium/windsurf/mcp_config.json`
87
168
  ```json
88
169
  {
89
170
  "mcpServers": {
@@ -94,7 +175,23 @@ codex mcp add atlassian --url http://localhost:47001/mcp/atlassian
94
175
  }
95
176
  ```
96
177
 
97
- **Antigravity** — `~/.gemini/config/mcp_config.json`
178
+ **stdio** — `~/.codeium/windsurf/mcp_config.json`
179
+ ```json
180
+ {
181
+ "mcpServers": {
182
+ "atlassian": {
183
+ "command": "localmcp",
184
+ "args": ["stdio", "atlassian"]
185
+ }
186
+ }
187
+ }
188
+ ```
189
+
190
+ ---
191
+
192
+ ### Antigravity
193
+
194
+ **HTTP** — `~/.gemini/config/mcp_config.json`
98
195
  ```json
99
196
  {
100
197
  "mcpServers": {
@@ -105,6 +202,48 @@ codex mcp add atlassian --url http://localhost:47001/mcp/atlassian
105
202
  }
106
203
  ```
107
204
 
205
+ **stdio** — `~/.gemini/config/mcp_config.json`
206
+ ```json
207
+ {
208
+ "mcpServers": {
209
+ "atlassian": {
210
+ "command": "localmcp",
211
+ "args": ["stdio", "atlassian"]
212
+ }
213
+ }
214
+ }
215
+ ```
216
+
217
+ ---
218
+
219
+ ## REST API
220
+
221
+ Call any Atlassian tool over plain HTTP — useful for scripts and automation.
222
+
223
+ ```bash
224
+ # List all tools
225
+ GET http://localhost:47001/api/atlassian
226
+
227
+ # Call a tool
228
+ POST http://localhost:47001/api/atlassian/getJiraIssue
229
+ Content-Type: application/json
230
+
231
+ {"issueIdOrKey": "PROJ-123"}
232
+
233
+ POST http://localhost:47001/api/atlassian/searchJiraIssuesUsingJql
234
+ Content-Type: application/json
235
+
236
+ {"jql": "project = PROJ AND status = \"In Progress\"", "maxResults": 20}
237
+ ```
238
+
239
+ Open the interactive playground:
240
+ ```bash
241
+ localmcp playground
242
+ # or: open http://localhost:47001/playground
243
+ ```
244
+
245
+ ---
246
+
108
247
  ## Tools
109
248
 
110
249
  ### Jira
package/docs/figma.md CHANGED
@@ -31,34 +31,82 @@ http://localhost:47001/mcp/figma
31
31
 
32
32
  ## Register with AI Agents
33
33
 
34
- **Claude Code**`.claude/settings.local.json`
34
+ Each agent supports two transports pick whichever fits your setup:
35
+
36
+ - **HTTP** — requires the server to be running (`localmcp`). Shared across agents.
37
+ - **stdio** — the agent spawns the process on demand. No running server needed.
38
+
39
+ Or use `localmcp register` to set up automatically.
40
+
41
+ ---
42
+
43
+ ### Claude Code
44
+
45
+ **HTTP** — `.claude/settings.local.json`
35
46
  ```json
36
47
  {
37
48
  "mcpServers": {
38
49
  "figma": {
50
+ "type": "http",
39
51
  "url": "http://localhost:47001/mcp/figma"
40
52
  }
41
53
  }
42
54
  }
43
55
  ```
44
56
 
57
+ **stdio** — `.claude/settings.local.json`
58
+ ```json
59
+ {
60
+ "mcpServers": {
61
+ "figma": {
62
+ "type": "stdio",
63
+ "command": "localmcp",
64
+ "args": ["stdio", "figma"]
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
45
70
  Or register from the command line:
46
71
  ```bash
72
+ # HTTP
47
73
  claude mcp add --transport http figma http://localhost:47001/mcp/figma
74
+
75
+ # stdio
76
+ claude mcp add figma localmcp stdio figma
48
77
  ```
49
78
 
50
- **Codex** — `~/.codex/config.toml`
79
+ ---
80
+
81
+ ### Codex
82
+
83
+ **HTTP** — `~/.codex/config.toml`
51
84
  ```toml
52
85
  [mcp_servers.figma]
53
86
  url = "http://localhost:47001/mcp/figma"
54
87
  ```
55
88
 
89
+ **stdio** — `~/.codex/config.toml`
90
+ ```toml
91
+ [mcp_servers.figma]
92
+ command = "localmcp"
93
+ args = ["stdio", "figma"]
94
+ ```
95
+
56
96
  Or register from the command line:
57
97
  ```bash
98
+ # HTTP
58
99
  codex mcp add figma --url http://localhost:47001/mcp/figma
100
+
101
+ # stdio
102
+ codex mcp add figma localmcp stdio figma
59
103
  ```
60
104
 
61
- **GitHub Copilot / VS Code** — `.vscode/mcp.json`
105
+ ---
106
+
107
+ ### GitHub Copilot / VS Code
108
+
109
+ **HTTP** — `.vscode/mcp.json`
62
110
  ```json
63
111
  {
64
112
  "servers": {
@@ -70,7 +118,24 @@ codex mcp add figma --url http://localhost:47001/mcp/figma
70
118
  }
71
119
  ```
72
120
 
73
- **Cursor** — `.cursor/mcp.json`
121
+ **stdio** — `.vscode/mcp.json`
122
+ ```json
123
+ {
124
+ "servers": {
125
+ "figma": {
126
+ "type": "stdio",
127
+ "command": "localmcp",
128
+ "args": ["stdio", "figma"]
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
134
+ ---
135
+
136
+ ### Cursor
137
+
138
+ **HTTP** — `.cursor/mcp.json`
74
139
  ```json
75
140
  {
76
141
  "mcpServers": {
@@ -81,7 +146,23 @@ codex mcp add figma --url http://localhost:47001/mcp/figma
81
146
  }
82
147
  ```
83
148
 
84
- **Windsurf** — `~/.codeium/windsurf/mcp_config.json`
149
+ **stdio** — `.cursor/mcp.json`
150
+ ```json
151
+ {
152
+ "mcpServers": {
153
+ "figma": {
154
+ "command": "localmcp",
155
+ "args": ["stdio", "figma"]
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ ---
162
+
163
+ ### Windsurf
164
+
165
+ **HTTP** — `~/.codeium/windsurf/mcp_config.json`
85
166
  ```json
86
167
  {
87
168
  "mcpServers": {
@@ -92,7 +173,23 @@ codex mcp add figma --url http://localhost:47001/mcp/figma
92
173
  }
93
174
  ```
94
175
 
95
- **Antigravity** — `~/.gemini/config/mcp_config.json`
176
+ **stdio** — `~/.codeium/windsurf/mcp_config.json`
177
+ ```json
178
+ {
179
+ "mcpServers": {
180
+ "figma": {
181
+ "command": "localmcp",
182
+ "args": ["stdio", "figma"]
183
+ }
184
+ }
185
+ }
186
+ ```
187
+
188
+ ---
189
+
190
+ ### Antigravity
191
+
192
+ **HTTP** — `~/.gemini/config/mcp_config.json`
96
193
  ```json
97
194
  {
98
195
  "mcpServers": {
@@ -103,6 +200,48 @@ codex mcp add figma --url http://localhost:47001/mcp/figma
103
200
  }
104
201
  ```
105
202
 
203
+ **stdio** — `~/.gemini/config/mcp_config.json`
204
+ ```json
205
+ {
206
+ "mcpServers": {
207
+ "figma": {
208
+ "command": "localmcp",
209
+ "args": ["stdio", "figma"]
210
+ }
211
+ }
212
+ }
213
+ ```
214
+
215
+ ---
216
+
217
+ ## REST API
218
+
219
+ Call any Figma tool over plain HTTP — useful for scripts and automation.
220
+
221
+ ```bash
222
+ # List all tools
223
+ GET http://localhost:47001/api/figma
224
+
225
+ # Call a tool
226
+ POST http://localhost:47001/api/figma/figma_whoami
227
+ Content-Type: application/json
228
+
229
+ {}
230
+
231
+ POST http://localhost:47001/api/figma/figma_get_metadata
232
+ Content-Type: application/json
233
+
234
+ {"fileKey": "AbCdEfGh", "depth": 2}
235
+ ```
236
+
237
+ Open the interactive playground:
238
+ ```bash
239
+ localmcp playground
240
+ # or: open http://localhost:47001/playground
241
+ ```
242
+
243
+ ---
244
+
106
245
  ## Tools
107
246
 
108
247
  ### File & Node