tool-disco
# tool-disco



A tool discovery-oriented MCP (Model Context Protocol) server that matches tools to natural language goals. It integrates with Azure DevOps to discover tools documented in wikis and uses code-graph-rag for code analysis.
## Features
- **Natural Language Tool Discovery**: Describe what you want to accomplish, and tool-disco finds matching tools
- **Azure DevOps Integration**: Scans organization wikis for tool documentation with front matter metadata
- **Code Graph Integration**: Ingests repositories via [code-graph-rag-mcp](https://github.com/er77/code-graph-rag-mcp) for code analysis
- **Tool Composition**: Automatically generates multi-tool workflows
- **Proxy Testing**: Tests tool candidates using lightweight proxies, scripts, and simple models
## Installation
```bash
npm install
npm run build
```
## Usage
### As an MCP Server
Add to your MCP client configuration:
```json
{
"mcpServers": {
"tool-disco": {
"command": "node",
"args": ["/path/to/tool-disco/dist/index.js"]
}
}
}
```
### Available Tools
#### `discover_tools`
Discover tools matching a natural language goal.
```json
{
"goal": "I need to process CSV files and generate reports",
"context": "Working with sales data",
"constraints": ["Must handle large files", "Output as PDF"]
}
```
#### `scan_azure_devops`
Scan an Azure DevOps organization for repositories with wikis and extract tool metadata.
```json
{
"organization": "https://dev.azure.com/myorg",
"pat": "your-personal-access-token",
"project": "optional-project-name"
}
```
#### `ingest_repo`
Ingest a repository into the code graph for tool discovery.
```json
{
"repoUrl": "https://github.com/org/repo",
"repoName": "my-repo"
}
```
#### `test_composition`
Test a tool composition against the discovery goal.
```json
{
"compositionId": "composed-tool1-tool2",
"inputs": { "file": "data.csv" }
}
```
#### `list_candidates`
List all registered tool candidates.
#### `get_discovery_stats`
Get statistics about discovered tools and ingested repositories.
## Wiki Front Matter Format
Document tools in Azure DevOps wikis using YAML front matter:
```markdown
---
toolName: data_processor
description: Processes data files and extracts insights
tags: data,processing,etl
timeout: 5000
implementation: scripts/processor.js
inputs:
file:
type: string
description: Path to the input file
---
# Data Processor
Documentation for the data processor tool...
```
## Architecture
```mermaid
graph TB
subgraph "Tool Disco MCP Server"
ADO[Azure DevOps Integration]
CG[Code Graph Integration]
TD[Tool Discovery]
PT[Proxy Tester]
ADO --> TD
CG --> TD
TD --> PT
end
```
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Type check
npm run lint
```
TDQS
Scored across 8 tools
Most tools have clear roles, but discover_tools and plan_capabilities_for_goal both address goal-driven tool selection, which could cause misselection. test_composition adds another layer of ambiguity about how it relates to discover_tools.
All tools follow a consistent verb_noun snake_case pattern (e.g., discover_tools, ingest_repo, invoke_planned_tool). The naming convention is uniform and predictable.
8 tools is well within the ideal 3-15 range, covering distinct stages of the discovery workflow without excess. Each tool appears to serve a necessary function.
The set covers discovery, ingestion, planning, invocation, and stats, forming a cohesive workflow. However, it lacks explicit management of registered candidates beyond Azure DevOps scanning, which could be a minor gap.