Skip to content

Commit 27db291

Browse files
docs: add executive summary for tool loading research
Co-authored-by: Tiberriver256 <6989492+Tiberriver256@users.noreply.github.com>
1 parent d21eb73 commit 27db291

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

docs/research/SUMMARY.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Research Summary: Tool Loading Strategies
2+
3+
## Problem Statement
4+
Our MCP server loads 43 tools at once, which can overwhelm LLMs and make tool selection less efficient.
5+
6+
## Research Conducted
7+
Analyzed two Microsoft MCP server implementations:
8+
1. **microsoft/azure-devops-mcp** (TypeScript) - 79 tools total
9+
2. **microsoft/mcp Azure.Mcp.Server** (C#) - 128 tools total
10+
11+
## Key Findings
12+
13+
### Strategy 1: Domain-based Filtering ⭐ RECOMMENDED
14+
Used by microsoft/azure-devops-mcp
15+
- **Concept:** Users select which feature domains to load
16+
- **Example:** `--domains core work-items repositories` loads only those domains
17+
- **Reduction:** Variable based on user selection (typically 50-70% reduction)
18+
- **Complexity:** Low (1-2 days implementation)
19+
- **Default:** All domains (backward compatible)
20+
21+
### Strategy 2: Multi-tier Mode System
22+
Used by Azure.Mcp.Server
23+
- **Concept:** Three abstraction levels
24+
- Single mode: 1 unified tool
25+
- Namespace mode: 25 service-level tools (default)
26+
- All mode: 128 individual tools
27+
- **Reduction:** 81% in default mode (128 → 25)
28+
- **Complexity:** High (1-2 weeks implementation)
29+
- **Additional:** Supports consolidated intent-based grouping
30+
31+
## Recommendation
32+
33+
**Implement Domain-based Filtering** as Phase 1
34+
35+
### Why?
36+
- ✅ Quick to implement (1-2 days)
37+
- ✅ Proven successful
38+
- ✅ Perfect fit with our architecture
39+
- ✅ Backward compatible
40+
- ✅ Low risk
41+
- ✅ Can evolve later
42+
43+
### Proposed Domains
44+
Map existing features to domains:
45+
- `core` → organizations, projects, users (4 tools)
46+
- `work-items` → work items feature (5 tools)
47+
- `repositories` → repositories feature (9 tools)
48+
- `pull-requests` → pull requests feature (7 tools)
49+
- `pipelines` → pipelines feature (8 tools)
50+
- `wikis` → wikis feature (6 tools)
51+
- `search` → search feature (3 tools)
52+
53+
### User Experience
54+
```bash
55+
# Load only work item tools
56+
npm run start -- --domains work-items
57+
58+
# Load core + repositories
59+
npm run start -- --domains core repositories
60+
61+
# Load everything (default, backward compatible)
62+
npm run start
63+
```
64+
65+
## Next Steps
66+
1. Create `src/shared/domains.ts` with Domain enum and manager
67+
2. Update `src/index.ts` to parse domain arguments
68+
3. Modify `src/server.ts` for conditional tool registration
69+
4. Update documentation with domain usage examples
70+
5. Test with various domain combinations
71+
72+
## Impact
73+
- **Tool reduction:** 50-90% depending on user selection
74+
- **Better LLM performance:** Fewer tools = better selection accuracy
75+
- **User control:** Users choose what they need
76+
- **Migration path:** Can upgrade to more sophisticated approaches later
77+
78+
## Full Details
79+
See [tool-loading-strategies.md](./tool-loading-strategies.md) for complete analysis, code examples, and implementation guidance.

0 commit comments

Comments
 (0)