# MCP Tools Reference
The AutoDocs MCP Server provides **8 production-ready MCP tools** organized into three functional categories. Each tool follows MCP protocol standards and provides structured JSON responses.
## Tool Categories Overview
| Category | Tools | Purpose |
|----------|-------|---------|
| **Core Documentation** | `scan_dependencies`, `get_package_docs`, `get_package_docs_with_context` | Parse projects and fetch documentation |
| **Cache Management** | `refresh_cache`, `get_cache_stats` | Manage documentation cache |
| **System Health** | `health_check`, `ready_check`, `get_metrics` | Monitor system status |
## Core Documentation Tools
### `scan_dependencies`
**Purpose:** Parse Python project dependencies from pyproject.toml files with graceful error handling.
#### Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `project_path` | string | No | Current directory | Path to project directory containing pyproject.toml |
#### Response Structure
```json
{
"success": true,
"project_name": "my-fastapi-app",
"total_dependencies": 12,
"successfully_parsed": 10,
"failed_to_parse": 2,
"dependencies": [
{
"name": "fastapi",
"version_constraint": ">=0.100.0",
"category": "main"
},
{
"name": "pytest",
"version_constraint": "^7.0.0",
"category": "dev"
}
],
"parsing_errors": [
{
"raw_spec": "invalid-package==",
"error": "Invalid version constraint"
}
],
"metadata": {
"python_requires": ">=3.8",
"description": "My FastAPI application"
}
}
```
#### Use Cases
- **Project Discovery**: Understand what packages a project uses
- **Dependency Analysis**: Get structured dependency information
- **Version Constraint Validation**: Identify malformed dependency specifications
- **Development Setup**: Prepare environment for new projects
#### Example Usage
AI assistants can use this tool when users ask questions like:
- "What packages does this project use?"
- "Show me the project dependencies"
- "What version of FastAPI is required?"
---
### `get_package_docs_with_context` ⭐
**Purpose:** Retrieve comprehensive documentation context including the requested package and its most relevant dependencies with smart scoping. This is the primary Phase 4 tool for rich AI context.
#### Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `package_name` | string | Yes | - | Primary package name to document |
| `version_constraint` | string | No | Latest | Version constraint for primary package |
| `include_dependencies` | boolean | No | `true` | Whether to include dependency context |
| `context_scope` | string | No | `"smart"` | Context scope: `"primary_only"`, `"runtime"`, or `"smart"` |
| `max_dependencies` | integer | No | 8 | Maximum number of dependencies to include |
| `max_tokens` | integer | No | 30000 | Maximum token budget for context |
#### Context Scope Options
- **`"primary_only"`**: Only the requested package, no dependencies
- **`"runtime"`**: Include all runtime dependencies (excludes dev/test dependencies)
- **`"smart"`**: Intelligent selection of most relevant dependencies based on framework awareness
#### Response Structure
```json
{
"success": true,
"context": {
"primary_package": {
"name": "fastapi",
"version": "0.104.1",
"summary": "FastAPI framework, high performance, easy to learn, fast to code, ready for production",
"key_features": [
"Automatic interactive API documentation",
"Based on standard Python type hints",
"High performance, on par with NodeJS and Go"
],
"main_classes": ["FastAPI", "APIRouter", "Depends", "HTTPException"],
"key_functions": ["Depends", "HTTPException", "status"],
"usage_examples": "from fastapi import FastAPI\n\napp = FastAPI()\n\n@app.get('/')\ndef read_root():\n return {'Hello': 'World'}",
"documentation_url": "https://fastapi.tiangolo.com/"
},
"runtime_dependencies": [
{
"name": "pydantic",
"version": "2.5.1",
"why_included": "Required by fastapi for data validation",
"relevance_score": 0.95,
"summary": "Data validation using Python type hints",
"key_features": [
"Data validation and settings management",
"JSON serialization/deserialization"
],
"main_classes": ["BaseModel", "Field", "validator"]
},
{
"name": "starlette",
"version": "0.27.0",
"why_included": "Required by fastapi as ASGI foundation",
"relevance_score": 0.90,
"summary": "Lightweight ASGI framework/toolkit",
"key_features": [
"ASGI framework foundation",
"Routing and middleware support"
],
"main_classes": ["Request", "Response", "Middleware"]
}
],
"context_metadata": {
"total_packages": 3,
"context_scope": "smart (2 runtime deps)",
"token_estimate": 15420,
"truncated": false,
"framework_detected": "FastAPI"
}
},
"performance": {
"total_time_seconds": 0.89,
"cache_hits": 1,
"cache_misses": 2,
"network_requests": 2,
"concurrent_fetches": 2
}
}
```
#### Smart Framework Detection
The tool includes special handling for major frameworks:
| Framework | Enhanced Dependencies | Priority Boost |
|-----------|----------------------|----------------|
| **FastAPI** | pydantic, starlette, uvicorn | +0.3 relevance |
| **Django** | django-rest-framework, psycopg2 | +0.2 relevance |
| **Flask** | werkzeug, jinja2, flask-sqlalchemy | +0.2 relevance |
| **SQLAlchemy** | alembic, psycopg2, pymysql | +0.2 relevance |
#### Use Cases
- **AI Code Generation**: Provide comprehensive context for accurate code suggestions
- **Framework Learning**: Understand how packages work together in ecosystems
- **API Integration**: Get complete context for API libraries and their dependencies
- **Troubleshooting**: Understand package relationships when debugging issues
#### Example Usage
AI assistants use this tool when users ask questions like:
- "Help me build a FastAPI application with user authentication"
- "Show me how to use SQLAlchemy with async support"
- "What are the key features of the requests library?"
---
### `get_package_docs` (Legacy)
**Purpose:** Retrieve basic documentation for a single package without dependency context. This is the legacy tool - prefer `get_package_docs_with_context` for rich AI contexts.
#### Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `package_name` | string | Yes | - | Package name to document |
| `version_constraint` | string | No | Latest | Version constraint for the package |
| `query` | string | No | None | Filter documentation sections by keyword |
#### Response Structure
```json
{
"success": true,
"package": {
"name": "requests",
"version": "2.31.0",
"summary": "Python HTTP for Humans",
"key_features": [
"Simple HTTP library for Python",
"Built-in JSON decoder",
"Automatic decompression"
],
"main_classes": ["Session", "Request", "Response"],
"usage_examples": "import requests\n\nr = requests.get('https://api.github.com')\nprint(r.json())"
},
"performance": {
"fetch_time_seconds": 0.12,
"cache_hit": true
}
}
```
#### Use Cases
- **Simple Package Lookup**: Quick documentation for single packages
- **Legacy Integration**: Existing code that depends on the simpler interface
- **Minimal Context**: When you specifically don't want dependency information
## Cache Management Tools
### `refresh_cache`
**Purpose:** Clear the local documentation cache to force fresh fetches from PyPI.
#### Parameters
None - this tool takes no parameters.
#### Response Structure
```json
{
"success": true,
"cache_cleared": true,
"statistics": {
"files_removed": 45,
"space_freed_mb": 12.3,
"cache_directory": "/Users/user/.cache/autodoc-mcp"
},
"message": "Cache successfully cleared"
}
```
#### Use Cases
- **Force Refresh**: Clear stale cache entries
- **Debugging**: Eliminate cache-related issues
- **Development**: Test with fresh documentation fetches
- **Maintenance**: Regular cache cleanup
#### Example Usage
AI assistants use this when users ask:
- "Clear the AutoDocs cache"
- "Refresh the documentation cache"
- "Remove cached documentation"
---
### `get_cache_stats`
**Purpose:** View statistics about the documentation cache including cached packages and performance metrics.
#### Parameters
None - this tool takes no parameters.
#### Response Structure
```json
{
"success": true,
"cache_info": {
"total_entries": 127,
"total_size_mb": 45.2,
"cache_directory": "/Users/user/.cache/autodoc-mcp",
"oldest_entry": "2024-01-15T10:30:00Z",
"newest_entry": "2024-08-10T14:25:00Z"
},
"performance_stats": {
"total_requests": 1543,
"cache_hits": 1205,
"cache_misses": 338,
"hit_rate_percent": 78.1,
"average_response_time_ms": 45
},
"cached_packages": [
{
"name": "fastapi",
"version": "0.104.1",
"cached_at": "2024-08-10T14:25:00Z",
"size_kb": 234
},
{
"name": "pydantic",
"version": "2.5.1",
"cached_at": "2024-08-10T14:24:00Z",
"size_kb": 189
}
]
}
```
#### Use Cases
- **Cache Monitoring**: Understand cache performance and usage
- **Storage Management**: Monitor disk space usage
- **Performance Analysis**: Analyze hit rates and response times
- **Debugging**: Verify which packages are cached
#### Example Usage
AI assistants use this when users ask:
- "What's the status of the AutoDocs cache?"
- "How much space is the documentation cache using?"
- "Show me cache performance statistics"
## System Health & Monitoring Tools
### `health_check`
**Purpose:** Comprehensive health status check for monitoring systems and load balancers.
#### Parameters
None - this tool takes no parameters.
#### Response Structure
```json
{
"success": true,
"overall_status": "healthy",
"timestamp": "2024-08-10T14:30:00Z",
"components": {
"cache_system": {
"status": "healthy",
"details": {
"cache_directory_accessible": true,
"cache_write_test": "passed",
"cache_read_test": "passed"
}
},
"network_connectivity": {
"status": "healthy",
"details": {
"pypi_reachable": true,
"dns_resolution": "working",
"last_successful_request": "2024-08-10T14:29:45Z"
}
},
"core_services": {
"status": "healthy",
"details": {
"dependency_parser": "initialized",
"context_fetcher": "initialized",
"doc_fetcher": "initialized"
}
}
},
"system_info": {
"version": "0.4.2",
"uptime_seconds": 3600,
"python_version": "3.11.5",
"memory_usage_mb": 128.5
}
}
```
#### Health Status Values
- **`"healthy"`**: All systems operational
- **`"degraded"`**: Some non-critical issues present
- **`"unhealthy"`**: Critical systems failing
#### Use Cases
- **Load Balancer Checks**: Determine if instance can handle traffic
- **Monitoring Systems**: Automated health monitoring
- **Debugging**: Diagnose system-level issues
- **Operations**: Pre-deployment health verification
---
### `ready_check`
**Purpose:** Kubernetes-style readiness check for deployment orchestration.
#### Parameters
None - this tool takes no parameters.
#### Response Structure
```json
{
"success": true,
"ready": true,
"timestamp": "2024-08-10T14:30:00Z",
"checks": {
"services_initialized": true,
"cache_accessible": true,
"network_available": true
},
"message": "Service ready to handle requests"
}
```
#### Ready States
- **`ready: true`**: Service can handle MCP requests
- **`ready: false`**: Service is initializing or has critical issues
#### Use Cases
- **Container Orchestration**: Kubernetes readiness probes
- **Deployment Automation**: Wait for service readiness
- **Load Balancing**: Route traffic only to ready instances
- **CI/CD Pipelines**: Verify deployment success
---
### `get_metrics`
**Purpose:** Detailed system performance metrics for monitoring and analysis.
#### Parameters
None - this tool takes no parameters.
#### Response Structure
```json
{
"success": true,
"timestamp": "2024-08-10T14:30:00Z",
"performance_metrics": {
"request_stats": {
"total_requests": 1543,
"successful_requests": 1498,
"failed_requests": 45,
"success_rate_percent": 97.1,
"average_response_time_ms": 245,
"p95_response_time_ms": 850,
"p99_response_time_ms": 1200
},
"cache_metrics": {
"cache_hits": 1205,
"cache_misses": 338,
"hit_rate_percent": 78.1,
"total_cached_packages": 127,
"cache_size_mb": 45.2
},
"network_metrics": {
"pypi_requests": 892,
"successful_fetches": 847,
"failed_fetches": 45,
"average_fetch_time_ms": 180,
"concurrent_request_count": 3
},
"system_metrics": {
"memory_usage_mb": 128.5,
"cpu_usage_percent": 12.3,
"uptime_seconds": 3600,
"active_connections": 5
}
},
"error_summary": {
"network_errors": 23,
"parsing_errors": 12,
"cache_errors": 8,
"other_errors": 2
}
}
```
#### Metric Categories
- **Request Stats**: MCP tool invocation performance
- **Cache Metrics**: Documentation cache performance
- **Network Metrics**: PyPI API interaction performance
- **System Metrics**: Resource usage and system health
- **Error Summary**: Error counts by category
#### Use Cases
- **Performance Monitoring**: Track system performance over time
- **Capacity Planning**: Understand resource usage patterns
- **SLA Monitoring**: Verify response time commitments
- **Optimization**: Identify performance bottlenecks
## Tool Selection Guide
### For AI Assistants
**Primary Tool**: Use `get_package_docs_with_context` for most documentation requests.
**When to use each tool:**
| User Request | Recommended Tool | Reason |
|--------------|------------------|---------|
| "Help me with FastAPI" | `get_package_docs_with_context` | Provides FastAPI + pydantic + starlette context |
| "What packages does this project use?" | `scan_dependencies` | Analyzes local project structure |
| "Clear the documentation cache" | `refresh_cache` | Direct cache management |
| "Is AutoDocs working properly?" | `health_check` | Comprehensive status check |
### For Monitoring Systems
| Use Case | Tool | Integration Pattern |
|----------|------|-------------------|
| **Load Balancer Health** | `health_check` | HTTP 200 if healthy |
| **Kubernetes Readiness** | `ready_check` | Pod readiness probe |
| **Performance Monitoring** | `get_metrics` | Periodic metric collection |
| **Cache Monitoring** | `get_cache_stats` | Storage and performance tracking |
### Error Handling
All tools return consistent error structures:
```json
{
"success": false,
"error": {
"type": "NetworkError",
"message": "Failed to connect to PyPI",
"details": {
"url": "https://pypi.org/pypi/fastapi/json",
"timeout_seconds": 15
},
"suggestion": "Check network connectivity and try again"
}
}
```
Common error types:
- **`NetworkError`**: PyPI connectivity issues
- **`ValidationError`**: Invalid parameters
- **`CacheError`**: Cache system issues
- **`ParsingError`**: Package metadata parsing failures
- **`RateLimitError`**: PyPI rate limiting
Each error includes actionable suggestions for resolution.