Skip to main content
Glama
tabgab

DeepWiki OMNeT++ MCP Server

by tabgab
README.md
# DeepWiki OMNeT++ MCP Server

A custom MCP (Model Context Protocol) server that queries multiple repositories on DeepWiki, providing comprehensive answers about OMNeT++ and INET Framework development.

## ✨ Features

This MCP server provides three powerful tools for OMNeT++ and INET documentation:

1. **omnetpp_ask_question** - Ask natural language questions about OMNeT++ and INET
   - Searches across **multiple repositories simultaneously**
   - Returns merged results with clear source attribution
   
2. **omnetpp_read_wiki_structure** - Retrieve the complete documentation structure
   - Gets wiki topics from all configured repositories
   
3. **omnetpp_read_wiki_contents** - Fetch detailed contents for specific topics
   - Queries all repositories for comprehensive coverage

### 🎯 Multi-Repository Support

The server now queries **both repositories in parallel**:
- `omnetpp/omnetpp` - OMNeT++ simulation framework
- `inet-framework/inet` - INET Framework for network simulations

Results are merged with clear headers showing which repository provided each answer. See [MULTI_REPO_SETUP.md](MULTI_REPO_SETUP.md) for details.

## Installation

1. Install dependencies:
```bash
npm install
```

2. Build the project:
```bash
npm run build
```

The compiled server will be in the `dist/` directory.

## Configuration

Configure the MCP server based on your IDE/client:

### For Cline (VS Code Extension) ⭐ RECOMMENDED

1. Open VS Code Command Palette (`Cmd+Shift+P` on macOS, `Ctrl+Shift+P` on Windows/Linux)
2. Type "Preferences: Open User Settings (JSON)"
3. Or directly edit: 
   - **macOS**: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`
   - **Windows**: `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`
   - **Linux**: `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`

4. Add this configuration (replace the path with your actual project location):

```json
{
  "mcpServers": {
    "deepwiki-omnetpp": {
      "command": "node",
      "args": [
        "/absolute/path/to/MCP4omnetpp/dist/index.js"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
```

5. **Reload VS Code**: `Cmd+Shift+P` β†’ "Developer: Reload Window"

### For Windsurf IDE

1. Open Windsurf settings
2. Navigate to MCP Servers configuration
3. Add a new server with:
   - **Name**: `deepwiki-omnetpp`
   - **Command**: `node`
   - **Args**: `["/absolute/path/to/MCP4omnetpp/dist/index.js"]`

4. Restart Windsurf

### For Claude Desktop

**macOS**: Edit `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: Edit `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "deepwiki-omnetpp": {
      "command": "node",
      "args": [
        "/absolute/path/to/MCP4omnetpp/dist/index.js"
      ]
    }
  }
}
```

Restart Claude Desktop after saving.

### For Cursor IDE

1. Open Cursor Settings
2. Navigate to Extensions β†’ MCP Configuration
3. Add the server configuration:

```json
{
  "deepwiki-omnetpp": {
    "command": "node",
    "args": ["/absolute/path/to/MCP4omnetpp/dist/index.js"]
  }
}
```

4. Restart Cursor

### For Zed Editor

Edit your Zed configuration file and add:

```json
{
  "context_servers": {
    "deepwiki-omnetpp": {
      "command": "node",
      "args": ["/absolute/path/to/MCP4omnetpp/dist/index.js"]
    }
  }
}
```

### Important Notes

- **Replace `/absolute/path/to/MCP4omnetpp/`** with the actual absolute path to your project
- On **Windows**, use double backslashes: `C:\\Users\\YourName\\MCP4omnetpp\\dist\\index.js`
- Ensure **Node.js is installed** and accessible in your PATH
- After configuration changes, **always restart/reload** your IDE/client

### Verifying Installation

After reloading, check that the tools are available:
1. Look for these tools in your MCP client:
   - `omnetpp_ask_question`
   - `omnetpp_read_wiki_structure`
   - `omnetpp_read_wiki_contents`

2. Test with a simple query:
   ```
   Use tool: omnetpp_read_wiki_structure
   ```

## Usage

Once configured, you'll have access to these tools in your MCP client:

### Ask a Question
```
Use tool: omnetpp_ask_question
Parameters: { "question": "How do I create a simple network in OMNeT++?" }
```

### Get Wiki Structure
```
Use tool: omnetpp_read_wiki_structure
Parameters: {}
```

### Read Wiki Contents
```
Use tool: omnetpp_read_wiki_contents
Parameters: { "topic": "getting-started" }
```

## How It Works

This server acts as an intelligent proxy with multi-repository support:

1. **Receives tool calls** from MCP clients (Claude, Cline, Windsurf, etc.)
2. **Queries multiple repositories in parallel**:
   - `omnetpp/omnetpp` (OMNeT++ core framework)
   - `inet-framework/inet` (INET network simulation)
3. **Connects to DeepWiki API** via Streamable HTTP transport
4. **Merges results** from all repositories with clear attribution
5. **Returns comprehensive answers** combining insights from both sources

### Architecture

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MCP Client β”‚ stdio   β”‚  This MCP Proxy  β”‚  HTTP   β”‚  DeepWiki API   β”‚
β”‚ (Cline/etc) │────────▢│  (Multi-Repo)    │────────▢│  (Public)       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β”œβ”€β–Ά Query: omnetpp/omnetpp
                               └─▢ Query: inet-framework/inet
                                      (Parallel)
```

### Benefits

βœ… **No manual repository specification** - Automatically queries relevant repos  
βœ… **Comprehensive answers** - Get information from both OMNeT++ and INET  
βœ… **Fast parallel queries** - All repositories queried simultaneously  
βœ… **Fault tolerant** - One repo failing doesn't break the entire query  
βœ… **Clear source attribution** - Know which repo provided each answer  

See [MULTI_REPO_SETUP.md](MULTI_REPO_SETUP.md) for more details on adding repositories.

## Development

- **Source**: `src/index.ts`
- **Build**: `npm run build`
- **Output**: `dist/index.js`

## Technical Details

- Built with the official `@modelcontextprotocol/sdk` (v1.25.3)
- Uses JSON Schema for tool definitions (compatible with all MCP clients)
- Uses **Streamable HTTP transport** to connect to DeepWiki
- Proxies requests to `https://mcp.deepwiki.com/mcp`
- **Multi-repository querying**: Queries multiple repos in parallel using `Promise.allSettled()`
- **Current repositories**: `omnetpp/omnetpp` and `inet-framework/inet`
- **Fault tolerant**: Failed queries don't break the entire response
- **Result merging**: Combines answers with clear repository headers
- **Note**: SSE transport was deprecated by DeepWiki in January 2026

### Adding More Repositories

Edit `src/index.ts` and modify the `REPOS` array:

```typescript
const REPOS = [
  "omnetpp/omnetpp",
  "inet-framework/inet",
  "your-org/your-repo"  // Add more here
];
```

Then rebuild with `npm run build` and reload your MCP client.

## Troubleshooting

### Server Not Starting
- Ensure Node.js is installed and accessible
- Check that the path in the configuration points to the correct `dist/index.js` file
- Verify the build completed successfully

### No Tools Available
- Restart your MCP client (Claude Desktop or VSCode with Cline)
- Check the MCP client logs for connection errors

### API Errors
- The DeepWiki API must be accessible
- Check your internet connection
- Verify the official DeepWiki MCP service is operational