Skip to main content
Glama
README.md
# tool-disco

![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)
   ![MCP](https://img.shields.io/badge/MCP-Server-purple.svg)
   ![License](https://img.shields.io/badge/license-MIT-blue.svg)
   
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

A3.7/5.0

Scored across 8 tools

Disambiguation3/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues