Skip to main content
Glama
Vvkmnn

claude-oracle-mcp

by Vvkmnn
README.md
<img align="right" src="claude-oracle.svg" alt="claude-oracle-mcp" width="220">

# claude-oracle-mcp

An [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for discovering [Claude Code](https://docs.anthropic.com/en/docs/claude-code) skills, plugins, and MCP servers. Search 15,000+ resources from 17 registries + GitHub search + web search with zero setup.

<br clear="right">

![claude-oracle-mcp](demo/demo.gif)

[![npm version](https://img.shields.io/npm/v/claude-oracle-mcp.svg)](https://www.npmjs.com/package/claude-oracle-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Node.js](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org/) [![Claude](https://img.shields.io/badge/Claude-D97757?logo=claude&logoColor=fff)](#) [![GitHub stars](https://img.shields.io/github/stars/Vvkmnn/claude-oracle-mcp?style=social)](https://github.com/Vvkmnn/claude-oracle-mcp)

---

## install

**Requirements:**

[![Claude Code](https://img.shields.io/badge/Claude_Code-555?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxMCIgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj4KICA8IS0tIENsYXdkOiBDbGF1ZGUgQ29kZSBtYXNjb3QgLS0+CiAgPCEtLSBEZWNvZGVkIGZyb206IOKWkOKWm+KWiOKWiOKWiOKWnOKWjCAvIOKWneKWnOKWiOKWiOKWiOKWiOKWiOKWm+KWmCAvIOKWmOKWmCDilp3ilp0gLS0+CiAgPCEtLSBTdWItcGl4ZWxzIGFyZSAxIHdpZGUgeCAyIHRhbGwgdG8gbWF0Y2ggdGVybWluYWwgY2hhciBjZWxsIGFzcGVjdCByYXRpbyAtLT4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIzIiAgeT0iMCIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIzIiAgeT0iMiIgd2lkdGg9IjIiICBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSI2IiAgeT0iMiIgd2lkdGg9IjYiICBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIxMyIgeT0iMiIgd2lkdGg9IjIiICBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIxIiAgeT0iNCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIzIiAgeT0iNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSI0IiAgeT0iOCIgd2lkdGg9IjEiICBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSI2IiAgeT0iOCIgd2lkdGg9IjEiICBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIxMSIgeT0iOCIgd2lkdGg9IjEiICBoZWlnaHQ9IjIiLz4KICA8cmVjdCBmaWxsPSIjZDk3NzU3IiB4PSIxMyIgeT0iOCIgd2lkdGg9IjEiICBoZWlnaHQ9IjIiLz4KPC9zdmc+Cg==)](https://claude.ai/code)

**From shell:**

```bash
claude mcp add claude-oracle-mcp -- npx claude-oracle-mcp
```

**From inside Claude** (restart required):

```
Add this to our global mcp config: npx claude-oracle-mcp

Install this mcp: https://github.com/Vvkmnn/claude-oracle-mcp
```

**From any manually configurable `mcp.json`**: (Cursor, Windsurf, etc.)

```json
{
  "mcpServers": {
    "claude-oracle-mcp": {
      "command": "npx",
      "args": ["claude-oracle-mcp"],
      "env": {
        "SKILLSMP_API_KEY": "optional-for-semantic-search",
        "GITHUB_TOKEN": "optional-for-higher-rate-limits"
      }
    }
  }
}
```

There is **no `npm install` required** -- no external dependencies or local databases, only search algorithms.

However, if `npx` resolves the wrong package, you can force resolution with:

```bash
npm install -g claude-oracle-mcp
```

## [skill](.claude/skills/claude-oracle)

Optionally, install the skill to teach Claude when to proactively use oracle:

```bash
npx skills add Vvkmnn/claude-oracle-mcp --skill claude-oracle --global
# Optional: add --yes to skip interactive prompt and install to all agents
```

This makes Claude automatically search for relevant tools before planning, when encountering errors, or at session start. The MCP works without the skill, but the skill improves discoverability.

## [plugin](https://github.com/Vvkmnn/claude-emporium)

For automated tool discovery with hooks, install from the [claude-emporium](https://github.com/Vvkmnn/claude-emporium) marketplace:

```bash
/plugin marketplace add Vvkmnn/claude-emporium
/plugin install claude-oracle@claude-emporium
```

The **claude-oracle** plugin provides:

**Hooks** (targeted, fires before external searches):

- Before WebSearch/WebFetch โ†’ Check oracle for existing tools first
- Before EnterPlanMode โ†’ Search for relevant plugins/skills

**Command:** `/oracle-search <query>`

Requires the MCP server installed first. See the emporium for other Claude Code plugins and MCPs.

## features

[MCP server](https://modelcontextprotocol.io/) that gives Claude access to 15,000+ skills, plugins, and MCP servers from 17 registries + GitHub search + web search. Fast discovery with smart prioritization.

Runs locally (with crystal vision `๐Ÿ”ฎ`):

#### `search`

Search across all resources for relevant tools and solutions.

```
๐Ÿ”ฎ search query=<query>
  > "Are there any MCP servers for PostgreSQL?"
  > "What testing frameworks exist for React?"
  > "Do we have authentication plugins?"
```

```
๐Ÿ”ฎ search | postgres

โ•ญโ”€ ๐Ÿ”ฎ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Found 5 โ”€โ•ฎ
โ”‚ โ€ข postgres-mcp (mcp)                         โ”‚
โ”‚   PostgreSQL database access                 โ”‚
โ”‚   smithery.ai โ€ข โญ verified                  โ”‚
โ”‚   Install: npx postgres-mcp                  โ”‚
โ”‚                                              โ”‚
โ”‚ โ€ข postgresql-mcp (mcp)                       โ”‚
โ”‚   PostgreSQL MCP server                      โ”‚
โ”‚   npmjs.com โ€ข โœจ quality                     โ”‚
โ”‚   Install: npx @scope/postgresql-mcp         โ”‚
โ”‚                                              โ”‚
โ”‚ Total: 19 sources โ€ข 15,000+ resources        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
```

```json
{
  "results": [
    {
      "name": "postgres-mcp",
      "type": "mcp",
      "description": "PostgreSQL database access",
      "source": "smithery.ai",
      "install_command": "npx postgres-mcp",
      "verified": true,
      "stars": 142
    },
    {
      "name": "postgresql-mcp",
      "type": "mcp",
      "description": "PostgreSQL MCP server",
      "source": "npmjs.com",
      "install_command": "npx @scope/postgresql-mcp",
      "quality_score": 0.85
    }
  ],
  "sources_searched": ["smithery.ai", "npmjs.com", "glama.ai", "modelcontextprotocol.io"],
  "total_available": 15000,
  "cached": false
}
```

#### `browse`

Browse resources by category, type, or popularity.

```
๐Ÿ”ฎ browse category=<category>
  > "Browse testing tools"
  > "Show MCP servers only"
  > "Find security-related skills"
```

```
๐Ÿ”ฎ browse | testing

โ•ญโ”€ ๐Ÿ”ฎ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Found 8 โ”€โ•ฎ
โ”‚ โ€ข tdd-workflows (plugin)                     โ”‚
โ”‚   Test-driven development workflow           โ”‚
โ”‚   claude-code-plugins-plus โ€ข 258 plugins     โ”‚
โ”‚                                              โ”‚
โ”‚ โ€ข pytest-mcp (mcp)                           โ”‚
โ”‚   Python testing framework                   โ”‚
โ”‚   smithery.ai โ€ข โญ verified                  โ”‚
โ”‚                                              โ”‚
โ”‚ Total: 19 sources โ€ข 15,000+ resources        โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
```

```json
{
  "results": [
    {
      "name": "tdd-workflows",
      "type": "plugin",
      "description": "Test-driven development workflow",
      "source": "claude-code-plugins-plus",
      "install_command": "git clone https://github.com/user/tdd-workflows ~/.claude/plugins/tdd-workflows",
      "category": "testing"
    },
    {
      "name": "pytest-mcp",
      "type": "mcp",
      "description": "Python testing framework",
      "source": "smithery.ai",
      "install_command": "npx pytest-mcp",
      "verified": true
    }
  ],
  "sources_searched": ["claude-code-plugins-plus", "smithery.ai", "npmjs.com"],
  "total_available": 15000,
  "cached": true
}
```

#### `sources`

Show all available data sources and their status.

```
๐Ÿ”ฎ sources
  > "Which sources are available?"
  > "Check data source health"
```

```
๐Ÿ”ฎ sources | 19 total

โ•ญโ”€ ๐Ÿ”ฎ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 15,000+ total โ”€โ•ฎ
โ”‚ Plugins (303):                                     โ”‚
โ”‚   โ€ข claude-code-plugins-plus: 258 โœ“                โ”‚
โ”‚   โ€ข claude-plugins-official: 45 โœ“                  โ”‚
โ”‚                                                    โ”‚
โ”‚ MCP Servers (14,358):                              โ”‚
โ”‚   โ€ข smithery.ai: 500 โœ“                             โ”‚
โ”‚   โ€ข playbooks.com: 1,000+ โœ“                        โ”‚
โ”‚   โ€ข npmjs.com: 250 โœ“                               โ”‚
โ”‚   โ€ข modelcontextprotocol.io: 248 โœ“                 โ”‚
โ”‚   โ€ข glama.ai: 662 โœ“                                โ”‚
โ”‚   โ€ข wong2/awesome-mcp-servers: 200+ โœ“              โ”‚
โ”‚   โ€ข punkpeye/awesome-mcp-servers: 400+ โœ“           โ”‚
โ”‚   โ€ข collabnix/awesome-mcp-lists: 100+ โœ“            โ”‚
โ”‚                                                    โ”‚
โ”‚ Skills (339):                                      โ”‚
โ”‚   โ€ข awesome-agent-skills: 339 โœ“                    โ”‚
โ”‚   โ€ข awesome-claude-code: 200+ โœ“                    โ”‚
โ”‚   โ€ข jmanhype/awesome-claude-code: 50+ โœ“            โ”‚
โ”‚   โ€ข skillsmp: 25,000 (optional key)                โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
```

```json
{
  "sources": [
    { "name": "claude-code-plugins-plus", "type": "plugin", "count": 258, "status": "ok" },
    { "name": "claude-plugins-official", "type": "plugin", "count": 45, "status": "ok" },
    { "name": "smithery.ai", "type": "mcp", "count": 500, "status": "ok" },
    { "name": "playbooks.com", "type": "mcp", "count": 1000, "status": "ok" },
    { "name": "npmjs.com", "type": "mcp", "count": 250, "status": "ok" },
    { "name": "modelcontextprotocol.io", "type": "mcp", "count": 248, "status": "ok" },
    { "name": "glama.ai", "type": "mcp", "count": 662, "status": "ok" },
    { "name": "awesome-agent-skills", "type": "skill", "count": 339, "status": "ok" },
    { "name": "skillsmp", "type": "skill", "count": 25000, "status": "no_key" }
  ],
  "total": 15000
}
```

## methodology

How [claude-oracle-mcp](https://github.com/Vvkmnn/claude-oracle-mcp) [works](https://github.com/Vvkmnn/claude-oracle-mcp/tree/master/src):

```
 User: "What MCP servers exist for PostgreSQL?"
                        โ†“
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚  ๐Ÿ”ฎ claude-oracle   โ”‚
              โ”‚     MCP Server      โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ”‚
         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
         โ”‚   PARALLEL SEARCH (19)       โ”‚
         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚                   โ”‚                   โ”‚
โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”        โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”       โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”
โ”‚Smitheryโ”‚        โ”‚  npm     โ”‚       โ”‚ Glama.ai โ”‚
โ”‚  500   โ”‚        โ”‚  250     โ”‚       โ”‚   662    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ”‚                   โ”‚                   โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚   DEDUPLICATE &     โ”‚
              โ”‚   RANK RESULTS      โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ”‚  FORMAT & RETURN    โ”‚
              โ”‚   ๐Ÿ”ฎ Beautiful      โ”‚
              โ”‚   Bordered Output   โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

**Core features:**

- **17 registries + GitHub search + web search**: Smithery, npm, Glama.ai, GitHub, awesome lists + more
- **15,000+ resources**: Skills, plugins, and MCP servers in one search
- **Parallel fetching**: All sources searched simultaneously (~3 seconds)
- **Smart caching**: In-memory TTL cache (6-24 hour expiry)
- **Keyword scoring**: Weighted matching (exact > starts with > contains)
- **Quality signals**: Stars, verified badges, quality scores boost ranking
- **Beautiful formatting**: Bordered output with ๐Ÿ”ฎ identifier

**Data sources (zero-config, 16/17 registries):**

| Source                           | Type         | Count  | Method                  |
| -------------------------------- | ------------ | ------ | ----------------------- |
| Smithery Registry                | MCP          | 500    | REST API (5 pages)      |
| Playbooks                        | MCP          | 1,000+ | XML Sitemaps            |
| Official MCP Registry            | MCP          | 248    | REST API (3 iterations) |
| npm Registry                     | MCP/Plugin   | 250    | Search API (1 page)     |
| Glama.ai                         | MCP          | 662    | RSS Feed                |
| wong2/awesome-mcp-servers        | MCP          | 200+   | GitHub Markdown         |
| punkpeye/awesome-mcp-servers     | MCP          | 400+   | GitHub Markdown         |
| collabnix/awesome-mcp-lists      | MCP          | 100+   | GitHub Markdown         |
| jmanhype/awesome-claude-code     | Plugin/Skill | 50+    | GitHub Markdown         |
| hesreallyhim/awesome-claude-code | Skill        | 200+   | GitHub Markdown         |
| awesome-agent-skills             | Skill        | 339    | GitHub Markdown         |
| claude-code-plugins-plus         | Plugin       | 258    | Marketplace JSON        |
| claude-plugins-official          | Plugin       | 45     | Marketplace JSON        |
| superpowers-marketplace          | Plugin       | -      | Marketplace JSON        |

**Query-based (searched per query, zero-config):**

| Source                           | Type         | Count  | Method                  |
| -------------------------------- | ------------ | ------ | ----------------------- |
| GitHub (search)                  | MCP/Plugin   | ~20    | REST API (per query)    |
| Web (search)                     | MCP/Plugin   | ~10    | DuckDuckGo Lite (per query) |

**Optional (requires API key):**

- **SkillsMP**: 25,000+ skills with semantic search ([get key](https://skillsmp.com))
- **GITHUB_TOKEN**: Higher GitHub API rate limits (10 โ†’ 30 req/min)

> **Note:** Pagination is limited for faster responses (~3s). Full datasets available through caching on subsequent searches.

**Design principles:**

- **Aggregated search** -- single query searches 17 registries + GitHub + web simultaneously
- **Zero-config** -- 18/19 sources work without API keys (GITHUB_TOKEN optional for rate limits)
- **Deduplication** -- cross-source result merging by name similarity
- **Relevance scoring** -- weighted name match, description match, and popularity
- **Offline fallback** -- graceful degradation when sources are unreachable

## alternatives

Every MCP discovery tool either searches a single registry or requires separate accounts per source. Oracle aggregates 19 sources in one command.

| Feature             | **oracle**                                     | 1mcpserver              | Single registry                   |
| ------------------- | ---------------------------------------------- | ----------------------- | --------------------------------- |
| **Resource types**  | **MCP + plugins + skills**                     | MCP servers only        | Usually one type                  |
| **Sources**         | **19 (registries + awesome lists + GitHub + web)** | Registry searches   | One source at a time              |
| **Skills/plugins**  | **Yes (339 skills, 303 plugins)**              | No                      | Usually no                        |
| **Setup**           | **One MCP, one command**                       | One MCP, one command    | Separate account/API per registry |
| **Cross-source**    | **Deduplicated, ranked results**               | Per-registry            | Manual comparison                 |
| **Caching**         | **In-memory TTL (6-24h)**                      | Per-request             | Varies                            |
| **Install commands**| **Included in results**                        | Included in results     | Varies                            |

**[1mcpserver](https://github.com/particlefuture/1mcpserver)** -- MCP server discovery from multiple registries. Searches MCP servers only -- no plugins, no skills. Per-registry results without cross-source dedup or ranking. No caching between requests.

**[Smithery](https://smithery.ai)**, **[Glama](https://glama.ai)**, **[SkillsMP](https://skillsmp.com)** -- Individual registries, each searchable independently. Requires separate accounts or API access per registry. Each covers a subset of the ecosystem -- no single source has everything. Manual comparison across registries to find the best option. Oracle aggregates all of these (and 16 more sources) with deduplicated, ranked results in one query.

## development

```bash
git clone https://github.com/Vvkmnn/claude-oracle-mcp && cd claude-oracle-mcp
npm install && npm run build
npm test
```

**Package requirements:**

- **Node.js**: >=20.0.0 (ES modules)
- **Runtime**: `@modelcontextprotocol/sdk`, `fast-xml-parser`
- **Zero external databases** -- works with `npx`

**Development workflow:**

```bash
npm run build          # TypeScript compilation with executable permissions
npm run dev            # Watch mode with tsc --watch
npm run start          # Run the MCP server directly
npm run lint           # ESLint code quality checks
npm run lint:fix       # Auto-fix linting issues
npm run format         # Prettier formatting (src/)
npm run format:check   # Check formatting without changes
npm run typecheck      # TypeScript validation without emit
npm run test           # Lint + type check
npm run prepublishOnly # Pre-publish validation (build + lint + format:check)
```

**Git hooks (via Husky):**

- **pre-commit**: Auto-formats staged `.ts` files with Prettier and ESLint

Contributing:

- Fork the repository and create feature branches
- Test with multiple data sources before submitting PRs
- Follow TypeScript strict mode and [MCP protocol](https://modelcontextprotocol.io/specification) standards

Learn from examples:

- [Official MCP servers](https://github.com/modelcontextprotocol/servers) for reference implementations
- [TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) for best practices
- [Creating Node.js modules](https://docs.npmjs.com/creating-node-js-modules) for npm package development

## license

[MIT](LICENSE)

<hr>

<p align="center">
<a href="https://en.wikipedia.org/wiki/Cumaean_Sibyl"><img src="logo/oracle.jpg" alt="Aeneas and the Cumaean Sibyl -- Claude Mellan" width="340"></a>
</p>

<p align="center">

_**[Aeneas and the Cumaean Sibyl](https://en.wikipedia.org/wiki/Cumaean_Sibyl)** by **[Claude Mellan](https://en.wikipedia.org/wiki/Claude_Mellan)**. The oracle who guided Aeneas through the underworld._

</p>

TDQS

A3.8/5.0

Scored across 3 tools

Disambiguation4/5

Tools are generally distinct: browse is for exploring categories, search is for querying, and sources lists data sources. However, there is minor potential confusion between browse and search.

Naming Consistency4/5

All tool names are single lowercase words ('browse', 'search', 'sources'), which is a consistent but simple pattern. No mixing of conventions.

Tool Count5/5

Three tools is well-scoped for a discovery server: browse, search, and sources cover the core functionality without excess.

Completeness4/5

The set covers browsing, searching, and viewing sources, which is complete for discovery. Missing a dedicated 'get details' tool is minor.

Maintenance

ActivityInactive
ResponsivenessNo issues