axiom-mcp 2.19.6
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 +409 -0
- package/dist/bundle.json +609177 -0
- package/dist/catalog/index.d.ts +26 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +173 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/config.d.ts +31 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +130 -0
- package/dist/index.js.map +1 -0
- package/dist/loader/dev-loader.d.ts +55 -0
- package/dist/loader/dev-loader.d.ts.map +1 -0
- package/dist/loader/dev-loader.js +223 -0
- package/dist/loader/dev-loader.js.map +1 -0
- package/dist/loader/parser.d.ts +117 -0
- package/dist/loader/parser.d.ts.map +1 -0
- package/dist/loader/parser.js +204 -0
- package/dist/loader/parser.js.map +1 -0
- package/dist/loader/prod-loader.d.ts +42 -0
- package/dist/loader/prod-loader.d.ts.map +1 -0
- package/dist/loader/prod-loader.js +144 -0
- package/dist/loader/prod-loader.js.map +1 -0
- package/dist/loader/types.d.ts +55 -0
- package/dist/loader/types.d.ts.map +1 -0
- package/dist/loader/types.js +2 -0
- package/dist/loader/types.js.map +1 -0
- package/dist/loader/xcode-docs.d.ts +18 -0
- package/dist/loader/xcode-docs.d.ts.map +1 -0
- package/dist/loader/xcode-docs.js +91 -0
- package/dist/loader/xcode-docs.js.map +1 -0
- package/dist/prompts/handler.d.ts +57 -0
- package/dist/prompts/handler.d.ts.map +1 -0
- package/dist/prompts/handler.js +95 -0
- package/dist/prompts/handler.js.map +1 -0
- package/dist/resources/handler.d.ts +51 -0
- package/dist/resources/handler.d.ts.map +1 -0
- package/dist/resources/handler.js +99 -0
- package/dist/resources/handler.js.map +1 -0
- package/dist/scripts/bundle.d.ts +13 -0
- package/dist/scripts/bundle.d.ts.map +1 -0
- package/dist/scripts/bundle.js +137 -0
- package/dist/scripts/bundle.js.map +1 -0
- package/dist/search/index.d.ts +65 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +227 -0
- package/dist/search/index.js.map +1 -0
- package/dist/tools/handler.d.ts +40 -0
- package/dist/tools/handler.d.ts.map +1 -0
- package/dist/tools/handler.js +265 -0
- package/dist/tools/handler.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Skill, Agent } from '../loader/parser.js';
|
|
2
|
+
interface CatalogCategory {
|
|
3
|
+
label: string;
|
|
4
|
+
skills: {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
skillType: string;
|
|
8
|
+
source: string;
|
|
9
|
+
}[];
|
|
10
|
+
}
|
|
11
|
+
export interface CatalogResult {
|
|
12
|
+
categories: Record<string, CatalogCategory>;
|
|
13
|
+
agents: {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
}[];
|
|
17
|
+
totalSkills: number;
|
|
18
|
+
totalAgents: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build a structured catalog from skills and agents.
|
|
22
|
+
* Router skills are excluded from the catalog output.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildCatalog(skills: Map<string, Skill>, agents: Map<string, Agent>, filterCategory?: string): CatalogResult;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAuBnD,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAsGD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1B,cAAc,CAAC,EAAE,MAAM,GACtB,aAAa,CA6Cf"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Categories derived from the 13 router skills.
|
|
3
|
+
* Each maps a router name to a human-readable category label.
|
|
4
|
+
*/
|
|
5
|
+
const ROUTER_CATEGORIES = {
|
|
6
|
+
'axiom-ios-build': 'Build & Environment',
|
|
7
|
+
'axiom-ios-ui': 'UI & Design',
|
|
8
|
+
'axiom-ios-data': 'Data & Persistence',
|
|
9
|
+
'axiom-ios-concurrency': 'Concurrency & Async',
|
|
10
|
+
'axiom-ios-performance': 'Performance',
|
|
11
|
+
'axiom-ios-networking': 'Networking',
|
|
12
|
+
'axiom-ios-integration': 'System Integration',
|
|
13
|
+
'axiom-ios-accessibility': 'Accessibility',
|
|
14
|
+
'axiom-ios-ai': 'Apple Intelligence',
|
|
15
|
+
'axiom-ios-ml': 'Machine Learning',
|
|
16
|
+
'axiom-ios-vision': 'Computer Vision',
|
|
17
|
+
'axiom-ios-graphics': 'Graphics & Metal',
|
|
18
|
+
'axiom-ios-games': 'Games',
|
|
19
|
+
'axiom-ios-testing': 'Testing',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Extract skill names referenced in a router skill's content.
|
|
23
|
+
* Looks for patterns like `/skill axiom-xxx` or `→ skill-name`
|
|
24
|
+
*/
|
|
25
|
+
function extractRouterReferences(content) {
|
|
26
|
+
const refs = [];
|
|
27
|
+
// Match /skill axiom-xxx patterns
|
|
28
|
+
const skillPattern = /\/skill\s+(axiom-[\w-]+)/g;
|
|
29
|
+
let match;
|
|
30
|
+
while ((match = skillPattern.exec(content)) !== null) {
|
|
31
|
+
refs.push(match[1]);
|
|
32
|
+
}
|
|
33
|
+
return refs;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Build a category map from router skills.
|
|
37
|
+
* For each router, extract referenced skills and assign them to that category.
|
|
38
|
+
*/
|
|
39
|
+
function buildRouterCategoryMap(skills) {
|
|
40
|
+
const skillToCategory = new Map();
|
|
41
|
+
for (const [routerName, categoryLabel] of Object.entries(ROUTER_CATEGORIES)) {
|
|
42
|
+
const router = skills.get(routerName);
|
|
43
|
+
if (!router)
|
|
44
|
+
continue;
|
|
45
|
+
const refs = extractRouterReferences(router.content);
|
|
46
|
+
for (const ref of refs) {
|
|
47
|
+
if (skills.has(ref)) {
|
|
48
|
+
skillToCategory.set(ref, categoryLabel);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return skillToCategory;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Map Apple doc filename patterns to existing categories.
|
|
56
|
+
*/
|
|
57
|
+
const APPLE_DOC_CATEGORIES = {
|
|
58
|
+
'swiftui': 'UI & Design',
|
|
59
|
+
'uikit': 'UI & Design',
|
|
60
|
+
'appkit': 'UI & Design',
|
|
61
|
+
'widgetkit': 'System Integration',
|
|
62
|
+
'swift-concurrency': 'Concurrency & Async',
|
|
63
|
+
'swift-inlinearray': 'Performance',
|
|
64
|
+
'swiftdata': 'Data & Persistence',
|
|
65
|
+
'storekit': 'System Integration',
|
|
66
|
+
'foundationmodels': 'Apple Intelligence',
|
|
67
|
+
'appintents': 'System Integration',
|
|
68
|
+
'mapkit': 'System Integration',
|
|
69
|
+
'swift-charts': 'UI & Design',
|
|
70
|
+
'implementing-visual': 'Computer Vision',
|
|
71
|
+
'implementing-assistive': 'Accessibility',
|
|
72
|
+
'widgets-for-visionos': 'System Integration',
|
|
73
|
+
'foundation-attributedstring': 'UI & Design',
|
|
74
|
+
'alarmkit': 'System Integration',
|
|
75
|
+
'webkit': 'UI & Design',
|
|
76
|
+
'toolbar': 'UI & Design',
|
|
77
|
+
'styled-text': 'UI & Design',
|
|
78
|
+
'liquid-glass': 'UI & Design',
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Infer category from skill name when no router reference exists.
|
|
82
|
+
*/
|
|
83
|
+
function inferCategoryFromName(name) {
|
|
84
|
+
// Apple diagnostics go to Build & Environment
|
|
85
|
+
if (name.startsWith('apple-diag-'))
|
|
86
|
+
return 'Build & Environment';
|
|
87
|
+
// Apple guides: match against known patterns
|
|
88
|
+
if (name.startsWith('apple-guide-')) {
|
|
89
|
+
for (const [pattern, category] of Object.entries(APPLE_DOC_CATEGORIES)) {
|
|
90
|
+
if (name.includes(pattern))
|
|
91
|
+
return category;
|
|
92
|
+
}
|
|
93
|
+
return 'General';
|
|
94
|
+
}
|
|
95
|
+
if (name.includes('build') || name.includes('xcode') || name.includes('spm'))
|
|
96
|
+
return 'Build & Environment';
|
|
97
|
+
if (name.includes('swiftui') || name.includes('uikit') || name.includes('layout') || name.includes('liquid-glass') || name.includes('hig') || name.includes('typography') || name.includes('textkit') || name.includes('animation') || name.includes('ui-recording') || name.includes('ui-testing'))
|
|
98
|
+
return 'UI & Design';
|
|
99
|
+
if (name.includes('data') || name.includes('sqlite') || name.includes('grdb') || name.includes('realm') || name.includes('codable') || name.includes('cloud') || name.includes('storage') || name.includes('migration') || name.includes('icloud'))
|
|
100
|
+
return 'Data & Persistence';
|
|
101
|
+
if (name.includes('concurrency') || name.includes('async') || name.includes('synchroniz') || name.includes('isolated'))
|
|
102
|
+
return 'Concurrency & Async';
|
|
103
|
+
if (name.includes('performance') || name.includes('energy') || name.includes('memory') || name.includes('profil') || name.includes('hang') || name.includes('display'))
|
|
104
|
+
return 'Performance';
|
|
105
|
+
if (name.includes('network') || name.includes('url'))
|
|
106
|
+
return 'Networking';
|
|
107
|
+
if (name.includes('accessibility'))
|
|
108
|
+
return 'Accessibility';
|
|
109
|
+
if (name.includes('test') || name.includes('xctest') || name.includes('xctrace') || name.includes('axe'))
|
|
110
|
+
return 'Testing';
|
|
111
|
+
if (name.includes('vision') || name.includes('photo') || name.includes('camera'))
|
|
112
|
+
return 'Computer Vision';
|
|
113
|
+
if (name.includes('foundation-model') || name.includes('intelligence'))
|
|
114
|
+
return 'Apple Intelligence';
|
|
115
|
+
if (name.includes('metal') || name.includes('graphics'))
|
|
116
|
+
return 'Graphics & Metal';
|
|
117
|
+
if (name.includes('spritekit') || name.includes('scenekit') || name.includes('game'))
|
|
118
|
+
return 'Games';
|
|
119
|
+
if (name.includes('debug'))
|
|
120
|
+
return 'Build & Environment';
|
|
121
|
+
if (name.includes('triage') || name.includes('app-store-connect'))
|
|
122
|
+
return 'Build & Environment';
|
|
123
|
+
if (name.includes('intent') || name.includes('shortcut') || name.includes('widget') || name.includes('extension') || name.includes('haptic') || name.includes('storekit') || name.includes('iap') || name.includes('now-playing') || name.includes('localization') || name.includes('spotlight') || name.includes('privacy') || name.includes('deep-link') || name.includes('app-store') || name.includes('background-process'))
|
|
124
|
+
return 'System Integration';
|
|
125
|
+
if (name.includes('docs-research') || name.includes('getting-started'))
|
|
126
|
+
return 'General';
|
|
127
|
+
return 'General';
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Build a structured catalog from skills and agents.
|
|
131
|
+
* Router skills are excluded from the catalog output.
|
|
132
|
+
*/
|
|
133
|
+
export function buildCatalog(skills, agents, filterCategory) {
|
|
134
|
+
const routerCategoryMap = buildRouterCategoryMap(skills);
|
|
135
|
+
const categories = {};
|
|
136
|
+
let totalSkills = 0;
|
|
137
|
+
for (const [name, skill] of skills) {
|
|
138
|
+
// Exclude routers and meta skills from catalog
|
|
139
|
+
if (skill.skillType === 'router' || skill.skillType === 'meta')
|
|
140
|
+
continue;
|
|
141
|
+
// Priority chain: router reference > name heuristic
|
|
142
|
+
// Explicit mcp.category values from skill frontmatter are freeform labels
|
|
143
|
+
// that don't match normalized catalog categories, so we skip them.
|
|
144
|
+
const category = routerCategoryMap.get(name)
|
|
145
|
+
|| inferCategoryFromName(name);
|
|
146
|
+
if (filterCategory && category !== filterCategory)
|
|
147
|
+
continue;
|
|
148
|
+
if (!categories[category]) {
|
|
149
|
+
categories[category] = { label: category, skills: [] };
|
|
150
|
+
}
|
|
151
|
+
categories[category].skills.push({
|
|
152
|
+
name: skill.name,
|
|
153
|
+
description: skill.description,
|
|
154
|
+
skillType: skill.skillType,
|
|
155
|
+
source: skill.source || 'axiom',
|
|
156
|
+
});
|
|
157
|
+
totalSkills++;
|
|
158
|
+
}
|
|
159
|
+
// Sort skills within each category by name
|
|
160
|
+
for (const cat of Object.values(categories)) {
|
|
161
|
+
cat.skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
162
|
+
}
|
|
163
|
+
const agentList = Array.from(agents.values())
|
|
164
|
+
.map(a => ({ name: a.name, description: a.description }))
|
|
165
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
166
|
+
return {
|
|
167
|
+
categories,
|
|
168
|
+
agents: filterCategory ? [] : agentList,
|
|
169
|
+
totalSkills,
|
|
170
|
+
totalAgents: agents.size,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/catalog/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type ServerMode = 'development' | 'production';
|
|
2
|
+
export interface Config {
|
|
3
|
+
mode: ServerMode;
|
|
4
|
+
devSourcePath?: string;
|
|
5
|
+
xcodePath?: string;
|
|
6
|
+
enableAppleDocs: boolean;
|
|
7
|
+
logLevel: 'debug' | 'info' | 'warn' | 'error';
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Load configuration from environment variables
|
|
11
|
+
*
|
|
12
|
+
* Environment variables:
|
|
13
|
+
* - AXIOM_MCP_MODE: 'development' or 'production' (default: 'production')
|
|
14
|
+
* - AXIOM_DEV_PATH: Path to Claude Code plugin for dev mode (default: ~/Projects/Axiom/plugins/axiom)
|
|
15
|
+
* - AXIOM_LOG_LEVEL: Log level (default: 'info')
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadConfig(): Config;
|
|
18
|
+
/**
|
|
19
|
+
* Simple logger that respects log level
|
|
20
|
+
*/
|
|
21
|
+
export declare class Logger {
|
|
22
|
+
private config;
|
|
23
|
+
private levels;
|
|
24
|
+
private minLevel;
|
|
25
|
+
constructor(config: Config);
|
|
26
|
+
debug(message: string, ...args: any[]): void;
|
|
27
|
+
info(message: string, ...args: any[]): void;
|
|
28
|
+
warn(message: string, ...args: any[]): void;
|
|
29
|
+
error(message: string, ...args: any[]): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAoBnC;AAED;;GAEG;AACH,qBAAa,MAAM;IAIL,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,QAAQ,CAAS;gBAEL,MAAM,EAAE,MAAM;IAIlC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAMrC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAMpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;IAMpC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAKtC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { homedir } from 'os';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Load configuration from environment variables
|
|
5
|
+
*
|
|
6
|
+
* Environment variables:
|
|
7
|
+
* - AXIOM_MCP_MODE: 'development' or 'production' (default: 'production')
|
|
8
|
+
* - AXIOM_DEV_PATH: Path to Claude Code plugin for dev mode (default: ~/Projects/Axiom/plugins/axiom)
|
|
9
|
+
* - AXIOM_LOG_LEVEL: Log level (default: 'info')
|
|
10
|
+
*/
|
|
11
|
+
export function loadConfig() {
|
|
12
|
+
const mode = (process.env.AXIOM_MCP_MODE || 'production');
|
|
13
|
+
const defaultDevPath = join(homedir(), 'Projects', 'Axiom', 'plugins', 'axiom');
|
|
14
|
+
const devSourcePath = mode === 'development'
|
|
15
|
+
? (process.env.AXIOM_DEV_PATH || defaultDevPath)
|
|
16
|
+
: undefined;
|
|
17
|
+
const logLevel = (process.env.AXIOM_LOG_LEVEL || 'info');
|
|
18
|
+
const xcodePath = process.env.AXIOM_XCODE_PATH || undefined;
|
|
19
|
+
const enableAppleDocs = process.env.AXIOM_APPLE_DOCS !== 'false';
|
|
20
|
+
return {
|
|
21
|
+
mode,
|
|
22
|
+
devSourcePath,
|
|
23
|
+
xcodePath,
|
|
24
|
+
enableAppleDocs,
|
|
25
|
+
logLevel,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Simple logger that respects log level
|
|
30
|
+
*/
|
|
31
|
+
export class Logger {
|
|
32
|
+
config;
|
|
33
|
+
levels = ['debug', 'info', 'warn', 'error'];
|
|
34
|
+
minLevel;
|
|
35
|
+
constructor(config) {
|
|
36
|
+
this.config = config;
|
|
37
|
+
this.minLevel = this.levels.indexOf(config.logLevel);
|
|
38
|
+
}
|
|
39
|
+
debug(message, ...args) {
|
|
40
|
+
if (this.minLevel <= 0) {
|
|
41
|
+
console.error('[DEBUG]', message, ...args);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
info(message, ...args) {
|
|
45
|
+
if (this.minLevel <= 1) {
|
|
46
|
+
console.error('[INFO]', message, ...args);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
warn(message, ...args) {
|
|
50
|
+
if (this.minLevel <= 2) {
|
|
51
|
+
console.error('[WARN]', message, ...args);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
error(message, ...args) {
|
|
55
|
+
if (this.minLevel <= 3) {
|
|
56
|
+
console.error('[ERROR]', message, ...args);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAY5B;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,YAAY,CAAe,CAAC;IAExE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,IAAI,KAAK,aAAa;QAC1C,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc,CAAC;QAChD,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAuB,CAAC;IAE/E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,SAAS,CAAC;IAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,OAAO,CAAC;IAEjE,OAAO;QACL,IAAI;QACJ,aAAa;QACb,SAAS;QACT,eAAe;QACf,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,MAAM;IAIG;IAHZ,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAS;IAEzB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QACnC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { loadConfig, Logger } from './config.js';
|
|
6
|
+
import { DevLoader } from './loader/dev-loader.js';
|
|
7
|
+
import { ProdLoader } from './loader/prod-loader.js';
|
|
8
|
+
import { ResourcesHandler } from './resources/handler.js';
|
|
9
|
+
import { PromptsHandler } from './prompts/handler.js';
|
|
10
|
+
import { DynamicToolsHandler } from './tools/handler.js';
|
|
11
|
+
import { join, dirname } from 'path';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
13
|
+
import { readFileSync } from 'fs';
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = dirname(__filename);
|
|
16
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
17
|
+
/**
|
|
18
|
+
* Main entry point for Axiom MCP Server
|
|
19
|
+
*/
|
|
20
|
+
async function main() {
|
|
21
|
+
// Load configuration
|
|
22
|
+
const config = loadConfig();
|
|
23
|
+
const logger = new Logger(config);
|
|
24
|
+
logger.info('Starting Axiom MCP Server');
|
|
25
|
+
logger.info(`Mode: ${config.mode}`);
|
|
26
|
+
logger.info(`Log Level: ${config.logLevel}`);
|
|
27
|
+
if (config.mode === 'development') {
|
|
28
|
+
if (!config.devSourcePath) {
|
|
29
|
+
logger.error('Development mode requires AXIOM_DEV_PATH environment variable');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
logger.info(`Plugin Path: ${config.devSourcePath}`);
|
|
33
|
+
}
|
|
34
|
+
// Initialize loader
|
|
35
|
+
const loader = config.mode === 'development'
|
|
36
|
+
? new DevLoader(config.devSourcePath, logger, config)
|
|
37
|
+
: await loadProductionBundle(config, logger);
|
|
38
|
+
// Initialize handlers
|
|
39
|
+
const resourcesHandler = new ResourcesHandler(loader, logger);
|
|
40
|
+
const promptsHandler = new PromptsHandler(loader, logger);
|
|
41
|
+
const toolsHandler = new DynamicToolsHandler(loader, logger);
|
|
42
|
+
// Create MCP server
|
|
43
|
+
const server = new Server({
|
|
44
|
+
name: 'axiom-mcp',
|
|
45
|
+
version: pkg.version,
|
|
46
|
+
}, {
|
|
47
|
+
capabilities: {
|
|
48
|
+
resources: {},
|
|
49
|
+
prompts: {},
|
|
50
|
+
tools: {},
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
// Register resources handlers
|
|
54
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
55
|
+
try {
|
|
56
|
+
return await resourcesHandler.listResources();
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger.error('Error listing resources:', error);
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
64
|
+
try {
|
|
65
|
+
return await resourcesHandler.readResource(request.params.uri);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
logger.error('Error reading resource:', error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
// Register prompts handlers
|
|
73
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
74
|
+
try {
|
|
75
|
+
return await promptsHandler.listPrompts();
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
logger.error('Error listing prompts:', error);
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
83
|
+
try {
|
|
84
|
+
return await promptsHandler.getPrompt(request.params.name, request.params.arguments);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
logger.error('Error getting prompt:', error);
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
// Register tools handlers
|
|
92
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
93
|
+
try {
|
|
94
|
+
return await toolsHandler.listTools();
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger.error('Error listing tools:', error);
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
102
|
+
try {
|
|
103
|
+
return await toolsHandler.callTool(request.params.name, request.params.arguments || {});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
logger.error('Error calling tool:', error);
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
// Connect to stdio transport
|
|
111
|
+
const transport = new StdioServerTransport();
|
|
112
|
+
await server.connect(transport);
|
|
113
|
+
logger.info('Axiom MCP Server started successfully');
|
|
114
|
+
logger.info('Waiting for requests on stdin/stdout');
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Load production bundle
|
|
118
|
+
* Returns a loader compatible with Loader interface
|
|
119
|
+
*/
|
|
120
|
+
async function loadProductionBundle(config, logger) {
|
|
121
|
+
const bundlePath = join(__dirname, 'bundle.json');
|
|
122
|
+
logger.info(`Production mode: loading from ${bundlePath}`);
|
|
123
|
+
return new ProdLoader(bundlePath, logger, config);
|
|
124
|
+
}
|
|
125
|
+
// Start the server
|
|
126
|
+
main().catch((error) => {
|
|
127
|
+
console.error('Fatal error:', error);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
});
|
|
130
|
+
//# 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,55 @@
|
|
|
1
|
+
import { Skill, Command, Agent, SkillSection } from './parser.js';
|
|
2
|
+
import { Config, Logger } from '../config.js';
|
|
3
|
+
import { Loader } from './types.js';
|
|
4
|
+
import { SearchResult } from '../search/index.js';
|
|
5
|
+
import { CatalogResult } from '../catalog/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Development mode loader - reads live files from Claude Code plugin directory
|
|
8
|
+
*/
|
|
9
|
+
export declare class DevLoader implements Loader {
|
|
10
|
+
private pluginPath;
|
|
11
|
+
private logger;
|
|
12
|
+
private config?;
|
|
13
|
+
private skillsCache;
|
|
14
|
+
private commandsCache;
|
|
15
|
+
private agentsCache;
|
|
16
|
+
private searchIndex;
|
|
17
|
+
constructor(pluginPath: string, logger: Logger, config?: Config | undefined);
|
|
18
|
+
/**
|
|
19
|
+
* Load MCP annotations from skill-annotations.json (co-located with mcp-server/)
|
|
20
|
+
*/
|
|
21
|
+
private loadAnnotations;
|
|
22
|
+
/**
|
|
23
|
+
* Load all skills from the plugin directory
|
|
24
|
+
* Skills live in subdirectories: skills/<name>/SKILL.md
|
|
25
|
+
*/
|
|
26
|
+
loadSkills(): Promise<Map<string, Skill>>;
|
|
27
|
+
private loadAppleDocsIntoCache;
|
|
28
|
+
/**
|
|
29
|
+
* Load all commands from the plugin directory
|
|
30
|
+
*/
|
|
31
|
+
loadCommands(): Promise<Map<string, Command>>;
|
|
32
|
+
/**
|
|
33
|
+
* Load all agents from the plugin directory
|
|
34
|
+
*/
|
|
35
|
+
loadAgents(): Promise<Map<string, Agent>>;
|
|
36
|
+
getSkill(name: string): Promise<Skill | undefined>;
|
|
37
|
+
getCommand(name: string): Promise<Command | undefined>;
|
|
38
|
+
getAgent(name: string): Promise<Agent | undefined>;
|
|
39
|
+
getSkillSections(name: string, sectionNames?: string[]): Promise<{
|
|
40
|
+
skill: Skill;
|
|
41
|
+
content: string;
|
|
42
|
+
sections: SkillSection[];
|
|
43
|
+
} | undefined>;
|
|
44
|
+
searchSkills(query: string, options?: {
|
|
45
|
+
limit?: number;
|
|
46
|
+
skillType?: string;
|
|
47
|
+
category?: string;
|
|
48
|
+
source?: string;
|
|
49
|
+
}): Promise<SearchResult[]>;
|
|
50
|
+
getCatalog(category?: string): Promise<CatalogResult>;
|
|
51
|
+
getSkills(): Map<string, Skill>;
|
|
52
|
+
getCommands(): Map<string, Command>;
|
|
53
|
+
getAgents(): Map<string, Agent>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=dev-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-loader.d.ts","sourceRoot":"","sources":["../../src/loader/dev-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0D,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AAC5I,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAmC,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGlE;;GAEG;AACH,qBAAa,SAAU,YAAW,MAAM;IAOpC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM,CAAC;IARjB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;gBAGrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,YAAA;IAGzB;;OAEG;YACW,eAAe;IAqB7B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YA4CjC,sBAAsB;IAcpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6BnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IA0BzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAOlD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAOtD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAOlD,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IA6B7E,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACnF,OAAO,CAAC,YAAY,EAAE,CAAC;IAcpB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAW3D,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAInC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;CAGhC"}
|