D3 MCP Server
by iamfiscus
README.md
# D3 MCP Server
A TypeScript Express-based Model Context Protocol (MCP) server for D3.js information. This server provides D3 visualization documentation, chart recommendations, and code generation through the MCP protocol.
## Features
- 📊 **D3 Resources**: Access documentation and examples from D3 sources
- 🔍 **Chart Recommendation**: Get recommendations for the right chart type based on your data and goals
- 💻 **Code Generation**: Generate D3 code examples for various chart types
- 🔌 **MCP Integration**: Connect AI tools directly to D3 knowledge
## Prerequisites
- Node.js 16.x or higher
- npm or yarn
## Installation
1. Clone the repository
```bash
git clone https://github.com/iamfiscus/mcp-d3-server.git
cd mcp-d3-server
```
2. Install dependencies
```bash
npm install
```
3. Build the project
```bash
npm run build
```
## Usage
1. Start the server
```bash
npm start
```
2. The server will be running at http://localhost:3000 (or the PORT specified in your .env file)
3. Connect to the MCP endpoint at http://localhost:3000/mcp-sse using an MCP client
## Development
For development with hot reloading:
```bash
npm run dev
```
## Available MCP Resources and Tools
### Resources
- **d3-docs://{topic}**: Access D3 documentation on specific topics
- **d3-charts://{chartType}**: Get information about specific D3 chart types
### Tools
- **generate-d3-chart**: Generate D3 code for different chart types
- Parameters: chartType, dataFormat, features (optional)
- **recommend-chart**: Get recommendations for D3 chart types based on your data
- Parameters: dataDescription, purpose
## Examples
### MCP Client Connection Example
```typescript
import { McpClient } from "@modelcontextprotocol/sdk/client/mcp.js";
import { SseClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
// Create an MCP client
const client = new McpClient();
// Connect to the D3 MCP server
const transport = new SseClientTransport("http://localhost:3000/sse");
await client.connect(transport);
// Get chart recommendations
const result = await client.invokeTool("recommend-chart", {
dataDescription: "Monthly sales data for 5 product categories over 2 years",
purpose: "Show trends and compare performance across categories"
});
console.log(result.content[0].text);
```
## License
MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request. This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues