@oss-scout/mcp 0.4.0 → 0.6.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/dist/tools.js CHANGED
@@ -43,6 +43,45 @@ export function registerTools(server, scout) {
43
43
  };
44
44
  }
45
45
  });
46
+ server.tool("scout-features", "Surface feature-scoped contribution opportunities in repos where you have 3+ merged PRs", {
47
+ maxResults: z
48
+ .number()
49
+ .optional()
50
+ .describe("Maximum number of results to return (default 10)"),
51
+ anchorThreshold: z
52
+ .number()
53
+ .int()
54
+ .min(1)
55
+ .max(50)
56
+ .optional()
57
+ .describe("Anchor threshold override (default 3)"),
58
+ splitRatio: z
59
+ .number()
60
+ .min(0)
61
+ .max(1)
62
+ .optional()
63
+ .describe("Quick-wins/bigger-bets split ratio (default 0.6)"),
64
+ }, async ({ maxResults, anchorThreshold, splitRatio }) => {
65
+ try {
66
+ const result = await withTimeout(scout.features({
67
+ count: maxResults ?? 10,
68
+ anchorThreshold,
69
+ splitRatio,
70
+ }));
71
+ scout.saveResults([...result.quickWins, ...result.biggerBets]);
72
+ await scout.checkpoint();
73
+ return {
74
+ content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
75
+ };
76
+ }
77
+ catch (err) {
78
+ const msg = err instanceof Error ? err.message : String(err);
79
+ return {
80
+ content: [{ type: "text", text: `Error: ${msg}` }],
81
+ isError: true,
82
+ };
83
+ }
84
+ });
46
85
  server.tool("vet", "Vet a specific GitHub issue for contribution viability", {
47
86
  issueUrl: z
48
87
  .string()
@@ -184,6 +223,8 @@ export function registerTools(server, scout) {
184
223
  "interPhaseDelayMs",
185
224
  "broadPhaseDelayMs",
186
225
  "skipBroadWhenSufficientResults",
226
+ "featuresAnchorThreshold",
227
+ "featuresSplitRatio",
187
228
  ]);
188
229
  const BOOLEAN_KEYS = new Set(["includeDocIssues"]);
189
230
  server.tool("config-set", "Update an oss-scout configuration preference", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oss-scout/mcp",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "MCP server for oss-scout — exposes issue discovery and vetting as MCP tools",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,15 +18,16 @@
18
18
  "dependencies": {
19
19
  "@modelcontextprotocol/sdk": "^1.27.1",
20
20
  "zod": "^4.3.6",
21
- "@oss-scout/core": "^0.4.0"
21
+ "@oss-scout/core": "^0.9.0"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^25.5.0",
25
+ "@vitest/coverage-v8": "^4.1.4",
25
26
  "esbuild": "^0.27.4",
26
27
  "tsx": "^4.21.0",
27
28
  "typescript": "^5.9.3",
28
- "@vitest/coverage-v8": "^4.1.0",
29
- "vitest": "^4.1.0"
29
+ "vite": "^8.0.5",
30
+ "vitest": "^4.1.4"
30
31
  },
31
32
  "keywords": [
32
33
  "mcp",