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

A Model Context Protocol (MCP) server that provides comprehensive documentation and usage examples for the [AutoFixture](https://github.com/AutoFixture/AutoFixture) testing library. This server runs in a Docker container and can be easily integrated with VSCode, Cursor, or Claude Desktop.

## Features

- **Quick Start Guide**: Get up and running with AutoFixture basics
- **Method Search**: Search for specific AutoFixture methods and their usage
- **Class Information**: Detailed documentation for core AutoFixture classes
- **Package Information**: NuGet package details for all AutoFixture extensions
- **Usage Patterns**: Common patterns and code examples
- **Best Practices**: Recommended approaches for using AutoFixture
- **GitHub Documentation**: Fetch latest docs directly from the repository

## Available Tools

1. **get_quick_start**: Get AutoFixture quick start guide and basic usage examples
2. **search_methods**: Search for AutoFixture methods (e.g., 'Create', 'Build', 'Freeze')
3. **get_class_info**: Get detailed information about classes like 'Fixture' or 'IFixture'
4. **get_packages**: List AutoFixture NuGet packages by category (core/mocking/testing/all)
5. **get_usage_pattern**: Get common usage patterns (e.g., 'customizing', 'automaq', 'xunit')
6. **get_best_practices**: Get AutoFixture best practices and recommendations
7. **fetch_github_docs**: Fetch latest documentation from GitHub (README, cheatsheet, FAQ)

## Prerequisites

- Docker installed on your system
- Node.js 20+ (for local development)
- VSCode, Cursor, or Claude Desktop

## Quick Setup

### Option 1: Using Docker (Recommended)

1. **Build the Docker image:**
   ```bash
   docker build -t autofixture-mcp-server:latest .
   ```

2. **Test the server:**
   ```bash
   docker run --rm -i autofixture-mcp-server:latest
   ```

### Option 2: Using Docker Compose

```bash
docker-compose up -d
```

## Integration with Cursor/VSCode

### Cursor Setup

1. Open Cursor settings (Cmd+Shift+P → "Preferences: Open User Settings (JSON)")
2. Add the MCP server configuration:

```json
{
  "mcp": {
    "servers": {
      "autofixture": {
        "command": "/Users/admin/dev/mcp/mcp-wrapper.sh"
      }
    }
  }
}
```

Or use the provided config file:
```bash
# Copy the configuration
cat cursor-mcp-config.json
# Add to your Cursor settings
```

### VSCode with Claude Code

1. Install the Claude Code extension
2. Open your MCP configuration file:
   - On macOS: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
   - On Linux: `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
   - On Windows: `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`

3. Add the server configuration:
```json
{
  "mcpServers": {
    "autofixture": {
      "command": "/Users/admin/dev/mcp/mcp-wrapper.sh",
      "args": [],
      "env": {}
    }
  }
}
```

### Claude Desktop Setup

1. Open Claude Desktop settings:
   - On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - On Windows: `%APPDATA%\Claude\claude_desktop_config.json`
   - On Linux: `~/.config/Claude/claude_desktop_config.json`

2. Add the server configuration:
```json
{
  "mcpServers": {
    "autofixture": {
      "command": "/Users/admin/dev/mcp/mcp-wrapper.sh",
      "args": [],
      "env": {}
    }
  }
}
```

3. Restart Claude Desktop

## Local Development Setup

If you want to develop or modify the server locally:

1. **Install dependencies:**
   ```bash
   npm install
   ```

2. **Build the project:**
   ```bash
   npm run build
   ```

3. **Run locally (without Docker):**
   ```bash
   npm start
   ```

4. **Development mode with auto-rebuild:**
   ```bash
   npm run dev
   ```

## Usage Examples

Once integrated, you can use the MCP server in your conversations:

### Example 1: Getting Started
```
User: "Use the autofixture MCP to show me how to get started with AutoFixture"
AI: [Calls get_quick_start tool and provides quick start guide]
```

### Example 2: Searching for Methods
```
User: "Search for methods related to creating objects in AutoFixture"
AI: [Calls search_methods with query "create" and shows available methods]
```

### Example 3: Getting Usage Patterns
```
User: "Show me how to use AutoFixture with xUnit"
AI: [Calls get_usage_pattern with pattern "xunit" and provides examples]
```

### Example 4: Package Information
```
User: "What AutoFixture packages are available for mocking?"
AI: [Calls get_packages with category "mocking" and lists all mocking packages]
```

## Configuration Files

- `mcp-config.json`: Generic MCP configuration
- `cursor-mcp-config.json`: Cursor-specific configuration
- `claude_desktop_config.json`: Claude Desktop configuration
- `docker-compose.yml`: Docker Compose configuration
- `mcp-wrapper.sh`: Shell script wrapper for Docker integration

## Troubleshooting

### Server not starting
- Ensure Docker is running: `docker ps`
- Check Docker logs: `docker logs autofixture-mcp-server`
- Rebuild the image: `docker build -t autofixture-mcp-server:latest .`

### Permission issues with wrapper script
```bash
chmod +x mcp-wrapper.sh
```

### Cursor/VSCode not detecting the server
- Restart the editor after adding configuration
- Check that the wrapper script path is absolute
- Verify Docker is installed: `docker --version`

### Testing the server manually
```bash
# Run the wrapper script directly
./mcp-wrapper.sh

# Or use Docker directly
docker run --rm -i autofixture-mcp-server:latest
```

## Project Structure

```
.
├── src/
│   └── index.ts          # Main MCP server implementation
├── dist/                 # Compiled JavaScript (generated)
├── Dockerfile            # Docker image configuration
├── docker-compose.yml    # Docker Compose setup
├── mcp-wrapper.sh        # Shell wrapper for Docker
├── package.json          # Node.js dependencies
├── tsconfig.json         # TypeScript configuration
├── mcp-config.json       # Generic MCP config
├── cursor-mcp-config.json # Cursor-specific config
├── claude_desktop_config.json # Claude Desktop config
└── README.md             # This file
```

## Architecture

The server is built using:
- **TypeScript**: Type-safe server implementation
- **@modelcontextprotocol/sdk**: Official MCP SDK
- **axios**: HTTP client for fetching GitHub documentation
- **cheerio**: HTML parsing (for future enhancements)
- **Docker**: Containerization for easy deployment

## Contributing

Feel free to extend the server with additional tools:
1. Add new tool definitions in the `ListToolsRequestSchema` handler
2. Implement the tool logic in the `CallToolRequestSchema` handler
3. Rebuild the Docker image

## License

MIT

## Resources

- [AutoFixture GitHub Repository](https://github.com/AutoFixture/AutoFixture)
- [AutoFixture Documentation](https://autofixture.github.io)
- [Model Context Protocol Specification](https://modelcontextprotocol.io)
- [MCP SDK Documentation](https://github.com/modelcontextprotocol/typescript-sdk)

## Version

1.0.0

---

Built with MCP for enhanced AI-assisted development with AutoFixture.

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct aspect of AutoFixture documentation (e.g., fetching full docs, best practices, specific class info, packages, quick start, usage patterns, method search). Descriptions clearly differentiate them, leaving no ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using underscores (fetch_github_docs, get_best_practices, etc.). The verbs 'fetch', 'get', and 'search' are all appropriate and uniform.

Tool Count5/5

With 7 tools, the server is well-scoped for a documentation-focused AutoFixture helper. Each tool earns its place, covering the main information needs without overwhelming the user.

Completeness4/5

The tool set covers nearly all common documentation requests: full docs, best practices, classes, packages, quick start, patterns, and method search. A minor gap is the lack of version-specific changelogs or troubleshooting, but core coverage is solid.

Maintenance

ActivityInactive
ResponsivenessNo issues