Skip to main content
Glama
README.md
# SDK MCP Server

A configurable Model Context Protocol (MCP) server that provides searchable access to multiple AI/ML SDK documentation and source code. Currently supports OpenAI Agents SDK and Google ADK, with easy extensibility for additional SDKs.

## Purpose

When working with AI/ML SDKs, you often need to:
- Understand how classes and methods work internally across different SDKs
- Compare implementations between different frameworks
- Find the right method signatures and parameters
- See real implementation examples
- Debug issues by examining SDK source code

This MCP server gives AI assistants like Claude instant access to multiple SDK sources, making it a powerful development companion for multi-SDK projects.

## Quick Start

1. **Install dependencies**:
```bash
pip install -r requirements.txt
```

2. **Download SDK sources**:
```bash
python src/download_sdk.py
```
This will download all configured SDKs from `sdks.yaml`.

3. **Configure in Claude Desktop**:

Add to your Claude Desktop configuration:
```json
{
  "mcpServers": {
    "sdk-mcp-server": {
      "command": "python",
      "args": ["/absolute/path/to/sdk-mcp-server/src/server.py"]
    }
  }
}
```

## Available Tools

Each configured SDK gets its own set of tools with the SDK prefix. Currently configured:

### OpenAI Agents SDK Tools (prefix: `openai_agents_`)

- **`openai_agents_list_files()`** - List all available OpenAI SDK source files
- **`openai_agents_get_source(filename)`** - Get source code of specific file
- **`openai_agents_search_code(query)`** - Search for terms, methods, or patterns
- **`openai_agents_get_class(class_name)`** - Extract complete class definition
- **`openai_agents_find_examples(topic)`** - Find usage examples and patterns

### Google ADK Tools (prefix: `google_adk_`)

- **`google_adk_list_files()`** - List all available Google ADK source files
- **`google_adk_get_source(filename)`** - Get source code of specific file
- **`google_adk_search_code(query)`** - Search for terms, methods, or patterns
- **`google_adk_get_class(class_name)`** - Extract complete class definition
- **`google_adk_find_examples(topic)`** - Find usage examples and patterns

### Cross-SDK Tools (coming soon)

- **`list_available_sdks()`** - Show all configured SDKs
- **`search_all_sdks(query)`** - Search across all SDKs simultaneously
- **`compare_implementations(concept, sdk_ids)`** - Compare similar concepts across SDKs

## Usage Examples

### Comparing SDKs:
```
You: "How do OpenAI and Google handle agent creation differently?"
Claude: [Uses openai_agents_get_class("Agent") and google_adk_get_class("Agent")]
*Compares the different approaches and APIs*
```

### Learning a new SDK:
```
You: "Show me how to use tools in Google ADK"
Claude: [Uses google_adk_search_code("tool") and google_adk_find_examples("tool")]
*Explains Google's approach with real examples*
```

### Debugging across SDKs:
```
You: "Why does handoff work in OpenAI but not in my Google ADK code?"
Claude: [Searches both SDKs for handoff implementations]
*Identifies the differences and helps fix the issue*
```

## Configuration

### Adding a New SDK

Edit `sdks.yaml` to add new SDKs:

```yaml
sdks:
  your_sdk:
    name: "Your SDK Name"
    description: "Description of the SDK"
    source:
      type: "github"
      repo: "org/repo-name"
      branch: "main"
      path: "src"
    file_patterns:
      - "**/*.py"
    tools:
      prefix: "your_sdk"
      descriptions:
        list_files: "List all Your SDK source files"
        # ... other tool descriptions
```

### Supported Source Types

- **GitHub repositories** - Public repos with Python/TypeScript code
- **Direct URLs** (coming soon) - ZIP/TAR archives
- **Local paths** (coming soon) - Local SDK installations

## File Structure

```
sdk-mcp-server/
├── src/
│   ├── server.py           # Main MCP server implementation
│   └── download_sdk.py     # SDK downloader and indexer
├── data/                   # Downloaded SDK files (git-ignored)
│   ├── openai_agents/      # OpenAI SDK files
│   └── google_adk/         # Google ADK files
├── sdks.yaml              # SDK configuration
├── requirements.txt       # Python dependencies
└── run_server.sh         # Server startup script
```

## Updating

To get the latest SDK sources:
```bash
python src/download_sdk.py
```

This fetches the latest code from all configured SDKs in `sdks.yaml`.

## Tips for Best Results

1. **Specify the SDK** - Mention which SDK you're working with
2. **Use SDK prefixes** - Each tool is prefixed with the SDK name
3. **Compare implementations** - Ask about differences between SDKs
4. **Request examples** - Each SDK has example-finding capabilities

## Why This Helps

- **Multi-SDK support** - Work with multiple frameworks seamlessly
- **Instant answers** - No need to browse multiple repos or docs
- **Direct comparisons** - See how different SDKs solve similar problems
- **Accurate information** - Always from the latest source code
- **Context-aware** - AI understands full implementations across SDKs

## Contributing

To add support for a new SDK:

1. Add configuration to `sdks.yaml`
2. Test with `python src/download_sdk.py`
3. Submit a pull request

## License

MIT License - see LICENSE file for details.