Skip to main content
Glama
alfaarghya

MCP keyword search

by alfaarghya
README.md
# MCP keyword search

A Model Context Protocol (MCP) server that provides keyword search functionality within files

## ๐Ÿš€ Installation

### Step 1: Clone or Create Project

```bash
git clone https://github.com/alfaarghya/mcp-keyword-search
cd mcp-keyword-search
```

### Step 2: Install Dependencies

```bash
pnpm install
```

This will install:

- `@modelcontextprotocol/sdk` - MCP SDK
- `@types/node` - TypeScript definitions for Node.js
- `typescript` - TypeScript compiler

## ๐Ÿ”จ Building the Project

Compile TypeScript to JavaScript:

```bash
pnpm run build
```

This creates a `dist/` folder with compiled JavaScript files.

**Development Mode** (auto-rebuild on changes):

```bash
pnpm run dev
```

## ๐Ÿงช Testing

### Using MCP Inspector

The MCP Inspector provides a visual web interface for testing.

#### Step 1: Start the Inspector

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

#### Step 2: Open in Browser

Navigate to the URL shown

#### Step 3: Test the Tool

1. In the web interface, you'll see **"search_file"** in the tools list
2. Click on it to expand the input form
3. Enter the following test data:

```json
{
  "file_path": "./sample.txt",
  "keyword": "Hello",
  "case_sensitive": false
}
```

4. Click **"Execute"** or **"Run Tool"**

#### Expected Output:

```
Found 3 match(es) for "hello" in ./test.txt:

Line 1 (position 0): Hello World! This is a test file.
Line 3 (position 0): Hello again on line 3.
Line 5 (position 0): HELLO in uppercase.
```

![](./public/demo-mcp.png)

## ๐Ÿ”ง API Reference

### Server Information

- **Name**: `file-search-server`
- **Version**: `1.0.0`
- **Protocol**: Model Context Protocol (MCP)
- **Transport**: stdio

### Available Tools

#### `search_file`

Searches for a keyword within a file.

**Input Schema:**

```typescript
{
  file_path: string;      // Required: Path to file
  keyword: string;        // Required: Search keyword
  case_sensitive?: boolean; // Optional: Case sensitivity (default: false)
}
```

**Output:**

- List of matching lines with line numbers and positions
- Or error message if file not found or other issues

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no ambiguity or risk of confusing it with others. The tool's purpose is clearly defined as searching for a keyword within a file.

Naming Consistency5/5

The tool name follows a clear verb_noun pattern: search_file. This is consistent and predictable, even with only a single tool.

Tool Count3/5

A single tool is extremely minimal, but for a server specifically focused on keyword search in files, it might be acceptable. However, it feels thin and could benefit from additional related tools like directory search or multi-file search.

Completeness1/5

The server only supports searching within a single file, lacking capabilities such as directory-wide search, regex support, or multi-file search. These are significant gaps for a keyword search tool, rendering the surface severely incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues