Skip to main content
Glama
jphyqr

Rapid URL Indexer MCP Server

by jphyqr
README.md
# Rapid URL Indexer MCP Server

An MCP (Model Context Protocol) server for submitting URLs to the [Rapid URL Indexer](https://rapidurlindexer.com) API. Track submissions across multiple projects, monitor indexing progress, and auto-detect new pages from sitemaps.

**Target:** 50,000 pages/year across 10+ apps

## Features

- Submit individual URLs or entire sitemaps for Google indexing
- Track all submissions across multiple projects/apps
- Automatic deduplication of already-submitted URLs
- Monitor indexing progress and credit usage
- View statistics and projections toward goals

## Installation

```bash
# Clone the repository
git clone https://github.com/jphyqr/rapid-indexer-mcp.git
cd rapid-indexer-mcp

# Install dependencies
npm install

# Build
npm run build
```

## Configuration

### API Key

Set your Rapid URL Indexer API key via environment variable:

```bash
export RAPID_INDEXER_API_KEY=your-api-key
```

Or create a config file at `~/.rapid-indexer/config.json`:

```json
{
  "apiKey": "your-api-key",
  "defaultApexMode": false,
  "defaultNotify": false,
  "apps": {}
}
```

### Claude Code MCP Config

Add to your Claude Code MCP configuration (`~/.claude/mcp.json` or VS Code settings):

```json
{
  "mcpServers": {
    "rapid-indexer": {
      "command": "node",
      "args": ["/path/to/rapid-indexer-mcp/dist/index.js"],
      "env": {
        "RAPID_INDEXER_API_KEY": "your-api-key"
      }
    }
  }
}
```

## Tools

### `submit_urls`

Submit URLs for indexing.

```
Submit these URLs to the indexer for vancouversublets:
https://vancouversublets.com/listing/123
https://vancouversublets.com/listing/456
```

**Parameters:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `urls` | string[] | Yes | Array of URLs to index |
| `app_name` | string | Yes | Project/app identifier |
| `project_name` | string | No | Optional batch name |
| `apex_mode` | boolean | No | 3 credits/URL, faster indexing |
| `notify` | boolean | No | Email notifications |

### `submit_sitemap`

Parse and submit URLs from a sitemap.xml file.

```
Submit new pages from vancouversublets.com sitemap, only listing pages
```

**Parameters:**
| Name | Type | Required | Description |
|------|------|----------|-------------|
| `sitemap_url` | string | Yes | URL to sitemap.xml |
| `app_name` | string | Yes | Project/app identifier |
| `filter_pattern` | string | No | Regex to include URLs |
| `exclude_pattern` | string | No | Regex to exclude URLs |
| `skip_already_submitted` | boolean | No | Skip duplicates (default: true) |
| `limit` | number | No | Max URLs to submit |
| `apex_mode` | boolean | No | Enable Apex Mode |

### `check_balance`

Get current credit balance.

```
What's my indexing credit balance?
```

### `list_projects`

List all indexing projects.

```
Show me all my indexing projects for vancouversublets
```

### `get_project_status`

Get detailed status for a project.

```
What's the status of project 123?
```

### `get_report`

Download indexing report showing which URLs were indexed.

```
Get the indexing report for project 123
```

### `get_history`

Get local submission history.

```
Show my indexing history for the last 7 days
```

### `get_stats`

Get statistics and usage tracking.

```
How's my indexing going this month?
```

## Resources

The server exposes two MCP resources:

- `indexer://history` - Full submission history
- `indexer://apps` - List of tracked apps with summary stats

## Local Storage

Data is stored in `~/.rapid-indexer/`:

- `history.json` - All submissions, app tracking, monthly usage
- `config.json` - API key and app configurations

## Example Workflows

### Daily New Page Indexing

```
User: "Submit new pages from vancouversublets sitemap"

Claude: Uses submit_sitemap with skip_already_submitted=true
- Fetches sitemap
- Compares against history
- Submits only new URLs
```

### Bulk Initial Indexing

```
User: "Index all listing pages from vancouversublets, use apex mode"

Claude: Uses submit_sitemap with filter_pattern="/listing/", apex_mode=true
- Submits all matching URLs
- Uses 3 credits per URL for faster indexing
```

### Check Progress

```
User: "How's my indexing going this month?"

Claude: Uses get_stats with period="month"
- Shows submitted vs indexed
- Shows by-app breakdown
- Shows if on track for 50k goal
```

## Development

```bash
# Watch mode
npm run dev

# Build
npm run build

# Run directly
npm start
```

## License

MIT

## Author

John Hashem <john@hashbuilds.com>

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct function: submitting URLs, submitting sitemaps, checking balance, managing projects, and retrieving reports/history/stats. There is no overlap or ambiguity between tool purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., submit_urls, get_report, list_projects). No mixed conventions or irregular naming.

Tool Count5/5

8 tools is well-scoped for the service, covering submission, monitoring, and reporting without unnecessary bloat or missing essentials.

Completeness5/5

The tool set covers the full lifecycle: submit individual URLs or sitemaps, check credits, list and inspect projects, download reports, and review local history/stats. No obvious dead ends or critical missing operations for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues