Renderer MCP Server
# Renderer MCP Server
<div align="center">
[](https://www.npmjs.com/package/renderer-mcp-server)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io)
**AI-powered assistant for the [Renderer](https://github.com/NishikantaRay/renderer) portfolio framework**
Helps users explore documentation, validate configurations, generate templates, and customize their portfolios through natural language.
[Features](#-features) ⢠[Installation](#-installation) ⢠[Usage](#-usage) ⢠[Tools](#-available-tools) ⢠[Configuration](#-configuration)
</div>
---
## š Features
- **š Interactive Documentation** - Search and explore Renderer docs with natural language queries
- **ā
Configuration Validation** - Validate TOML configs with detailed error messages
- **šØ Template Generation** - Generate starter templates customized to your needs
- **š” Smart Examples** - Get configuration examples with explanations
- **š Feature Discovery** - Search for specific Renderer features and capabilities
- **š Setup Guides** - Step-by-step guides for beginners and advanced users
- **šļø Repository Browser** - Browse Renderer repository files and directories
## š¦ Installation
### NPM (Recommended)
```bash
npm install -g renderer-mcp-server
```
### From Source
```bash
git clone https://github.com/NishikantaRay/renderer-mcp-server.git
cd renderer-mcp-server
npm install
npm run build
npm link
```
## š Usage
### With Claude Desktop
1. **Install the server:**
```bash
npm install -g renderer-mcp-server
```
2. **Configure Claude Desktop:**
Edit your Claude config file:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
Add the server configuration:
```json
{
"mcpServers": {
"renderer": {
"command": "renderer-mcp",
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
```
3. **Get a GitHub Token (Optional but recommended):**
- Go to https://github.com/settings/tokens
- Create a new token with `repo` scope
- Add it to the config above
4. **Restart Claude Desktop**
### With Other MCP Clients
Any MCP-compatible client can use this server:
```typescript
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
const client = new Client({
name: "my-client",
version: "1.0.0",
});
// Connect to the server
await client.connect({
command: "renderer-mcp",
env: {
GITHUB_TOKEN: process.env.GITHUB_TOKEN,
},
});
```
## š ļø Available Tools
### 1. **explore_renderer_docs**
Search and explore Renderer framework documentation.
```
Query: "How do I configure dark mode?"
Returns: Relevant documentation sections
```
### 2. **get_renderer_file**
Get contents of specific files from the Renderer repository.
```
Path: "config/home.toml"
Returns: File contents with syntax highlighting
```
### 3. **list_renderer_files**
List files and directories in the Renderer repository.
```
Path: "config"
Returns: Directory listing with file types
```
### 4. **validate_toml_config**
Validate TOML configuration files.
```
Config Content: "[profile]\nname = 'John'"
Config Type: "home"
Returns: Validation results with suggestions
```
### 5. **generate_starter_template**
Generate customized starter templates.
```
Input: { name: "John Doe", github: "johndoe", include_projects: true }
Returns: Complete project structure and configs
```
### 6. **get_config_example**
Get example configurations with explanations.
```
Config Type: "projects"
Returns: Annotated example configuration
```
### 7. **search_renderer_features**
Search for specific features.
```
Feature: "analytics"
Returns: Feature documentation and examples
```
### 8. **get_setup_guide**
Get setup instructions.
```
Level: "beginner" | "advanced"
Returns: Step-by-step setup guide
```
## š Configuration
### Environment Variables
- **GITHUB_TOKEN** (optional): GitHub personal access token for higher API rate limits
- Without token: 60 requests/hour
- With token: 5000 requests/hour
- Scope required: `public_repo`
### Custom Repository
By default, the server connects to `NishikantaRay/renderer`. To use a fork or different repository:
Edit [src/constants.ts](src/constants.ts):
```typescript
export const DEFAULT_CONFIG: RendererConfig = {
owner: "your-username",
repo: "your-repo",
branch: "main"
};
```
## š Project Structure
```
renderer-mcp-server/
āāā src/
ā āāā index.ts # Main server entry point
ā āāā types.ts # TypeScript type definitions
ā āāā constants.ts # Tool definitions and config
ā āāā github.ts # GitHub API interactions
ā āāā tools/ # Tool implementations
ā āāā validator.ts # TOML validation
ā āāā template.ts # Template generation
ā āāā examples.ts # Configuration examples
ā āāā features.ts # Feature search
ā āāā guides.ts # Setup guides
āāā build/ # Compiled JavaScript
āāā package.json
āāā tsconfig.json
āāā README.md
```
## š§ Development
### Prerequisites
- Node.js 18 or higher
- npm or yarn
- TypeScript 5.3+
### Setup
```bash
# Clone the repository
git clone https://github.com/NishikantaRay/renderer-mcp-server.git
cd renderer-mcp-server
# Install dependencies
npm install
# Build
npm run build
# Watch mode (for development)
npm run watch
```
### Testing
```bash
# Build the project
npm run build
# Test with MCP inspector
npx @modelcontextprotocol/inspector renderer-mcp
```
## š Example Interactions
### Generate a Portfolio
**User:** "Create a portfolio template for John Doe with GitHub and LinkedIn"
**Server:** Generates complete starter template with:
- Customized TOML configurations
- Project structure
- Setup instructions
- Next steps
### Validate Configuration
**User:** "Validate this TOML: [profile]\nname = 'Jane'"
**Server:**
- ā
Validates syntax
- Checks for required fields
- Provides suggestions
- Shows parsed structure
### Explore Features
**User:** "How do I add dark mode to my portfolio?"
**Server:** Returns documentation about:
- Theme configuration
- Available options
- Implementation details
- Code examples
## š¤ Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/amazing-feature`
3. Make your changes
4. Add tests if applicable
5. Commit: `git commit -m 'Add amazing feature'`
6. Push: `git push origin feature/amazing-feature`
7. Open a Pull Request
### Development Guidelines
- Follow TypeScript best practices
- Keep functions small and focused
- Add JSDoc comments for public APIs
- Update README for new features
- Test thoroughly before submitting
## š License
MIT License - see [LICENSE](LICENSE) file for details
## š Related Projects
- **[Renderer](https://github.com/NishikantaRay/renderer)** - The portfolio framework this server supports
- **[Model Context Protocol](https://modelcontextprotocol.io)** - The protocol specification
- **[MCP SDK](https://github.com/modelcontextprotocol/sdk)** - Official MCP SDK
## š¬ Support
- **Issues**: [GitHub Issues](https://github.com/NishikantaRay/renderer-mcp-server/issues)
- **Discussions**: [GitHub Discussions](https://github.com/NishikantaRay/renderer-mcp-server/discussions)
- **Renderer Docs**: [Documentation](https://github.com/NishikantaRay/renderer/tree/main/docs)
## š Acknowledgments
- Built with [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)
- Powers the [Renderer](https://github.com/NishikantaRay/renderer) framework
- Inspired by the MCP community
---
<div align="center">
**Made with ā¤ļø by [Nishikanta Ray](https://github.com/NishikantaRay)**
ā Star this repo if you find it helpful!
</div>
TDQS
Scored across 8 tools
Most tools are clearly distinct by resource and action, such as listing files versus getting file contents. The main overlap is between explore_renderer_docs and search_renderer_features, which both surface framework information and could be confused.
All tool names use lowercase snake_case and follow a consistent verb_noun pattern, e.g., get_renderer_file, list_renderer_files, validate_toml_config. This makes the set predictable and easy to navigate.
Eight tools is a well-scoped size for a framework documentation and configuration server. Each tool addresses a meaningful task without unnecessary redundancy or bloat.
The tool set covers documentation exploration, file access, config validation, examples, templates, and setup guidance, which addresses the core workflow. A minor gap is that there is no direct tool for rendering or previewing a project, but that may be outside the server's stated purpose.