@khanglvm/jira-mcp 1.3.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/LICENSE +21 -0
- package/README.md +126 -0
- package/dist/client.d.ts +287 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +235 -0
- package/dist/client.js.map +1 -0
- package/dist/config-fetcher.d.ts +30 -0
- package/dist/config-fetcher.d.ts.map +1 -0
- package/dist/config-fetcher.js +279 -0
- package/dist/config-fetcher.js.map +1 -0
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +228 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-registry.d.ts +106 -0
- package/dist/mcp-registry.d.ts.map +1 -0
- package/dist/mcp-registry.js +168 -0
- package/dist/mcp-registry.js.map +1 -0
- package/dist/setup.d.ts +41 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +263 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/issues.d.ts +364 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +392 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/projects.d.ts +70 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +101 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/search.d.ts +76 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +111 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/transitions.d.ts +99 -0
- package/dist/tools/transitions.d.ts.map +1 -0
- package/dist/tools/transitions.js +121 -0
- package/dist/tools/transitions.js.map +1 -0
- package/dist/tools/users.d.ts +70 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +96 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/types/mcp-config.d.ts +154 -0
- package/dist/types/mcp-config.d.ts.map +1 -0
- package/dist/types/mcp-config.js +7 -0
- package/dist/types/mcp-config.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +16 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +37 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/package.json +61 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @file index.ts
|
|
4
|
+
* @description Main entry point for the Jira MCP server.
|
|
5
|
+
* Supports two modes:
|
|
6
|
+
* 1. MCP Server mode (default) - Runs as stdio MCP server for AI tools
|
|
7
|
+
* 2. Setup mode - Injects MCP configuration into AI tool config files
|
|
8
|
+
*/
|
|
9
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
10
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
11
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
12
|
+
import { loadConfig } from './config.js';
|
|
13
|
+
import { JiraClient, JiraApiError } from './client.js';
|
|
14
|
+
// Export MCP registry types for external use
|
|
15
|
+
export * from './types/mcp-config.js';
|
|
16
|
+
export { createRegistry, createRegistryFromConfig, McpRegistry } from './mcp-registry.js';
|
|
17
|
+
export { fetchMcpConfig, clearCache, getCacheStatus } from './config-fetcher.js';
|
|
18
|
+
import { createIssueTools, issueToolDefinitions, createSearchTools, searchToolDefinitions, createProjectTools, projectToolDefinitions, createTransitionTools, transitionToolDefinitions, createUserTools, userToolDefinitions, } from './tools/index.js';
|
|
19
|
+
import { parseSetupArgs, injectMcpConfig, printSetupHelp, printSupportedClis, } from './setup.js';
|
|
20
|
+
/**
|
|
21
|
+
* Package information for server identification.
|
|
22
|
+
*/
|
|
23
|
+
const SERVER_INFO = {
|
|
24
|
+
name: '@khanglvm/jira-mcp',
|
|
25
|
+
version: '1.0.0',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Prints general help message.
|
|
29
|
+
*/
|
|
30
|
+
function printHelp() {
|
|
31
|
+
console.log(`
|
|
32
|
+
@khanglvm/jira-mcp - Jira MCP Server for Legacy Jira Server (Basic Auth)
|
|
33
|
+
|
|
34
|
+
MODES:
|
|
35
|
+
|
|
36
|
+
1. MCP Server Mode (default)
|
|
37
|
+
Run as an MCP server for AI tools to connect to.
|
|
38
|
+
|
|
39
|
+
Required Environment Variables:
|
|
40
|
+
JIRA_BASE_URL - Jira server URL (e.g., https://jira.example.com)
|
|
41
|
+
JIRA_USERNAME - Username for basic auth
|
|
42
|
+
JIRA_PASSWORD - Password for basic auth
|
|
43
|
+
|
|
44
|
+
Usage:
|
|
45
|
+
npx @khanglvm/jira-mcp
|
|
46
|
+
|
|
47
|
+
2. Setup Mode
|
|
48
|
+
Inject MCP configuration into AI tool config files.
|
|
49
|
+
|
|
50
|
+
Usage:
|
|
51
|
+
npx @khanglvm/jira-mcp setup -c <cli> -b <url> -u <user> -p <pass> [-s <scope>]
|
|
52
|
+
|
|
53
|
+
Run 'npx @khanglvm/jira-mcp setup --help' for more details.
|
|
54
|
+
|
|
55
|
+
COMMANDS:
|
|
56
|
+
setup Configure MCP in AI tool config files
|
|
57
|
+
list-clis List supported AI CLI tools
|
|
58
|
+
--help Show this help message
|
|
59
|
+
--version Show version
|
|
60
|
+
|
|
61
|
+
EXAMPLES:
|
|
62
|
+
# Run as MCP server
|
|
63
|
+
JIRA_BASE_URL=https://jira.example.com JIRA_USERNAME=admin JIRA_PASSWORD=secret npx @khanglvm/jira-mcp
|
|
64
|
+
|
|
65
|
+
# Setup for Claude Code
|
|
66
|
+
npx @khanglvm/jira-mcp setup -c claude-code -b https://jira.example.com -u admin -p secret
|
|
67
|
+
|
|
68
|
+
# Setup for Cursor (project scope)
|
|
69
|
+
npx @khanglvm/jira-mcp setup -c cursor -b https://jira.example.com -u admin -p secret -s project
|
|
70
|
+
`);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Handles CLI commands and arguments.
|
|
74
|
+
* @returns true if handled as CLI command, false to continue as MCP server
|
|
75
|
+
*/
|
|
76
|
+
async function handleCliCommands() {
|
|
77
|
+
const args = process.argv.slice(2);
|
|
78
|
+
if (args.length === 0) {
|
|
79
|
+
return false; // No args, run as MCP server
|
|
80
|
+
}
|
|
81
|
+
const command = args[0];
|
|
82
|
+
switch (command) {
|
|
83
|
+
case '--help':
|
|
84
|
+
case '-h':
|
|
85
|
+
case 'help':
|
|
86
|
+
printHelp();
|
|
87
|
+
return true;
|
|
88
|
+
case '--version':
|
|
89
|
+
case '-v':
|
|
90
|
+
console.log(SERVER_INFO.version);
|
|
91
|
+
return true;
|
|
92
|
+
case 'list-clis':
|
|
93
|
+
printSupportedClis();
|
|
94
|
+
return true;
|
|
95
|
+
case 'setup': {
|
|
96
|
+
const setupArgs = args.slice(1);
|
|
97
|
+
if (setupArgs.length === 0 || setupArgs.includes('--help') || setupArgs.includes('-h')) {
|
|
98
|
+
printSetupHelp();
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
const options = parseSetupArgs(setupArgs);
|
|
102
|
+
if (!options) {
|
|
103
|
+
console.error('Error: Invalid arguments. Run with --help for usage.\n');
|
|
104
|
+
printSetupHelp();
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
const result = await injectMcpConfig(options);
|
|
108
|
+
console.log(result.message);
|
|
109
|
+
if (!result.success) {
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
default:
|
|
115
|
+
// Unknown command, check if it looks like MCP server mode
|
|
116
|
+
if (command.startsWith('-')) {
|
|
117
|
+
console.error(`Unknown option: ${command}`);
|
|
118
|
+
printHelp();
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Main function to initialize and run the MCP server.
|
|
126
|
+
*/
|
|
127
|
+
async function runMcpServer() {
|
|
128
|
+
// Load and validate configuration from environment
|
|
129
|
+
let config;
|
|
130
|
+
try {
|
|
131
|
+
config = loadConfig();
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
console.error(error.message);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
// Initialize Jira client
|
|
138
|
+
const jiraClient = new JiraClient(config);
|
|
139
|
+
// Create tool handlers
|
|
140
|
+
const issueTools = createIssueTools(jiraClient);
|
|
141
|
+
const searchTools = createSearchTools(jiraClient);
|
|
142
|
+
const projectTools = createProjectTools(jiraClient);
|
|
143
|
+
const transitionTools = createTransitionTools(jiraClient);
|
|
144
|
+
const userTools = createUserTools(jiraClient);
|
|
145
|
+
// Combine all tool handlers with type assertion
|
|
146
|
+
// Individual handlers have stricter param types, but we know the SDK will provide correct args
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
148
|
+
const allToolHandlers = {
|
|
149
|
+
...issueTools,
|
|
150
|
+
...searchTools,
|
|
151
|
+
...projectTools,
|
|
152
|
+
...transitionTools,
|
|
153
|
+
...userTools,
|
|
154
|
+
};
|
|
155
|
+
// Combine all tool definitions
|
|
156
|
+
const allToolDefinitions = [
|
|
157
|
+
...issueToolDefinitions,
|
|
158
|
+
...searchToolDefinitions,
|
|
159
|
+
...projectToolDefinitions,
|
|
160
|
+
...transitionToolDefinitions,
|
|
161
|
+
...userToolDefinitions,
|
|
162
|
+
];
|
|
163
|
+
// Create MCP server
|
|
164
|
+
const server = new Server(SERVER_INFO, {
|
|
165
|
+
capabilities: {
|
|
166
|
+
tools: {},
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
// Register list_tools handler
|
|
170
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
171
|
+
return {
|
|
172
|
+
tools: allToolDefinitions,
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
// Register call_tool handler
|
|
176
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
177
|
+
const { name, arguments: args } = request.params;
|
|
178
|
+
const handler = allToolHandlers[name];
|
|
179
|
+
if (!handler) {
|
|
180
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
184
|
+
return await handler(args);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
// Handle Jira API errors gracefully
|
|
188
|
+
if (error instanceof JiraApiError) {
|
|
189
|
+
return {
|
|
190
|
+
content: [
|
|
191
|
+
{
|
|
192
|
+
type: 'text',
|
|
193
|
+
text: JSON.stringify({
|
|
194
|
+
error: true,
|
|
195
|
+
message: error.message,
|
|
196
|
+
statusCode: error.statusCode,
|
|
197
|
+
details: error.body,
|
|
198
|
+
}, null, 2),
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
isError: true,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
// Re-throw unexpected errors
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
// Create stdio transport and connect
|
|
209
|
+
const transport = new StdioServerTransport();
|
|
210
|
+
await server.connect(transport);
|
|
211
|
+
// Log successful startup to stderr (not stdout, to avoid interfering with MCP protocol)
|
|
212
|
+
console.error(`Jira MCP server started - connected to ${config.JIRA_BASE_URL}`);
|
|
213
|
+
}
|
|
214
|
+
// Main entry point
|
|
215
|
+
(async () => {
|
|
216
|
+
if (await handleCliCommands()) {
|
|
217
|
+
// CLI command handled, exit normally
|
|
218
|
+
process.exit(0);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// Run as MCP server
|
|
222
|
+
runMcpServer().catch((error) => {
|
|
223
|
+
console.error('Fatal error:', error);
|
|
224
|
+
process.exit(1);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
})();
|
|
228
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file mcp-registry.ts
|
|
3
|
+
* @description MCP client registry for dynamic tool configuration.
|
|
4
|
+
* Provides query methods for accessing MCP client configs by scope/platform.
|
|
5
|
+
*/
|
|
6
|
+
import type { McpConfigSchema, McpClientConfig, ConfigScope, TransportType, WrapperKey } from './types/mcp-config.js';
|
|
7
|
+
/**
|
|
8
|
+
* MCP Registry class for querying client configurations.
|
|
9
|
+
* Caches config data and provides filtering methods.
|
|
10
|
+
*/
|
|
11
|
+
export declare class McpRegistry {
|
|
12
|
+
private config;
|
|
13
|
+
private clients;
|
|
14
|
+
constructor(config: McpConfigSchema);
|
|
15
|
+
/**
|
|
16
|
+
* Gets all client configurations.
|
|
17
|
+
*/
|
|
18
|
+
getAllClients(): McpClientConfig[];
|
|
19
|
+
/**
|
|
20
|
+
* Gets a specific client by name.
|
|
21
|
+
* Returns null if client not found.
|
|
22
|
+
*/
|
|
23
|
+
getClient(name: string): McpClientConfig | null;
|
|
24
|
+
/**
|
|
25
|
+
* Gets clients filtered by scope capability.
|
|
26
|
+
* Returns clients that support the given scope.
|
|
27
|
+
*/
|
|
28
|
+
getClientsByScope(scope: ConfigScope): McpClientConfig[];
|
|
29
|
+
/**
|
|
30
|
+
* Gets clients that have detectable config paths for the platform.
|
|
31
|
+
*/
|
|
32
|
+
getDetectableClients(platform: NodeJS.Platform): McpClientConfig[];
|
|
33
|
+
/**
|
|
34
|
+
* Gets config file paths for a client on the current platform.
|
|
35
|
+
*/
|
|
36
|
+
getConfigPaths(clientName: string, platform: NodeJS.Platform): string[];
|
|
37
|
+
/**
|
|
38
|
+
* Gets scopes supported by a client.
|
|
39
|
+
*/
|
|
40
|
+
getScopesForClient(name: string): ConfigScope[];
|
|
41
|
+
/**
|
|
42
|
+
* Checks if a client supports a specific scope.
|
|
43
|
+
*/
|
|
44
|
+
supportsScope(name: string, scope: ConfigScope): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Gets transport types supported by a client.
|
|
47
|
+
*/
|
|
48
|
+
getTransportsForClient(name: string): TransportType[];
|
|
49
|
+
/**
|
|
50
|
+
* Gets wrapper key for a client (mcpServers, mcp, servers, etc.).
|
|
51
|
+
*/
|
|
52
|
+
getWrapperKey(name: string): WrapperKey | null;
|
|
53
|
+
/**
|
|
54
|
+
* Gets clients filtered by wrapper key.
|
|
55
|
+
* Useful for grouping clients by config format.
|
|
56
|
+
*/
|
|
57
|
+
getClientsByWrapperKey(wrapperKey: WrapperKey): McpClientConfig[];
|
|
58
|
+
/**
|
|
59
|
+
* Gets clients that support a specific transport type.
|
|
60
|
+
*/
|
|
61
|
+
getClientsByTransport(transport: TransportType): McpClientConfig[];
|
|
62
|
+
/**
|
|
63
|
+
* Gets CLI commands for a client (if available).
|
|
64
|
+
*/
|
|
65
|
+
getCliCommands(name: string): McpClientConfig['cli'];
|
|
66
|
+
/**
|
|
67
|
+
* Checks if a client has CLI management support.
|
|
68
|
+
*/
|
|
69
|
+
hasCliSupport(name: string): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Gets config format type for a client (json, yaml, toml).
|
|
72
|
+
*/
|
|
73
|
+
getConfigFormat(name: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Gets all client names.
|
|
76
|
+
*/
|
|
77
|
+
getClientNames(): string[];
|
|
78
|
+
/**
|
|
79
|
+
* Searches clients by name (case-insensitive partial match).
|
|
80
|
+
*/
|
|
81
|
+
searchClients(query: string): McpClientConfig[];
|
|
82
|
+
/**
|
|
83
|
+
* Gets registry metadata.
|
|
84
|
+
*/
|
|
85
|
+
getMetadata(): {
|
|
86
|
+
version: string;
|
|
87
|
+
lastUpdated: string;
|
|
88
|
+
clientCount: number;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Creates an MCP registry instance by fetching config.
|
|
93
|
+
* This is the main entry point for using the registry.
|
|
94
|
+
*
|
|
95
|
+
* @param options - Fetch options for getting config
|
|
96
|
+
* @returns Initialized MCP registry
|
|
97
|
+
*/
|
|
98
|
+
export declare function createRegistry(options?: {
|
|
99
|
+
forceRefresh?: boolean;
|
|
100
|
+
}): Promise<McpRegistry>;
|
|
101
|
+
/**
|
|
102
|
+
* Creates a registry from existing config data.
|
|
103
|
+
* Useful for testing or using cached config.
|
|
104
|
+
*/
|
|
105
|
+
export declare function createRegistryFromConfig(config: McpConfigSchema): McpRegistry;
|
|
106
|
+
//# sourceMappingURL=mcp-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../src/mcp-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACR,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACb,MAAM,uBAAuB,CAAC;AAI/B;;;GAGG;AACH,qBAAa,WAAW;IAGR,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,OAAO,CAA+B;gBAE1B,MAAM,EAAE,eAAe;IAI3C;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAI/C;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,EAAE;IAMxD;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,eAAe,EAAE;IAQlE;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE;IAgBvE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAK/C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAIxD;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAKrD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAK9C;;;OAGG;IACH,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,EAAE;IAMjE;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,aAAa,GAAG,eAAe,EAAE;IAMlE;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;IAKpD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKpC;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKrC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE;IAQ/C;;OAEG;IACH,WAAW,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;CAO/E;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAG/F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAE7E"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file mcp-registry.ts
|
|
3
|
+
* @description MCP client registry for dynamic tool configuration.
|
|
4
|
+
* Provides query methods for accessing MCP client configs by scope/platform.
|
|
5
|
+
*/
|
|
6
|
+
import { fetchMcpConfig } from './config-fetcher.js';
|
|
7
|
+
import { mapPlatform } from './utils/path-resolver.js';
|
|
8
|
+
/**
|
|
9
|
+
* MCP Registry class for querying client configurations.
|
|
10
|
+
* Caches config data and provides filtering methods.
|
|
11
|
+
*/
|
|
12
|
+
export class McpRegistry {
|
|
13
|
+
config;
|
|
14
|
+
clients;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.clients = new Map(Object.entries(config.clients));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gets all client configurations.
|
|
21
|
+
*/
|
|
22
|
+
getAllClients() {
|
|
23
|
+
return Array.from(this.clients.values());
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Gets a specific client by name.
|
|
27
|
+
* Returns null if client not found.
|
|
28
|
+
*/
|
|
29
|
+
getClient(name) {
|
|
30
|
+
return this.clients.get(name) || null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Gets clients filtered by scope capability.
|
|
34
|
+
* Returns clients that support the given scope.
|
|
35
|
+
*/
|
|
36
|
+
getClientsByScope(scope) {
|
|
37
|
+
return this.getAllClients().filter(client => client.scopes.includes(scope));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets clients that have detectable config paths for the platform.
|
|
41
|
+
*/
|
|
42
|
+
getDetectableClients(platform) {
|
|
43
|
+
const platformKey = mapPlatform(platform);
|
|
44
|
+
return this.getAllClients().filter(client => {
|
|
45
|
+
const platformLocations = client.configLocations[platformKey];
|
|
46
|
+
return platformLocations && Object.keys(platformLocations).length > 0;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Gets config file paths for a client on the current platform.
|
|
51
|
+
*/
|
|
52
|
+
getConfigPaths(clientName, platform) {
|
|
53
|
+
const client = this.getClient(clientName);
|
|
54
|
+
if (!client) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const platformKey = mapPlatform(platform);
|
|
58
|
+
const platformLocations = client.configLocations[platformKey];
|
|
59
|
+
if (!platformLocations) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
return Object.values(platformLocations).filter(p => typeof p === 'string' && p.length > 0);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Gets scopes supported by a client.
|
|
66
|
+
*/
|
|
67
|
+
getScopesForClient(name) {
|
|
68
|
+
const client = this.getClient(name);
|
|
69
|
+
return client?.scopes || [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Checks if a client supports a specific scope.
|
|
73
|
+
*/
|
|
74
|
+
supportsScope(name, scope) {
|
|
75
|
+
return this.getScopesForClient(name).includes(scope);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Gets transport types supported by a client.
|
|
79
|
+
*/
|
|
80
|
+
getTransportsForClient(name) {
|
|
81
|
+
const client = this.getClient(name);
|
|
82
|
+
return client?.transportSupport || [];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets wrapper key for a client (mcpServers, mcp, servers, etc.).
|
|
86
|
+
*/
|
|
87
|
+
getWrapperKey(name) {
|
|
88
|
+
const client = this.getClient(name);
|
|
89
|
+
return client?.configFormat.wrapperKey || null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Gets clients filtered by wrapper key.
|
|
93
|
+
* Useful for grouping clients by config format.
|
|
94
|
+
*/
|
|
95
|
+
getClientsByWrapperKey(wrapperKey) {
|
|
96
|
+
return this.getAllClients().filter(client => client.configFormat.wrapperKey === wrapperKey);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Gets clients that support a specific transport type.
|
|
100
|
+
*/
|
|
101
|
+
getClientsByTransport(transport) {
|
|
102
|
+
return this.getAllClients().filter(client => client.transportSupport.includes(transport));
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Gets CLI commands for a client (if available).
|
|
106
|
+
*/
|
|
107
|
+
getCliCommands(name) {
|
|
108
|
+
const client = this.getClient(name);
|
|
109
|
+
return client?.cli;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Checks if a client has CLI management support.
|
|
113
|
+
*/
|
|
114
|
+
hasCliSupport(name) {
|
|
115
|
+
const commands = this.getCliCommands(name);
|
|
116
|
+
return commands !== undefined && Object.keys(commands).length > 0;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Gets config format type for a client (json, yaml, toml).
|
|
120
|
+
*/
|
|
121
|
+
getConfigFormat(name) {
|
|
122
|
+
const client = this.getClient(name);
|
|
123
|
+
return client?.configFormat.format || 'json';
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Gets all client names.
|
|
127
|
+
*/
|
|
128
|
+
getClientNames() {
|
|
129
|
+
return Array.from(this.clients.keys());
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Searches clients by name (case-insensitive partial match).
|
|
133
|
+
*/
|
|
134
|
+
searchClients(query) {
|
|
135
|
+
const lowerQuery = query.toLowerCase();
|
|
136
|
+
return this.getAllClients().filter(client => client.name.toLowerCase().includes(lowerQuery) ||
|
|
137
|
+
client.vendor?.toLowerCase().includes(lowerQuery));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Gets registry metadata.
|
|
141
|
+
*/
|
|
142
|
+
getMetadata() {
|
|
143
|
+
return {
|
|
144
|
+
version: this.config.version,
|
|
145
|
+
lastUpdated: this.config.lastUpdated,
|
|
146
|
+
clientCount: this.clients.size,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Creates an MCP registry instance by fetching config.
|
|
152
|
+
* This is the main entry point for using the registry.
|
|
153
|
+
*
|
|
154
|
+
* @param options - Fetch options for getting config
|
|
155
|
+
* @returns Initialized MCP registry
|
|
156
|
+
*/
|
|
157
|
+
export async function createRegistry(options) {
|
|
158
|
+
const config = await fetchMcpConfig(options);
|
|
159
|
+
return new McpRegistry(config);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Creates a registry from existing config data.
|
|
163
|
+
* Useful for testing or using cached config.
|
|
164
|
+
*/
|
|
165
|
+
export function createRegistryFromConfig(config) {
|
|
166
|
+
return new McpRegistry(config);
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=mcp-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registry.js","sourceRoot":"","sources":["../src/mcp-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file setup.ts
|
|
3
|
+
* @description CLI setup command for injecting MCP configuration into various AI tools.
|
|
4
|
+
* Dynamically supports all MCP clients from the registry (14 tools).
|
|
5
|
+
*/
|
|
6
|
+
/** Supported CLI tools for MCP configuration - all 14 tools from registry */
|
|
7
|
+
export type SupportedCli = 'claude-code' | 'claude-desktop' | 'github-copilot' | 'cursor' | 'windsurf' | 'roo-code' | 'zed' | 'factory-droid' | 'antigravity' | 'gemini-cli' | 'opencode' | 'vscode-copilot' | 'jetbrains-copilot' | 'codex-cli';
|
|
8
|
+
/** Configuration scope - user-level or project-level */
|
|
9
|
+
export type ConfigScope = 'user' | 'project';
|
|
10
|
+
/** Setup options from CLI arguments */
|
|
11
|
+
export interface SetupOptions {
|
|
12
|
+
cli: SupportedCli;
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
username: string;
|
|
15
|
+
password: string;
|
|
16
|
+
scope: ConfigScope;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Injects MCP configuration into the target CLI tool's config file.
|
|
20
|
+
* @param options - Setup options
|
|
21
|
+
* @returns Result message
|
|
22
|
+
*/
|
|
23
|
+
export declare function injectMcpConfig(options: SetupOptions): Promise<{
|
|
24
|
+
success: boolean;
|
|
25
|
+
message: string;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Parses CLI arguments for setup command.
|
|
29
|
+
* @param args - Command line arguments
|
|
30
|
+
* @returns Parsed options or null if invalid
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseSetupArgs(args: string[]): SetupOptions | null;
|
|
33
|
+
/**
|
|
34
|
+
* Prints setup help message.
|
|
35
|
+
*/
|
|
36
|
+
export declare function printSetupHelp(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Lists all supported CLI tools.
|
|
39
|
+
*/
|
|
40
|
+
export declare function printSupportedClis(): void;
|
|
41
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAClB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,GACR,UAAU,GACV,UAAU,GACV,KAAK,GACL,eAAe,GACf,aAAa,GACb,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,mBAAmB,GACnB,WAAW,CAAC;AAElB,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,uCAAuC;AACvC,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACtB;AA+HD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA2C3G;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAyDlE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CA6BrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAkBzC"}
|