# REMnux Documentation MCP Server
An MCP server that lets AI assistants search and retrieve [REMnux documentation](https://docs.remnux.org).
## What Is This?
[REMnux](https://remnux.org) is a Linux toolkit for reverse-engineering and analyzing malicious software. This MCP server gives AI assistants direct access to REMnux documentation, so you can ask questions about malware analysis tools and get accurate, up-to-date answers.
**What it enables:**
- **Search** for tools by name, category, or functionality
- **Retrieve** detailed information about specific tools
- **Answer questions** about which REMnux tools to use for particular tasks
Your AI assistant queries the current documentation index rather than relying on potentially outdated training data.
## Getting Started
To use this MCP server, add it to your AI tool's configuration. The server is publicly hosted and ready to use.
### Claude Desktop
Add to your Claude Desktop configuration file:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"remnux-docs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://docs-mcp.remnux.org/mcp"]
}
}
}
```
### Claude Code (CLI)
```bash
claude mcp add remnux-docs --transport http https://docs-mcp.remnux.org/mcp
```
### Cursor
Add to `.cursor/mcp.json` in your project or global settings:
```json
{
"mcpServers": {
"remnux-docs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://docs-mcp.remnux.org/mcp"]
}
}
}
```
### Windsurf
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"remnux-docs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://docs-mcp.remnux.org/mcp"]
}
}
}
```
### Other MCP-Compatible Tools
For any MCP-compatible AI tool:
- **Server URL:** `https://docs-mcp.remnux.org/mcp`
- **Transport:** Streamable HTTP (recommended)
Most tools connect via the `mcp-remote` npm package. The `/mcp` endpoint is recommended; `/sse` is available for legacy clients but may experience timeout issues.
## Example Queries
Once connected, you can ask your AI assistant questions like:
- "What REMnux tools can I use to analyze a suspicious PDF?"
- "How do I extract strings from a malware sample using REMnux?"
- "What's the difference between peframe and pefile?"
- "Which tools in REMnux can deobfuscate JavaScript?"
- "What network analysis tools are available in REMnux?"
The AI will search the REMnux documentation and provide accurate, current information.
## MCP Tools
The server exposes these tools to AI assistants:
| Tool | Description |
|------|-------------|
| `search_remnux` | Search documentation by keywords |
| `get_article` | Retrieve full content of a specific article by URL |
| `get_index_info` | Get index statistics and metadata |
## Architecture
This server deploys [cloudflare-mcp-for-static-sites](https://github.com/lennyzeltser/cloudflare-mcp-for-static-sites), a reusable framework for adding MCP search to any static website. The framework runs on [Cloudflare Workers](https://developers.cloudflare.com/agents/guides/remote-mcp-server/), which [simplifies building remote MCP servers](https://blog.cloudflare.com/remote-model-context-protocol-servers-mcp/) by handling transport, authentication, and scaling.
```
┌─────────────────┐ MCP Protocol ┌─────────────────────┐
│ AI Assistant │◄────────────────────►│ Cloudflare Worker │
│ (Claude, etc.) │ (HTTP) │ (MCP Server) │
└─────────────────┘ └──────────┬──────────┘
│
│ Reads
▼
┌─────────────────────┐
│ Cloudflare R2 │
│ (Search Index) │
└─────────────────────┘
▲
│ Generated from
│
┌─────────────────────┐
│ REMnux salt-states │
│ (Source of Truth) │
└─────────────────────┘
```
### Components
**Cloudflare Worker** — Runs the MCP server at `docs-mcp.remnux.org`. Handles AI assistant requests using MCP over streamable HTTP. Built with Cloudflare's [Agents SDK](https://developers.cloudflare.com/agents/) and the `McpAgent` class in `src/index.ts`.
**Cloudflare R2** — Object storage for the search index. The Worker caches the index in memory for 1 hour to reduce latency.
**Search Engine** — Powered by [Fuse.js](https://fusejs.io/) for fuzzy matching. Searches across tool names, descriptions, categories, and full content with weighted relevance scoring.
**MCP Protocol** — [Model Context Protocol](https://modelcontextprotocol.io/), an open standard for connecting AI assistants to external data sources.
### Search Index Generation
The search index comes from the [REMnux salt-states repository](https://github.com/REMnux/salt-states), the authoritative source for REMnux tool configurations and documentation.
The generation process:
1. The [`generate-mcp-index.py`](https://github.com/REMnux/salt-states/blob/master/.ci/generate-mcp-index.py) script in the salt-states CI directory parses tool metadata from the Salt state files
2. It extracts tool names, descriptions, categories, and documentation URLs
3. The script produces a JSON search index conforming to the schema in `src/types.ts`
4. The index is uploaded to the Cloudflare R2 bucket, where the Worker retrieves it
This process runs automatically during REMnux releases. The search index stays synchronized with official tool documentation.
### Source Files
This repository contains the REMnux-specific deployment. The Worker code builds on [cloudflare-mcp-for-static-sites](https://github.com/lennyzeltser/cloudflare-mcp-for-static-sites).
| File | Description |
|------|-------------|
| `src/index.ts` | Worker implementation with MCP tool definitions |
| `src/types.ts` | TypeScript types and Zod schemas for the search index |
| `wrangler.jsonc` | REMnux-specific Cloudflare Worker deployment configuration |
## Development
To run the MCP server locally:
```bash
# Install dependencies
bun install
# Start local development server
bun run dev
# Type checking
bun run type-check
# Format and lint
bun run format
bun run lint:fix
```
For local testing, you'll need a `search-index.json` file in your R2 bucket. You can generate one using the [`generate-mcp-index.py`](https://github.com/REMnux/salt-states/blob/master/.ci/generate-mcp-index.py) script from the salt-states repository.
## Contributing
This project is part of the [REMnux](https://remnux.org) ecosystem.
- **Bug reports and feature requests:** Open an issue in this repository
- **Code contributions:** Submit a pull request with a clear description of changes
- **Documentation improvements:** PRs welcome for README or code comments
Before submitting code, run `bun run type-check` and `bun run format` to ensure consistency.