@schilling.mark.a/software-methodology 1.0.0 → 1.0.1

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.
Files changed (69) hide show
  1. package/.github/copilot-instructions.md +159 -0
  2. package/README.md +172 -6
  3. package/docs/story-map/backbone.md +141 -0
  4. package/docs/story-map/releases/r1-walking-skeleton.md +152 -0
  5. package/docs/story-map/user-tasks/ACT-001-task-001.md +45 -0
  6. package/docs/story-map/user-tasks/ACT-001-task-002.md +48 -0
  7. package/docs/story-map/user-tasks/ACT-002-task-001.md +47 -0
  8. package/docs/story-map/user-tasks/ACT-002-task-002.md +47 -0
  9. package/docs/story-map/user-tasks/ACT-002-task-003.md +46 -0
  10. package/docs/story-map/user-tasks/ACT-003-task-001.md +47 -0
  11. package/docs/story-map/user-tasks/ACT-003-task-002.md +46 -0
  12. package/docs/story-map/user-tasks/ACT-003-task-003.md +49 -0
  13. package/docs/story-map/user-tasks/ACT-003-task-004.md +47 -0
  14. package/docs/story-map/user-tasks/ACT-004-task-001.md +48 -0
  15. package/docs/story-map/user-tasks/ACT-004-task-002.md +49 -0
  16. package/docs/story-map/user-tasks/ACT-004-task-003.md +47 -0
  17. package/docs/story-map/user-tasks/ACT-005-task-001.md +47 -0
  18. package/docs/story-map/user-tasks/ACT-005-task-002.md +48 -0
  19. package/docs/story-map/user-tasks/ACT-005-task-003.md +48 -0
  20. package/docs/story-map/user-tasks/ACT-005-task-004.md +48 -0
  21. package/docs/story-map/user-tasks/ACT-006-task-001.md +47 -0
  22. package/docs/story-map/user-tasks/ACT-006-task-002.md +46 -0
  23. package/docs/story-map/user-tasks/ACT-006-task-003.md +47 -0
  24. package/docs/story-map/user-tasks/ACT-006-task-004.md +46 -0
  25. package/docs/story-map/user-tasks/ACT-007-task-001.md +48 -0
  26. package/docs/story-map/user-tasks/ACT-007-task-002.md +47 -0
  27. package/docs/story-map/user-tasks/ACT-007-task-003.md +47 -0
  28. package/docs/story-map/user-tasks/ACT-007-task-004.md +48 -0
  29. package/docs/story-map/user-tasks/ACT-008-task-001.md +48 -0
  30. package/docs/story-map/user-tasks/ACT-008-task-002.md +48 -0
  31. package/docs/story-map/user-tasks/ACT-008-task-003.md +47 -0
  32. package/docs/story-map/user-tasks/ACT-008-task-004.md +48 -0
  33. package/docs/story-map/walking-skeleton.md +95 -0
  34. package/docs/value-proposition-canvas.md +171 -0
  35. package/features/mcp-server/query-vpc.feature +48 -0
  36. package/features/mcp-server/read-reference.feature +41 -0
  37. package/features/mcp-server/read-skill.feature +33 -0
  38. package/features/mcp-server/search-guidance.feature +42 -0
  39. package/features/mcp-server/suggest-next-step.feature +61 -0
  40. package/features/mcp-server/validate-gherkin.feature +54 -0
  41. package/mcp-server/QUICKSTART.md +172 -0
  42. package/mcp-server/README.md +171 -0
  43. package/mcp-server/dist/index.d.ts +12 -0
  44. package/mcp-server/dist/index.js +296 -0
  45. package/mcp-server/dist/repository.d.ts +59 -0
  46. package/mcp-server/dist/repository.js +211 -0
  47. package/mcp-server/dist/tools/gherkin-validator.d.ts +16 -0
  48. package/mcp-server/dist/tools/gherkin-validator.js +152 -0
  49. package/mcp-server/dist/tools/guidance-searcher.d.ts +11 -0
  50. package/mcp-server/dist/tools/guidance-searcher.js +34 -0
  51. package/mcp-server/dist/tools/next-step-suggester.d.ts +16 -0
  52. package/mcp-server/dist/tools/next-step-suggester.js +210 -0
  53. package/mcp-server/dist/tools/reference-reader.d.ts +17 -0
  54. package/mcp-server/dist/tools/reference-reader.js +57 -0
  55. package/mcp-server/dist/tools/skill-reader.d.ts +17 -0
  56. package/mcp-server/dist/tools/skill-reader.js +38 -0
  57. package/mcp-server/dist/tools/vpc-querier.d.ts +37 -0
  58. package/mcp-server/dist/tools/vpc-querier.js +158 -0
  59. package/mcp-server/package.json +42 -0
  60. package/mcp-server/src/index.ts +331 -0
  61. package/mcp-server/src/repository.ts +254 -0
  62. package/mcp-server/src/tools/gherkin-validator.ts +206 -0
  63. package/mcp-server/src/tools/guidance-searcher.ts +42 -0
  64. package/mcp-server/src/tools/next-step-suggester.ts +243 -0
  65. package/mcp-server/src/tools/reference-reader.ts +71 -0
  66. package/mcp-server/src/tools/skill-reader.ts +47 -0
  67. package/mcp-server/src/tools/vpc-querier.ts +201 -0
  68. package/mcp-server/tsconfig.json +17 -0
  69. package/package.json +8 -2
@@ -0,0 +1,172 @@
1
+ # MCP Server Quick Start
2
+
3
+ This guide helps you set up the Software Methodology MCP server for use with Claude Desktop.
4
+
5
+ ## Prerequisites
6
+
7
+ - Node.js 14 or higher
8
+ - Claude Desktop app installed
9
+
10
+ ## Installation
11
+
12
+ You can install the software-methodology MCP server in two ways:
13
+
14
+ ### Option 1: Install via npm (Recommended)
15
+
16
+ ```bash
17
+ # Install the parent package which includes the MCP server
18
+ npm install @schilling.mark.a/software-methodology
19
+
20
+ # Navigate to the MCP server directory
21
+ cd node_modules/@schilling.mark.a/software-methodology/mcp-server
22
+
23
+ # Install dependencies and build
24
+ npm install
25
+ npm run build
26
+ ```
27
+
28
+ ### Option 2: Clone from Source
29
+
30
+ ```bash
31
+ # Clone the repository
32
+ git clone https://github.com/MarkSchilling/software-methodology.git
33
+ cd software-methodology/mcp-server
34
+
35
+ # Install dependencies
36
+ npm install
37
+
38
+ # Build the server
39
+ npm run build
40
+ ```
41
+
42
+ ## Configuration
43
+
44
+ ## Configuration
45
+
46
+ ### 1. Configure Claude Desktop
47
+
48
+ Edit your Claude Desktop configuration file:
49
+
50
+ **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
51
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
52
+ **Linux:** `~/.config/Claude/claude_desktop_config.json`
53
+
54
+ Add the MCP server configuration (use the path matching your installation method):
55
+
56
+ **For npm installation:**
57
+ ```json
58
+ {
59
+ "mcpServers": {
60
+ "software-methodology": {
61
+ "command": "node",
62
+ "args": [
63
+ "/FULL/PATH/TO/node_modules/@schilling.mark.a/software-methodology/mcp-server/dist/index.js"
64
+ ]
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ **For source installation:**
71
+ ```json
72
+ {
73
+ "mcpServers": {
74
+ "software-methodology": {
75
+ "command": "node",
76
+ "args": [
77
+ "/FULL/PATH/TO/software-methodology/mcp-server/dist/index.js"
78
+ ]
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ **Important:** Replace `/FULL/PATH/TO/` with the actual absolute path on your system.
85
+
86
+ ### 2. Restart Claude Desktop
87
+
88
+ Quit Claude Desktop completely and restart it. The MCP server will start automatically.
89
+
90
+ ## Verify Installation
91
+
92
+ In Claude Desktop, try these prompts:
93
+
94
+ 1. **"List all available skills"**
95
+ - Should return 11 methodology skills
96
+
97
+ 2. **"Show me the SOLID principles"**
98
+ - Should return content from clean-code/references/solid.md
99
+
100
+ 3. **"What are the pains for Individual Developer segment?"**
101
+ - Should return pains from the VPC
102
+
103
+ 4. **"What should I do next?"**
104
+ - Should analyze project state and suggest next step
105
+
106
+ 5. **"Search for test-first guidance"**
107
+ - Should return RED-GREEN-REFACTOR content
108
+
109
+ ## Available Tools
110
+
111
+ The MCP server provides these tools to Claude:
112
+
113
+ - `read_skill` - Get SKILL.md content for any skill
114
+ - `list_skills` - List all 11 skills with descriptions
115
+ - `read_reference` - Get specific reference documents
116
+ - `list_references` - List references for a skill
117
+ - `query_vpc_segments` - Get customer segments
118
+ - `query_vpc_customer_jobs` - Get jobs for a segment
119
+ - `query_vpc_pains` - Get pains for a segment
120
+ - `query_vpc_gains` - Get gains for a segment
121
+ - `search_vpc` - Search VPC for terms
122
+ - `search_guidance` - Search methodology for relevant content
123
+ - `suggest_next_step` - Get next methodology step
124
+ - `validate_gherkin` - Validate feature files
125
+
126
+ ## Troubleshooting
127
+
128
+ ### Server not starting
129
+
130
+ 1. Check Claude Desktop logs (Help → View Logs)
131
+ 2. Verify the path in config is absolute, not relative
132
+ 3. Ensure `npm run build` completed successfully
133
+ 4. Test the server manually:
134
+ ```bash
135
+ cd mcp-server
136
+ node dist/index.js
137
+ ```
138
+
139
+ ### Tools not appearing
140
+
141
+ 1. Restart Claude Desktop completely (Quit, not just close window)
142
+ 2. Check config JSON syntax is valid (use a JSON validator)
143
+ 3. Verify server name matches exactly: `"software-methodology"`
144
+
145
+ ### Permission errors
146
+
147
+ On macOS/Linux, ensure the script is executable:
148
+ ```bash
149
+ chmod +x mcp-server/dist/index.js
150
+ ```
151
+
152
+ ## Development Mode
153
+
154
+ To develop the MCP server with auto-rebuild:
155
+
156
+ ```bash
157
+ cd mcp-server
158
+ npm run watch
159
+ ```
160
+
161
+ Changes to TypeScript will rebuild automatically. Restart Claude Desktop to pick up changes.
162
+
163
+ ## Next Steps
164
+
165
+ Once the MCP server is running:
166
+
167
+ 1. Try querying the VPC for your project's business context
168
+ 2. Ask "what should I do next?" to get methodology guidance
169
+ 3. Validate your Gherkin scenarios before implementation
170
+ 4. Search for design patterns when refactoring
171
+
172
+ The MCP server works alongside the existing GitHub Copilot integration - use whichever AI assistant fits your workflow.
@@ -0,0 +1,171 @@
1
+ # Software Methodology MCP Server
2
+
3
+ Model Context Protocol (MCP) server providing structured access to the software methodology documentation.
4
+
5
+ ## Features
6
+
7
+ - **Read Skills**: Access SKILL.md documentation for any of the 11 skills
8
+ - **Read References**: Get specific reference documents (e.g., SOLID principles, design patterns)
9
+ - **Query VPC**: Extract customer segments, jobs, pains, and gains from Value Proposition Canvas
10
+ - **Search Guidance**: Find relevant methodology content by scenario or keyword
11
+ - **Suggest Next Steps**: Get methodology guidance based on current project state
12
+ - **Validate Gherkin**: Check feature files against BDD best practices
13
+
14
+ ## Installation
15
+
16
+ **Via npm (recommended):**
17
+ ```bash
18
+ npm install @schilling.mark.a/software-methodology
19
+ cd node_modules/@schilling.mark.a/software-methodology/mcp-server
20
+ npm install
21
+ npm run build
22
+ ```
23
+
24
+ **From source:**
25
+ ```bash
26
+ git clone https://github.com/MarkSchilling/software-methodology.git
27
+ cd software-methodology/mcp-server
28
+ npm install
29
+ npm run build
30
+ ```
31
+
32
+ See [QUICKSTART.md](QUICKSTART.md) for detailed setup instructions.
33
+
34
+ ## Usage with Claude Desktop
35
+
36
+ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
37
+
38
+ **For npm installation:**
39
+ ```json
40
+ {
41
+ "mcpServers": {
42
+ "software-methodology": {
43
+ "command": "node",
44
+ "args": [
45
+ "/path/to/node_modules/@schilling.mark.a/software-methodology/mcp-server/dist/index.js"
46
+ ]
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ **For source installation:**
53
+ ```json
54
+ {
55
+ "mcpServers": {
56
+ "software-methodology": {
57
+ "command": "node",
58
+ "args": [
59
+ "/path/to/software-methodology/mcp-server/dist/index.js"
60
+ ]
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## Available Tools
67
+
68
+ ### read_skill
69
+ Read main SKILL.md documentation for a specific skill.
70
+
71
+ ```
72
+ Input: { skill_name: "atdd-workflow" }
73
+ ```
74
+
75
+ ### list_skills
76
+ List all 11 available skills with descriptions.
77
+
78
+ ### read_reference
79
+ Read a specific reference document.
80
+
81
+ ```
82
+ Input: { reference_path: "clean-code/solid.md" }
83
+ ```
84
+
85
+ ### list_references
86
+ List all reference documents for a skill.
87
+
88
+ ```
89
+ Input: { skill_name: "clean-code" }
90
+ ```
91
+
92
+ ### query_vpc_segments
93
+ Get all customer segments from the Value Proposition Canvas.
94
+
95
+ ### query_vpc_customer_jobs
96
+ Get customer jobs for a specific segment.
97
+
98
+ ```
99
+ Input: { segment: "Individual Developer" }
100
+ ```
101
+
102
+ ### query_vpc_pains
103
+ Get pains for a specific segment.
104
+
105
+ ```
106
+ Input: { segment: "Individual Developer" }
107
+ ```
108
+
109
+ ### query_vpc_gains
110
+ Get gains for a specific segment.
111
+
112
+ ```
113
+ Input: { segment: "Individual Developer" }
114
+ ```
115
+
116
+ ### search_vpc
117
+ Search for specific terms across VPC pains and gains.
118
+
119
+ ```
120
+ Input: { query: "tests" }
121
+ ```
122
+
123
+ ### search_guidance
124
+ Search across all skills and references for relevant guidance.
125
+
126
+ ```
127
+ Input: { query: "test before code" }
128
+ ```
129
+
130
+ ### suggest_next_step
131
+ Get suggestion for next methodology step based on current project state.
132
+
133
+ ```
134
+ Input: { project_path: "/optional/path/to/project" }
135
+ ```
136
+
137
+ ### validate_gherkin
138
+ Validate a Gherkin feature file against methodology best practices.
139
+
140
+ ```
141
+ Input: { content: "Feature: ...\n As a...\n ..." }
142
+ ```
143
+
144
+ ## Development
145
+
146
+ ```bash
147
+ # Watch mode during development
148
+ npm run watch
149
+
150
+ # Run tests
151
+ npm test
152
+
153
+ # Run tests in watch mode
154
+ npm run test:watch
155
+ ```
156
+
157
+ ## Architecture
158
+
159
+ - **index.ts**: MCP server setup and request handlers
160
+ - **repository.ts**: File system access and content parsing
161
+ - **tools/**: Individual tool implementations
162
+ - skill-reader.ts
163
+ - reference-reader.ts
164
+ - vpc-querier.ts
165
+ - guidance-searcher.ts
166
+ - next-step-suggester.ts
167
+ - gherkin-validator.ts
168
+
169
+ ## License
170
+
171
+ MIT
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Software Methodology MCP Server
4
+ *
5
+ * Provides structured access to software methodology documentation:
6
+ * - 11 skills (product-strategy through continuous-improvement)
7
+ * - Reference documents for each skill
8
+ * - Value Proposition Canvas queries
9
+ * - Guidance search across all content
10
+ * - Next-step suggestions based on current context
11
+ */
12
+ export {};
@@ -0,0 +1,296 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Software Methodology MCP Server
4
+ *
5
+ * Provides structured access to software methodology documentation:
6
+ * - 11 skills (product-strategy through continuous-improvement)
7
+ * - Reference documents for each skill
8
+ * - Value Proposition Canvas queries
9
+ * - Guidance search across all content
10
+ * - Next-step suggestions based on current context
11
+ */
12
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
13
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
14
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
15
+ import { MethodologyRepository } from "./repository.js";
16
+ import { SkillReader } from "./tools/skill-reader.js";
17
+ import { ReferenceReader } from "./tools/reference-reader.js";
18
+ import { VPCQuerier } from "./tools/vpc-querier.js";
19
+ import { GuidanceSearcher } from "./tools/guidance-searcher.js";
20
+ import { NextStepSuggester } from "./tools/next-step-suggester.js";
21
+ import { GherkinValidator } from "./tools/gherkin-validator.js";
22
+ const server = new Server({
23
+ name: "software-methodology",
24
+ version: "0.1.0",
25
+ }, {
26
+ capabilities: {
27
+ tools: {},
28
+ resources: {},
29
+ },
30
+ });
31
+ // Initialize repository
32
+ const repository = new MethodologyRepository();
33
+ // Initialize tools
34
+ const skillReader = new SkillReader(repository);
35
+ const referenceReader = new ReferenceReader(repository);
36
+ const vpcQuerier = new VPCQuerier(repository);
37
+ const guidanceSearcher = new GuidanceSearcher(repository);
38
+ const nextStepSuggester = new NextStepSuggester(repository);
39
+ const gherkinValidator = new GherkinValidator(repository);
40
+ /**
41
+ * List all available tools
42
+ */
43
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
44
+ return {
45
+ tools: [
46
+ {
47
+ name: "read_skill",
48
+ description: "Read main SKILL.md documentation for a specific skill",
49
+ inputSchema: {
50
+ type: "object",
51
+ properties: {
52
+ skill_name: {
53
+ type: "string",
54
+ description: "Name of the skill (e.g., 'atdd-workflow', 'clean-code', 'product-strategy')",
55
+ },
56
+ },
57
+ required: ["skill_name"],
58
+ },
59
+ },
60
+ {
61
+ name: "list_skills",
62
+ description: "List all available skills in the methodology",
63
+ inputSchema: {
64
+ type: "object",
65
+ properties: {},
66
+ },
67
+ },
68
+ {
69
+ name: "read_reference",
70
+ description: "Read a specific reference document from a skill",
71
+ inputSchema: {
72
+ type: "object",
73
+ properties: {
74
+ reference_path: {
75
+ type: "string",
76
+ description: "Path to reference (e.g., 'clean-code/solid.md', 'atdd-workflow/red-phase.md')",
77
+ },
78
+ },
79
+ required: ["reference_path"],
80
+ },
81
+ },
82
+ {
83
+ name: "list_references",
84
+ description: "List all reference documents for a specific skill",
85
+ inputSchema: {
86
+ type: "object",
87
+ properties: {
88
+ skill_name: {
89
+ type: "string",
90
+ description: "Name of the skill",
91
+ },
92
+ },
93
+ required: ["skill_name"],
94
+ },
95
+ },
96
+ {
97
+ name: "query_vpc_segments",
98
+ description: "Get all customer segments from Value Proposition Canvas",
99
+ inputSchema: {
100
+ type: "object",
101
+ properties: {},
102
+ },
103
+ },
104
+ {
105
+ name: "query_vpc_customer_jobs",
106
+ description: "Get customer jobs for a specific segment",
107
+ inputSchema: {
108
+ type: "object",
109
+ properties: {
110
+ segment: {
111
+ type: "string",
112
+ description: "Customer segment name (e.g., 'Individual Developer')",
113
+ },
114
+ },
115
+ required: ["segment"],
116
+ },
117
+ },
118
+ {
119
+ name: "query_vpc_pains",
120
+ description: "Get pains for a specific segment",
121
+ inputSchema: {
122
+ type: "object",
123
+ properties: {
124
+ segment: {
125
+ type: "string",
126
+ description: "Customer segment name",
127
+ },
128
+ },
129
+ required: ["segment"],
130
+ },
131
+ },
132
+ {
133
+ name: "query_vpc_gains",
134
+ description: "Get gains for a specific segment",
135
+ inputSchema: {
136
+ type: "object",
137
+ properties: {
138
+ segment: {
139
+ type: "string",
140
+ description: "Customer segment name",
141
+ },
142
+ },
143
+ required: ["segment"],
144
+ },
145
+ },
146
+ {
147
+ name: "search_vpc",
148
+ description: "Search for specific terms across VPC pains and gains",
149
+ inputSchema: {
150
+ type: "object",
151
+ properties: {
152
+ query: {
153
+ type: "string",
154
+ description: "Search term",
155
+ },
156
+ },
157
+ required: ["query"],
158
+ },
159
+ },
160
+ {
161
+ name: "search_guidance",
162
+ description: "Search across all skills and references for relevant guidance",
163
+ inputSchema: {
164
+ type: "object",
165
+ properties: {
166
+ query: {
167
+ type: "string",
168
+ description: "What you're looking for (e.g., 'test before code', 'many parameters', 'hard to test')",
169
+ },
170
+ },
171
+ required: ["query"],
172
+ },
173
+ },
174
+ {
175
+ name: "suggest_next_step",
176
+ description: "Get suggestion for next methodology step based on current project state",
177
+ inputSchema: {
178
+ type: "object",
179
+ properties: {
180
+ project_path: {
181
+ type: "string",
182
+ description: "Path to project directory (optional, defaults to current directory)",
183
+ },
184
+ },
185
+ },
186
+ },
187
+ {
188
+ name: "validate_gherkin",
189
+ description: "Validate a Gherkin feature file against methodology best practices",
190
+ inputSchema: {
191
+ type: "object",
192
+ properties: {
193
+ content: {
194
+ type: "string",
195
+ description: "Gherkin feature file content to validate",
196
+ },
197
+ },
198
+ required: ["content"],
199
+ },
200
+ },
201
+ ],
202
+ };
203
+ });
204
+ /**
205
+ * Handle tool execution
206
+ */
207
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
208
+ const { name, arguments: args } = request.params;
209
+ try {
210
+ switch (name) {
211
+ case "read_skill":
212
+ return await skillReader.readSkill(args?.skill_name);
213
+ case "list_skills":
214
+ return await skillReader.listSkills();
215
+ case "read_reference":
216
+ return await referenceReader.readReference(args?.reference_path);
217
+ case "list_references":
218
+ return await referenceReader.listReferences(args?.skill_name);
219
+ case "query_vpc_segments":
220
+ return await vpcQuerier.getSegments();
221
+ case "query_vpc_customer_jobs":
222
+ return await vpcQuerier.getCustomerJobs(args?.segment);
223
+ case "query_vpc_pains":
224
+ return await vpcQuerier.getPains(args?.segment);
225
+ case "query_vpc_gains":
226
+ return await vpcQuerier.getGains(args?.segment);
227
+ case "search_vpc":
228
+ return await vpcQuerier.search(args?.query);
229
+ case "search_guidance":
230
+ return await guidanceSearcher.search(args?.query);
231
+ case "suggest_next_step":
232
+ return await nextStepSuggester.suggest(args?.project_path);
233
+ case "validate_gherkin":
234
+ return await gherkinValidator.validate(args?.content);
235
+ default:
236
+ throw new Error(`Unknown tool: ${name}`);
237
+ }
238
+ }
239
+ catch (error) {
240
+ return {
241
+ content: [
242
+ {
243
+ type: "text",
244
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
245
+ },
246
+ ],
247
+ isError: true,
248
+ };
249
+ }
250
+ });
251
+ /**
252
+ * List resources (alternative access pattern to tools)
253
+ */
254
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
255
+ const skills = await repository.listSkills();
256
+ return {
257
+ resources: skills.map((skill) => ({
258
+ uri: `methodology://skill/${skill.name}`,
259
+ mimeType: "text/markdown",
260
+ name: skill.displayName,
261
+ description: skill.description,
262
+ })),
263
+ };
264
+ });
265
+ /**
266
+ * Read resource
267
+ */
268
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
269
+ const uri = request.params.uri;
270
+ if (uri.startsWith("methodology://skill/")) {
271
+ const skillName = uri.replace("methodology://skill/", "");
272
+ const result = await skillReader.readSkill(skillName);
273
+ return {
274
+ contents: [
275
+ {
276
+ uri,
277
+ mimeType: "text/markdown",
278
+ text: result.content[0].text,
279
+ },
280
+ ],
281
+ };
282
+ }
283
+ throw new Error(`Unknown resource URI: ${uri}`);
284
+ });
285
+ /**
286
+ * Start the server
287
+ */
288
+ async function main() {
289
+ const transport = new StdioServerTransport();
290
+ await server.connect(transport);
291
+ console.error("Software Methodology MCP server running on stdio");
292
+ }
293
+ main().catch((error) => {
294
+ console.error("Fatal error in main():", error);
295
+ process.exit(1);
296
+ });
@@ -0,0 +1,59 @@
1
+ export interface Skill {
2
+ name: string;
3
+ displayName: string;
4
+ description: string;
5
+ path: string;
6
+ }
7
+ export interface Reference {
8
+ name: string;
9
+ path: string;
10
+ skill: string;
11
+ }
12
+ /**
13
+ * Repository for accessing methodology files
14
+ */
15
+ export declare class MethodologyRepository {
16
+ private methodologyRoot;
17
+ constructor();
18
+ /**
19
+ * List all available skills
20
+ */
21
+ listSkills(): Promise<Skill[]>;
22
+ /**
23
+ * Read a skill's main documentation
24
+ */
25
+ readSkill(skillName: string): Promise<string>;
26
+ /**
27
+ * List references for a skill
28
+ */
29
+ listReferences(skillName: string): Promise<Reference[]>;
30
+ /**
31
+ * Read a reference document
32
+ */
33
+ readReference(skillName: string, referenceName: string): Promise<string>;
34
+ /**
35
+ * Read VPC content
36
+ */
37
+ readVPC(): Promise<string>;
38
+ /**
39
+ * Read story map backbone
40
+ */
41
+ readStoryMap(): Promise<string | null>;
42
+ /**
43
+ * List feature files
44
+ */
45
+ listFeatureFiles(projectPath?: string): Promise<string[]>;
46
+ /**
47
+ * Search all content
48
+ */
49
+ searchContent(query: string): Promise<Array<{
50
+ file: string;
51
+ content: string;
52
+ relevance: number;
53
+ }>>;
54
+ private walkDirectory;
55
+ private extractDescription;
56
+ private toDisplayName;
57
+ private calculateRelevance;
58
+ private extractRelevantSection;
59
+ }