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

MCP Server with Streamable HTTP Transport built with LeanMCP SDK

## Quick Start

```bash
# Install dependencies
npm install

# Start development server (hot reload + UI build)
npm run dev

# Build for production
npm run build

# Run production server
npm start
```

## Project Structure

```
leanmcp-minimal/
├── main.ts              # Server entry point
├── mcp/                 # Services directory (auto-discovered)
│   └── example/
│       └── index.ts     # Example service
├── .env                 # Environment variables
└── package.json
```

## Adding New Services

Create a new service directory in `mcp/`:

```typescript
// mcp/myservice/index.ts
import { Tool, SchemaConstraint } from "@leanmcp/core";

// Define input schema
class MyToolInput {
  @SchemaConstraint({ 
    description: "Message to process",
    minLength: 1
  })
  message!: string;
}

export class MyService {
  @Tool({ 
    description: "My awesome tool",
    inputClass: MyToolInput
  })
  async myTool(input: MyToolInput) {
    return {
      content: [{
        type: "text",
        text: `You said: ${input.message}`
      }]
    };
  }
}
```

Services are automatically discovered and registered - no need to modify `main.ts`!

## Adding UI Components

Use `@UIApp` decorator to link tools to React components:

```typescript
// mcp/products/index.ts
import { Tool } from "@leanmcp/core";
import { UIApp } from "@leanmcp/ui";

export class ProductsService {
  @Tool({ description: "List products" })
  @UIApp({ component: "./ProductsDashboard" })
  async listProducts() {
    return { products: [...] };
  }
}
```

```tsx
// mcp/products/ProductsDashboard.tsx
import { ToolDataGrid, RequireConnection } from "@leanmcp/ui";

export function ProductsDashboard() {
  return (
    <RequireConnection loading={<div>Loading...</div>}>
      <ToolDataGrid toolName="listProducts" columns={[...]} />
    </RequireConnection>
  );
}
```

The CLI automatically builds UI components and wraps them with AppProvider.

## Features

- **Zero-config auto-discovery** - Services automatically registered from `./mcp` directory
- **Type-safe decorators** - `@Tool`, `@Prompt`, `@Resource` with full TypeScript support
- **Schema validation** - Automatic input validation with `@SchemaConstraint`
- **HTTP transport** - Production-ready HTTP server with session management
- **Hot reload** - Development mode with automatic restart on file changes
- **UI Components** - React UI components with `@UIApp` decorator

## Testing with MCP Inspector

```bash
npx @modelcontextprotocol/inspector http://localhost:3001/mcp
```

## License

MIT