|
1 | | -# User Story: US-MCP-002 - FastMCP Tool Server Suite + Client Configuration |
| 1 | +# User Story: US-MCP-002 - Development MCP Tool Server Suite + Client Configuration |
2 | 2 |
|
3 | 3 | **Epic**: EPIC-2: Software Development Agents |
4 | 4 | **Sprint**: Sprint 8 |
|
11 | 11 | ## Story Overview |
12 | 12 |
|
13 | 13 | **As a** developer building agents with MCP tools |
14 | | -**I want** a clear, repeatable way to run local FastMCP servers and connect to them from a client |
15 | | -**So that** DeepAgents-based agents can reliably discover and call MCP tools during development and demos |
| 14 | +**I want** a clear, repeatable way to run development-focused MCP servers and connect to them from a client |
| 15 | +**So that** DeepAgents-based agents can reliably discover and call the tools needed for real software development workflows (repo inspection, search, tests, git, docs) |
16 | 16 |
|
17 | 17 | ## Acceptance Criteria |
18 | 18 |
|
19 | | -- [ ] Define and document canonical local MCP server ports/endpoints for: |
20 | | - - weather (8000), finance (8001), news (8002), calculator (8003) |
21 | | -- [ ] Provide a runbook for starting all servers locally (separate terminals) |
22 | | -- [ ] Provide a simple client-side connectivity check (tool discovery and one tool call per server) |
23 | | -- [ ] Failure modes documented (server down, wrong port, missing env var such as NEWS_API_KEY) |
| 19 | +- [ ] Define and document canonical local MCP server ports/endpoints for a **development server suite**: |
| 20 | + - **dev_repo** (repo inspection: list/read) on **8100** |
| 21 | + - **dev_search** (code search: grep/semantic-ish search) on **8101** |
| 22 | + - **dev_tests** (test runner: pytest/targeted commands, allowlisted) on **8102** |
| 23 | + - **github** (official GitHub MCP server; remote; uses `GITHUB_TOKEN`) on **(remote)** |
| 24 | + - **dev_docs** (link scan/validate + docs navigation helpers) on **8104** |
| 25 | + - **dev_research** (internet research: web search + source capture) on **8105** |
| 26 | + - **dev_knowledge** (RAG retrieval + knowledge base maintenance) on **8106** |
| 27 | +- [ ] Provide a runbook for starting the suite locally (separate terminals) and verifying the ports are reachable |
| 28 | +- [ ] Provide a minimal client-side connectivity check: |
| 29 | + - tool discovery per server |
| 30 | + - one safe read-only tool call per server (happy path) |
| 31 | +- [ ] Document failure modes and mitigations: |
| 32 | + - server down / wrong port |
| 33 | + - missing optional dependencies (pytest, git) |
| 34 | + - missing env vars for optional integrations |
| 35 | + - permission errors (workspace path not accessible) |
| 36 | +- [ ] Define a safety policy for development MCP tools: |
| 37 | + - **Default read-only** |
| 38 | + - **Any write/exec/git-push requires HITL approval** (handled by US-DEEPAGENTS-003) |
| 39 | + |
| 40 | +## Proposed Tool Map (v1) |
| 41 | + |
| 42 | +These tool IDs are the *capabilities* we want available to the DeepAgent. Implementation can reuse existing tool functions where they already exist (see Notes). |
| 43 | + |
| 44 | +- **dev_repo** (read-only) |
| 45 | + - `file.list_directory` |
| 46 | + - `file.read` |
| 47 | + - `file.search_content` |
| 48 | + - `file.get_info` |
| 49 | + - `file.exists` |
| 50 | +- **dev_docs** (read-only by default; healing is gated) |
| 51 | + - `link.scan_all` |
| 52 | + - `link.validate` |
| 53 | + - `link.generate_report` |
| 54 | + - `link.heal` (RESTRICTED; requires HITL approval) |
| 55 | +- **dev_search** (read-only) |
| 56 | + - `file.search_content` (baseline) |
| 57 | + - (future) fast code search across the repo with file-type filters |
| 58 | +- **dev_tests** (execution; allowlisted commands only; can be HITL-gated) |
| 59 | + - run `pytest` for a specific path/test id |
| 60 | + - parse failures into a structured summary |
| 61 | +- **github** (remote; read-only by default; any write ops are gated) |
| 62 | + - Use the official GitHub MCP server at `https://api.githubcopilot.com/mcp/` |
| 63 | + - Auth: `Authorization: Bearer $GITHUB_TOKEN` |
| 64 | + - Prefer read-only operations for v1 (search, read, list); gate write operations via HITL |
| 65 | +- **dev_research** (network access; read-only) |
| 66 | + - `research.plan_research` (query decomposition) |
| 67 | + - `research.quick_search` (fast web research) |
| 68 | + - `research.web_search` (full research swarm with verification/synthesis) |
| 69 | + - `research.get_stats` (capabilities + diagnostics) |
| 70 | +- **dev_knowledge** (RAG + knowledge base) |
| 71 | + - `rag_swarm.query` (end-to-end: retrieval + response + metrics) |
| 72 | + - `rag_swarm.semantic_search` (retrieval only) |
| 73 | + - `rag_swarm.analyze_query` (query analysis/rewrites) |
| 74 | + - `rag_swarm.get_stats` (capabilities + diagnostics) |
| 75 | + - (future) software catalog / anti-duplication: |
| 76 | + - `software_catalog.build_comprehensive_catalog` |
| 77 | + - `software_catalog.search_catalog_semantic` |
24 | 78 |
|
25 | 79 | ## Notes |
26 | 80 |
|
27 | 81 | - Reference implementation patterns: `tests/deep_agents/deep_agents_mcp.ipynb` |
28 | | -- Local server code lives in: `utils/mcp/fastmcp/` |
| 82 | +- Existing FastMCP demo servers live in: `utils/mcp/fastmcp/` (weather/finance/news/calculator). Keep them for demos, but Sprint 8 focuses on development tooling. |
| 83 | +- Existing internal MCP tool registry exists under `utils/mcp/server.py` and `utils/mcp/tools/`; we should reuse tool implementations where possible instead of re-inventing them. |
| 84 | +- Existing MCP research and RAG tools already exist: |
| 85 | + - `utils/mcp/tools/research_swarm_tools.py` (web research swarm) |
| 86 | + - `utils/mcp/tools/rag_swarm_tools.py` (RAG swarm over ContextEngine/Qdrant) |
29 | 87 |
|
30 | 88 |
|
0 commit comments