toad-mcp-server
# toad-mcp-server








> š MCP server exposing portfolio AI tools via [Model Context Protocol](https://modelcontextprotocol.io).
> Connect to Claude Desktop and call Semantic Search, Eval Framework, and Prompt Management tools directly from chat.
## šļø Architecture
```
āāāāāāāāāāāāāāāāāāāāāāā stdio / HTTP āāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Claude Desktop āāāāāāāāāāāāāāāāāā-āāāŗā toad-mcp-server ā
ā (MCP Client) ā ā ā
āāāāāāāāāāāāāāāāāāāāāāā ā āāāāāāāāāāāāāāāāāāāāāā ā
ā ā toad_search_docs āāāā¼āāāŗ Semantic Search API
ā āāāāāāāāāāāāāāāāāāāāā⤠ā
ā ā toad_run_eval āāāā¼āāāŗ Eval Framework API
ā āāāāāāāāāāāāāāāāāāāāā⤠ā
ā ā toad_system_status āāāā¼āāāŗ Health checks
ā āāāāāāāāāāāāāāāā-āāāā⤠ā
ā ā toad_list_prompts ā ā
ā āāāāāāāāāāāāāāāāāāāāā⤠ā
ā ā toad_get_prompt ā ā
ā āāāāāāāāāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
## š ļø Tools
| Tool | Description | Read-only |
| ----------------------- | --------------------------------------------------------- | --------- |
| `toad_search_documents` | Semantic search over documents via natural language query | Yes |
| `toad_run_eval` | Run eval suite against a prompt variant, returns scores | No |
| `toad_system_status` | Health check all portfolio services (latency, status) | Yes |
| `toad_list_prompts` | List prompts with pagination and tag filtering | Yes |
| `toad_get_prompt` | Get prompt by name with version, template, score history | Yes |
All tools support `response_format: "markdown" | "json"` where applicable.
## š¦ Resources
| URI | Description |
| ----------------------- | -------------------------------------------- |
| `toad://system/status` | Health status of all services (JSON) |
| `toad://prompts/{name}` | Get prompt by name with full metadata (JSON) |
## š Quick Start
```bash
# Install
npm install
# Build
npm run build
# Run (stdio ā for Claude Desktop)
npm start
# Run (HTTP ā for remote/multi-client access)
TRANSPORT=http npm start
# Dev mode
npm run dev
```
## š„ļø Claude Desktop Setup
1. Build the server:
```bash
npm run build
```
2. Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
```json
{
"mcpServers": {
"toad-mcp-server": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/absolute/path/to/toad-mcp-server",
"env": {
"SEMANTIC_SEARCH_URL": "http://localhost:3001",
"EVAL_FRAMEWORK_URL": "http://localhost:3002"
}
}
}
}
```
3. Restart Claude Desktop ā tools appear automatically.
## š Testing with MCP Inspector
```bash
npx @modelcontextprotocol/inspector node dist/index.js
```
Opens a web UI to test each tool interactively.
## āļø Environment Variables
| Variable | Default | Description |
| --------------------- | ----------------------- | --------------------------------- |
| `SEMANTIC_SEARCH_URL` | `http://localhost:3001` | Semantic Search Engine endpoint |
| `EVAL_FRAMEWORK_URL` | `http://localhost:3002` | Eval Framework endpoint |
| `TRANSPORT` | `stdio` | Transport mode: `stdio` or `http` |
| `PORT` | `3100` | HTTP transport port |
| `HOST` | `127.0.0.1` | HTTP transport bind address |
## š Scripts
| Script | Description |
| ---------------- | ----------------------------- |
| `npm run build` | Compile TypeScript to `dist/` |
| `npm run dev` | Run with tsx (hot reload) |
| `npm start` | Run compiled server |
| `npm run lint` | ESLint check |
| `npm run format` | Prettier format |
## š§± Tech Stack
- TypeScript (NodeNext, strict)
- [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk) ā MCP server SDK
- [Zod](https://zod.dev) v4 ā input validation
- ESLint + Prettier + Husky ā code quality
- GitHub Actions ā CI (lint ā format ā build)
## š License
ISC
TDQS
Scored across 5 tools
Each tool targets a distinct capability: semantic search, eval execution, system health, prompt listing, and prompt detail retrieval. The relationship between list_prompts and get_prompt is complementary rather than ambiguous.
All tools follow the same `toad_` prefix with a clear verb_noun pattern: search_documents, run_eval, system_status, list_prompts, get_prompt. This makes the toolset highly predictable.
Five tools is well-scoped for a specialized server covering search, evaluation, system health, and prompt registry access. Each tool earns its place without redundant or unnecessary entries.
The server supports read/search/run workflows, but lacks prompt registry write operations (create/update/delete) and any way to list available eval suites. Agents may encounter dead ends when trying to discover eval inputs or manage prompt lifecycle.