{
  "markdown": "# docbot-mcp\n\nBidirectional CSV ↔️ JSON ↔️ Markdown transformer exposed as an MCP (Model Context Protocol) server with HTTP transport.\n\n## Overview\n\n**docbot-mcp** is a Model Context Protocol server that provides tools for converting between CSV, JSON, and Markdown formats. It's built on the [Model Context Protocol](https://modelcontextprotocol.io/) and designed for deployment on serverless platforms like AWS App Runner.\n\n## Features\n\n- ✅ **CSV to JSON** — Parse CSV strings into JSON arrays\n- ✅ **JSON to CSV** — Serialize JSON arrays to CSV format\n- ✅ **CSV to Markdown** — Convert CSV to formatted Markdown tables\n- ✅ **JSON to Markdown** — Convert JSON arrays to Markdown tables\n- ✅ **HTTP-based** — REST API endpoint for easy integration\n- ✅ **Containerized** — Ready for deployment on AWS App Runner, Docker, etc.\n\n## Installation\n\n```bash\nnpm install\n```\n\n### Requirements\n\n- Node.js 16+ (ES modules support)\n- Dependencies:\n  - `@modelcontextprotocol/sdk` — MCP protocol implementation\n  - `@rflukerii/docbot` — Document conversion utilities\n  - `express` — HTTP server framework\n  - `zod` — Input validation\n\n## Usage\n\n### Starting the Server\n\n```bash\nnpm start\n```\n\nThe server starts on `http://localhost:3000` with the MCP endpoint at `/docbot-mcp`.\n\n### Available Tools\n\nAll tools accept input as text parameters and return formatted text responses.\n\n#### csvToJson\nConverts a CSV string to JSON format.\n\n**Input:** `csv` (string)  \n**Output:** JSON array as string\n\n```bash\ncurl -X POST http://localhost:3000/docbot-mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"tool\": \"csvToJson\", \"input\": {\"csv\": \"name,age\\nAlice,30\"}}'\n```\n\n#### jsonToCsv\nConverts a JSON array to CSV format.\n\n**Input:** `json` (string)  \n**Output:** CSV string\n\n```bash\ncurl -X POST http://localhost:3000/docbot-mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"tool\": \"jsonToCsv\", \"input\": {\"json\": \"[{\\\"name\\\":\\\"Alice\\\",\\\"age\\\":30}]\"}}'\n```\n\n#### csvToMarkdown\nConverts a CSV string to a Markdown table.\n\n**Input:** `csv` (string)  \n**Output:** Markdown table string\n\n#### jsonToMarkdown\nConverts a JSON array to a Markdown table.\n\n**Input:** `json` (string)  \n**Output:** Markdown table string\n\n## Architecture\n\n### HTTP Transport\n\nThe server uses `StreamableHTTPServerTransport` instead of stdio for better compatibility with containerized environments. Each request to `/docbot-mcp` creates a new server instance, processes the MCP request, and returns the result.\n\n```\nExpress Server (port 3000)\n    ↓\nPOST /docbot-mcp endpoint\n    ↓\nMCP Server instance (createServer)\n    ↓\nStreamableHTTPServerTransport\n    ↓\nTool execution (csvToJson, jsonToCsv, etc.)\n    ↓\nResponse back to client\n```\n\n### File Structure\n\n- `index.js` — Main HTTP server entry point (AWS App Runner compatible)\n- `index-stdio.js` — Stdio transport version (for local/stdio-based clients)\n- `package.json` — Dependencies and scripts\n\n## Deployment\n\n### AWS App Runner\n\nThe server includes a `start` script configured for AWS App Runner:\n\n```json\n{\n  \"scripts\": {\n    \"start\": \"node index.js\"\n  }\n}\n```\n\n**Steps to deploy:**\n\n1. Push code to AWS CodeCommit, GitHub, or BitBucket\n2. Create AWS App Runner service\n3. Configure source as your repository\n4. Set build command: `npm install`\n5. Set start command: `npm start`\n6. App Runner will automatically run the server on port 3000\n\n### Docker\n\nExample Dockerfile:\n\n```dockerfile\nFROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm install --production\nCOPY . .\nEXPOSE 3000\nCMD [\"npm\", \"start\"]\n```\n\n## Development\n\n### Switching Between Transports\n\n- **HTTP (default)**: `node index.js` — For containerized environments\n- **Stdio**: `node index-stdio.js` — For direct CLI/stdio clients\n\n### Adding New Tools\n\nEdit `index.js` and use the `server.registerTool()` pattern:\n\n```javascript\nserver.registerTool(\n  'toolName',\n  {\n    title: 'Display Title',\n    description: 'What it does',\n    inputSchema: { paramName: z.type() }\n  },\n  async ({ paramName }) => ({\n    content: [{ type: 'text', text: 'result' }]\n  })\n);\n```\n\n## License\n\nMIT\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history and updates.",
  "bytes": 4156,
  "sha": "b8d7007e9f6aba39464e8f063712c930080ddbd5beb80c80600ce28e5a98d868",
  "repo_slug": "rflukerii-dev/docbot-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_rflukerii_dev_docbot_mcp_1f048b20/readme"
}