agent-discover 1.0.19 → 1.0.20

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.
@@ -2,7 +2,7 @@
2
2
  "id": "agent-discover",
3
3
  "name": "Discover",
4
4
  "icon": "explore",
5
- "version": "1.0.19",
5
+ "version": "1.0.20",
6
6
  "description": "MCP server registry — browse, install, configure, monitor",
7
7
  "ui": "./dist/ui/app.js",
8
8
  "css": "./dist/ui/styles.css",
package/dist/index.js CHANGED
@@ -2,23 +2,23 @@
2
2
  // =============================================================================
3
3
  // agent-discover — MCP server entry point (stdio transport)
4
4
  //
5
- // Communicates via JSON-RPC over stdin/stdout.
6
- // Auto-starts the dashboard HTTP server via leader election.
5
+ // Communicates via JSON-RPC over stdin/stdout via agent-common's startMcpServer.
6
+ // Dynamic tool list (regenerated per request so proxied child-server tools
7
+ // stay current), auto-starts dashboard on initialize, and emits
8
+ // `notifications/tools/list_changed` after tool calls that alter active
9
+ // servers (activate/deactivate/uninstall).
7
10
  // =============================================================================
8
- import { createInterface } from 'readline';
11
+ import { startMcpServer } from 'agent-common';
9
12
  import { createContext } from './context.js';
10
13
  import { readPackageMeta } from './package-meta.js';
11
14
  import { createToolHandler, getToolList } from './transport/mcp.js';
12
15
  import { startDashboard } from './server.js';
13
- import { RegistryError } from './types.js';
14
16
  const SERVER_INFO = readPackageMeta();
15
- const CAPABILITIES = { tools: { listChanged: true } };
16
17
  const DASHBOARD_PORT = parseInt(process.env.AGENT_DISCOVER_PORT ?? '3424', 10);
17
18
  const appContext = createContext();
18
19
  const handleTool = createToolHandler(appContext);
19
20
  let dashboard = null;
20
21
  let dashboardAttempted = false;
21
- let toolsChanged = false;
22
22
  function tryStartDashboard() {
23
23
  if (dashboard || dashboardAttempted)
24
24
  return;
@@ -31,111 +31,19 @@ function tryStartDashboard() {
31
31
  process.stderr.write(`[agent-discover] Dashboard port ${DASHBOARD_PORT} in use — another instance is serving.\n`);
32
32
  });
33
33
  }
34
- function writeJsonRpcResponse(response) {
35
- process.stdout.write(JSON.stringify(response) + '\n');
36
- }
37
- function sendToolsChangedNotification() {
38
- if (toolsChanged) {
39
- toolsChanged = false;
40
- process.stdout.write(JSON.stringify({
41
- jsonrpc: '2.0',
42
- method: 'notifications/tools/list_changed',
43
- }) + '\n');
44
- }
45
- }
46
- async function handleRequest(request) {
47
- const { method, params, id } = request;
48
- switch (method) {
49
- case 'initialize':
50
- tryStartDashboard();
51
- return {
52
- jsonrpc: '2.0',
53
- id,
54
- result: {
55
- protocolVersion: '2024-11-05',
56
- serverInfo: SERVER_INFO,
57
- capabilities: CAPABILITIES,
58
- },
59
- };
60
- case 'notifications/initialized':
61
- return null;
62
- case 'tools/list':
63
- return { jsonrpc: '2.0', id, result: { tools: getToolList(appContext) } };
64
- case 'tools/call': {
65
- const toolName = String(params?.name ?? '');
66
- const rawArgs = params?.arguments;
67
- const toolArgs = typeof rawArgs === 'object' && rawArgs !== null && !Array.isArray(rawArgs)
68
- ? rawArgs
69
- : {};
70
- try {
71
- const result = await handleTool(toolName, toolArgs);
72
- if (toolName === 'registry' &&
73
- (toolArgs.action === 'activate' ||
74
- toolArgs.action === 'deactivate' ||
75
- toolArgs.action === 'uninstall')) {
76
- toolsChanged = true;
77
- }
78
- const response = {
79
- jsonrpc: '2.0',
80
- id,
81
- result: {
82
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
83
- },
84
- };
85
- return response;
86
- }
87
- catch (err) {
88
- const message = err instanceof Error ? err.message : String(err);
89
- const code = err instanceof RegistryError ? err.code : 'UNKNOWN_ERROR';
90
- return {
91
- jsonrpc: '2.0',
92
- id,
93
- result: {
94
- content: [{ type: 'text', text: `Error [${code}]: ${message}` }],
95
- isError: true,
96
- },
97
- };
98
- }
34
+ startMcpServer({
35
+ serverInfo: SERVER_INFO,
36
+ tools: () => getToolList(appContext),
37
+ handleTool,
38
+ onInitialize: tryStartDashboard,
39
+ capabilities: { tools: { listChanged: true } },
40
+ onToolCalled: (name, args, notify) => {
41
+ if (name === 'registry' &&
42
+ (args.action === 'activate' || args.action === 'deactivate' || args.action === 'uninstall')) {
43
+ notify('notifications/tools/list_changed');
99
44
  }
100
- case 'ping':
101
- return { jsonrpc: '2.0', id, result: {} };
102
- default:
103
- return {
104
- jsonrpc: '2.0',
105
- id,
106
- error: { code: -32601, message: `Method not found: ${method}` },
107
- };
108
- }
109
- }
110
- const stdioReadline = createInterface({ input: process.stdin, terminal: false });
111
- stdioReadline.on('line', (line) => {
112
- if (!line.trim())
113
- return;
114
- try {
115
- const request = JSON.parse(line);
116
- handleRequest(request)
117
- .then((response) => {
118
- if (response) {
119
- writeJsonRpcResponse(response);
120
- sendToolsChangedNotification();
121
- }
122
- })
123
- .catch((err) => {
124
- process.stderr.write('[agent-discover] Handler error: ' +
125
- (err instanceof Error ? err.message : String(err)) +
126
- '\n');
127
- });
128
- }
129
- catch (err) {
130
- process.stderr.write('[agent-discover] JSON-RPC parse error: ' +
131
- (err instanceof Error ? err.message : String(err)) +
132
- '\n');
133
- writeJsonRpcResponse({
134
- jsonrpc: '2.0',
135
- id: null,
136
- error: { code: -32700, message: 'Parse error' },
137
- });
138
- }
45
+ },
46
+ logLabel: 'agent-discover',
139
47
  });
140
48
  function cleanup() {
141
49
  if (dashboard) {
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":";AAEA,gFAAgF;AAChF,4DAA4D;AAC5D,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,gEAAgE;AAChE,wEAAwE;AACxE,2CAA2C;AAC3C,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAEnE,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;AACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AAE/E,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;AACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAEjD,IAAI,SAAS,GAA2B,IAAI,CAAC;AAC7C,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,SAAS,iBAAiB;IACxB,IAAI,SAAS,IAAI,kBAAkB;QAAE,OAAO;IAC5C,kBAAkB,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC;SACvC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;QACxB,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,cAAc,0CAA0C,CAC5F,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,cAAc,CAAC;IACb,UAAU,EAAE,WAAW;IACvB,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;IACpC,UAAU;IACV,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;IAC9C,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACnC,IACE,IAAI,KAAK,UAAU;YACnB,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,EAC3F,CAAC;YACD,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAC;AAEH,SAAS,OAAO;IACd,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IACD,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,EAAE,CAAC;IACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,OAAO,EAAE,CAAC;IACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-discover",
3
- "version": "1.0.19",
3
+ "version": "1.0.20",
4
4
  "mcpName": "io.github.keshrath/agent-discover",
5
5
  "description": "MCP server registry and marketplace — discover, install, activate, and manage MCP tools on demand",
6
6
  "type": "module",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.12.1",
52
- "agent-common": "^1.0.2",
52
+ "agent-common": "^1.0.3",
53
53
  "better-sqlite3": "12.8.0",
54
54
  "morphdom": "^2.7.8",
55
55
  "ws": "8.20.0"