README.md
A minimal MCP server framework that enables zero-config tool discovery
Slack MCP Server
MCP Server with Streamable HTTP Transport built with LeanMCP SDK
Quick Start
# 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/:
// 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:
// 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: [...] };
}
}
// mcp/products/ProductsDashboard.tsx
import { ToolDataGrid, RequireConnection } from "@leanmcp/ui";
export function ProductsDashboard() {
return (
<RequireConnection loading={Loading...}>
<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
./mcpdirectory - Type-safe decorators -
@Tool,@Prompt,@Resourcewith 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
@UIAppdecorator
Testing with MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:3001/mcp
License
MIT
Tools (2)
myToolMy awesome toollistProductsList productsConfiguration
claude_desktop_config.json
{
"mcpServers": {
"leanmcp-minimal": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/inspector", "http://localhost:3001/mcp"]
}
}
}Try it
→Use myTool to process the message 'Hello World'
→List all the products using the ProductsService
→Run the LeanMCP inspector on http://localhost:3001/mcp to test the tools