Skip to main content
Glama

InputMCP

by swairshah
README.md3.17 kB
# input-mcp MCP server for collecting contextual user input. The server exposes a single `collect_input` tool that can collect: - **Text input** - simple text or JSON from the user - **Image input** - freeform drawing on a canvas - **Pixel art** - grid-based pixel art editor with color palette When called, it launches an Electron window where the user can provide their input, then returns the result (as a file path for images) back to the MCP client. ![Pixel Art Example](pixelart-example.png) ## Quick Start ```bash npm install npm run build npx @modelcontextprotocol/inspector node dist/src/server.js ``` **Note:** This package is also published on npm as `@swairshah/input-mcp` and can be used directly with `npx @swairshah/input-mcp`. This opens a web interface where you can test the tool. Try calling `collect_input` with different parameters: - `{"kind": "text"}` - opens a text input window - `{"kind": "pixelart", "gridWidth": 16, "gridHeight": 16}` - opens a pixel art editor - `{"kind": "image", "initialImage": "/path/to/image.png"}` - opens an image editor with a starting image ## Build and Test the UI Components `bun install` first. obviously. 1. Build the UI bundle (creates `ui/dist/` assets used by Electron): ```sh npm run build:ui # or bun run build:ui ``` 2. Launch the Electron prompt helper directly (useful for smoke tests): ```sh bun run create ``` This spawns the image/text prompt window with the default text spec. 3. Test script: ```sh bunx tsx scripts/test-input.ts image ``` ## Testing with MCP Inspector ```bash npm run build npx @modelcontextprotocol/inspector node dist/src/server.js ``` The inspector provides a web UI to test the tool. Images are saved to `~/.cache/input-mcp/images/` and the tool returns the file path. ## Using with Claude Desktop Add to your Claude config (`~/Library/Application Support/Claude/claude_desktop_config.json`): **Using npm package (recommended):** ```json { "mcpServers": { "input-mcp": { "command": "npx", "args": ["-y", "@swairshah/input-mcp"] } } } ``` **Using local clone:** ```json { "mcpServers": { "input-mcp": { "command": "node", "args": ["/absolute/path/to/input-mcp/dist/src/server.js"] } } } ``` Then ask Claude things like: - "Let me draw something for you" (opens drawing canvas) - "I want to create pixel art" (opens pixel art editor) ## Dev ### Project Structure ``` shared/ → Zod schemas, shared types, and error helpers ui/ → Electron renderer (HTML/CSS/JS) and prompt modules create.ts → Launches the Electron window and normalises specs server.ts → MCP server definition for the `collect_input` tool scripts/ → Ad-hoc utilities (`test-input.ts` for manual runs) ``` ### Development Workflow - Modify the renderer in `ui/renderer.ts` and module files under `ui/modules/`. - Add new input kinds by extending `shared/types.ts` and branching inside `mount*Module` helpers. - When iterating on the UI, run `bun run create` (or `npx tsx scripts/test-input.ts image`) to open a live window with the current spec. ## License MIT

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/swairshah/InputMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server