Skip to main content
Glama
oomol-lab

Oomol Connect MCP Server

Official
by oomol-lab
README.md
# Oomol Connect MCP SDK

[中文文档](./README.zh-CN.md)

MCP (Model Context Protocol) SDK for Oomol Connect, enabling integration with Cherry Studio, VSCode, and other MCP-compatible clients.

## Features

- ✅ Full MCP protocol support based on official `@modelcontextprotocol/sdk`
- ✅ 9 tools covering all Oomol Connect functionality
- ✅ Complete TypeScript type support
- ✅ File upload support (local paths and base64 encoding)
- ✅ Intelligent polling with exponential backoff
- ✅ Real-time progress monitoring
- ✅ Smart version filtering (returns latest version by default)
- ✅ Easy integration with Cherry Studio, VSCode, Claude Desktop

## Installation

### Global Installation

```bash
npm install -g oomol-connect-mcp-sdk-ts
```

### Using npx (Recommended)

```bash
npx -y oomol-connect-mcp-sdk-ts
```

### Local Development

```bash
git clone <repository-url>
cd oomol-connect-mcp-sdk-ts
npm install
npm run build
```

## Configuration

### Environment Variables

| Variable | Description | Required | Default |
|----------|-------------|----------|---------|
| `OOMOL_CONNECT_BASE_URL` | API base URL | Yes | - |
| `OOMOL_CONNECT_API_TOKEN` | API token | Yes | - |
| `MCP_SERVER_NAME` | MCP server name | No | "oomol-connect" |
| `MCP_SERVER_VERSION` | MCP server version | No | package.json version |
| `OOMOL_CONNECT_DEFAULT_TIMEOUT` | Default timeout (ms) | No | 300000 (5 min) |

### Example Configuration

```bash
# Required
export OOMOL_CONNECT_BASE_URL="http://localhost:3000/api"
export OOMOL_CONNECT_API_TOKEN="api-your-token-here"

# Optional
export OOMOL_CONNECT_DEFAULT_TIMEOUT="300000"
```

## MCP Client Integration

### Cherry Studio

Add to Cherry Studio's MCP configuration:

```json
{
  "mcpServers": {
    "oomol-connect": {
      "command": "npx",
      "args": ["-y", "oomol-connect-mcp-sdk-ts"],
      "env": {
        "OOMOL_CONNECT_BASE_URL": "http://localhost:3000/api",
        "OOMOL_CONNECT_API_TOKEN": "your-token-here"
      }
    }
  }
}
```

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "oomol-connect": {
      "command": "npx",
      "args": ["-y", "oomol-connect-mcp-sdk-ts"],
      "env": {
        "OOMOL_CONNECT_BASE_URL": "http://localhost:3000/api",
        "OOMOL_CONNECT_API_TOKEN": "your-token-here"
      }
    }
  }
}
```

### VSCode

Configure in VSCode settings or use the MCP extension.

## Available Tools

### High-Level Tools (Recommended)

1. **list_blocks** - List all available blocks (returns latest version by default, optionally all versions)
2. **list_tasks** - List task history
3. **execute_task** - Execute task and wait for completion (most common)
4. **execute_task_with_files** - Execute task with file uploads
5. **list_packages** - List installed packages
6. **install_package** - Install package and wait for completion

### Low-Level Tools (Advanced)

1. **create_task** - Create task without waiting (async)
2. **get_task** - Query task status
3. **stop_task** - Stop running task

## Usage Examples

### List Blocks

```json
{
  "tool": "list_blocks",
  "arguments": {
    "includeAllVersions": false
  }
}
```

Each block automatically includes `blockId` (format: `"package::name"`) and `version` fields.

### Execute a Task

```json
{
  "tool": "execute_task",
  "arguments": {
    "blockId": "audio-lab::text-to-audio",
    "inputValues": {
      "text": "Hello",
      "voice": "en-US-JennyNeural"
    },
    "pollIntervalMs": 2000,
    "timeoutMs": 300000
  }
}
```

### Execute Task with Files

```json
{
  "tool": "execute_task_with_files",
  "arguments": {
    "blockId": "ffmpeg::audio_video_separation",
    "inputValues": {
      "outputFormat": "mp3"
    },
    "files": [
      {
        "path": "/absolute/path/to/video.mp4"
      }
    ]
  }
}
```

### Install a Package

```json
{
  "tool": "install_package",
  "arguments": {
    "name": "package-name",
    "version": "1.0.0"
  }
}
```

## Programmatic Usage

```typescript
import { OomolConnectMcpServer } from "oomol-connect-mcp-sdk-ts";

const server = new OomolConnectMcpServer({
  baseUrl: "http://localhost:3000/api",
  authHeader: "Bearer your-token",
  name: "my-server",
  version: "1.0.0",
});

await server.run();
```

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Development mode (watch)
npm run dev

# Run locally
npm start
```

## Architecture

This SDK is built on:
- `@modelcontextprotocol/sdk` - Official MCP SDK
- `oomol-connect-sdk` - Oomol Connect API client

The SDK provides a zero-logic-duplication wrapper around `oomol-connect-sdk`, exposing its functionality through the MCP protocol.

## License

MIT

## Contributing

Contributions are welcome! Please open an issue or submit a pull request.

## Related Projects

- [oomol-connect-sdk-ts](../oomol-connect-sdk-ts) - Core Oomol Connect SDK
- [oomol-cloud-mcp-sdk-ts](../oomol-cloud-mcp-sdk-ts) - MCP SDK for Oomol Cloud

## Support

For issues and questions:
- GitHub Issues: [Create an issue](https://github.com/your-org/oomol-connect-mcp-sdk-ts/issues)
- Documentation: See examples folder for more usage patterns