title: Expose
description: Easily build MCP tools for Claude desktop app
Expose lets you build MCP tools that you can invoke with MCP client like Claude desktop app.
- **Self-hosted**: You can easily self-host tools and deploy them on your own server.
- **Unified gateway**: Generates a single HTTP endpoint that you can register with `expose-cli`
- **Flexible**: Easily configure and customize your tools to fit your needs.
Getting started
- **Setup expose CLI**
```bash
curl -fsSL https://github.com/a0dotrun/expose/releases/download/stable/download_cli.sh | bash
```
- **Install dependencies**
```bash
npm i @a0dotrun/expose
```
- **Create server**
```bash
touch src/server.ts
```
```ts title=src/server.ts
import { create } from "@a0dotrun/expose"
const app = create({
tools: [],
})
export default {
port: 3000,
fetch: app.fetch,
}
```
- **Define your tools**
- **Start server**
```bash
npm run dev
```
You can also deploy the server and note down the public URL.
- **Register in Claude desktop app**
MACOS Claude desktop MCP config path: `~/Library/Application Support/Claude/claude_desktop_config.json`
_replace localhost with your public URL_
expose is created by [@\_sanchitrk](https://x.com/_sanchitrk) at [a0](https://a0.run)
Acknowledgements
I was inspired by [opencontrol](https://github.com/toolbeam/opencontrol)