Design Patterns MCP Server
Design Patterns MCP Server
Ein intelligenter MCP-Server (Model Context Protocol), der Design-Pattern-Empfehlungen mithilfe hybrider Suche (semantisch + Schlüsselwort + Graph-Augmentierung) bereitstellt. Greifen Sie über eine natürliche Sprachschnittstelle mit moderner Blended-RAG-Architektur auf 710 Design-Patterns in über 90 Kategorien zu.
Quick Start
# Clone and setup
git clone https://github.com/apolosan/design_patterns_mcp.git
cd design_patterns_mcp
# Install dependencies and build (using bun)
bun install
bun run db:setup
# Or using npm (if bun is not installed)
npm install --ignore-scripts
npx tsc
node dist/cli/migrate.js
node dist/cli/seed.js
node dist/cli/generate-embeddings.js
node dist/cli/setup-relationships.jsKonfigurieren Sie den Server in Ihrem MCP-Client (Claude Desktop, Cursor usw.) und beginnen Sie, Patterns über natürliche Sprachabfragen zu entdecken.
Related MCP server: Acemcp
Tooling und Build-Hygiene
Verwenden Sie Bun als kanonischen Paketmanager für dieses Repository (nur
bun install). Die Lockfile istbun.lock.Kopieren Sie niemals ein
.git-Verzeichnis indist/data(und liefern Sie es nicht innerhalb vondist/aus). Dieser Pfad muss ein reines Datenverzeichnis bleiben, um Multi-Gigabyte-Images und Metadaten-Lecks zu vermeiden.
Features
Feature | Beschreibung |
Hybride Suchmaschine | Blended RAG, der semantisches, Schlüsselwort- (BM25) und graphaugmentiertes Retrieval kombiniert |
710 Patterns | Umfassender Katalog über 90+ Kategorien, einschließlich Feature Flag / Feature Toggle für progressive Delivery und Experimente |
MCP-Integration | Nahtlose Integration mit Claude, Cursor und anderen MCP-Clients |
Mehrstufiger Cache | L1-In-Memory- + L3-SQLite-Cache mit einer Trefferquote von 95 %+ |
Event-Bus-System | Entkoppelte Dienstkommunikation über Pub/Sub |
Telemetrie & Health | Echtzeit-Leistungsmetriken und Systemüberwachung |
SOLID-Architektur | Saubere, wartbare Codebasis nach Best Practices |
Produktionsreif | 654 Testfälle in 77 Testdateien mit 100 % Erfolgsquote (0 Fehler, 0 Übersprungen) |
Verfügbare Pattern-Kategorien
Kategorie | Anzahl | Beispiele |
Klassische GoF-Patterns | 34 | Factory, Builder, Observer, Strategy, Command |
Architektur-Patterns | 56 | MVC, Clean Architecture, Hexagonal, DDD, Feature Flag |
Microservices & Cloud | 39 | Circuit Breaker, Saga, Service Mesh |
Data Engineering | 54 | Repository, CQRS, Event Sourcing |
AI/ML & MLOps | 46 | RAG, Fine-Tuning, Model Compression |
React-Patterns | 27 | Hooks, Server Components, Performance |
Blockchain & Web3 | 115 | DeFi, NFTs, Smart Contracts, MEV |
Nebenläufigkeit & Reactive | 45 | Producer-Consumer, Actor Model |
Sicherheit | 21 | OAuth, RBAC, Zero Trust |
Funktionale Programmierung | 26 | Monads, Functors, Higher-Order Functions |
Architektur
src/
├── adapters/ # External service adapters (LLM, embeddings)
├── cli/ # CLI commands (migrate, seed, embeddings, setup-relationships)
├── core/ # DI Container, configuration builder
├── db/ # Database migrations
├── events/ # Event bus system
├── handlers/ # MCP request handlers (hybrid search, recommendations)
├── health/ # Health check services
├── repositories/ # Data access layer
├── search/ # Hybrid search engine
├── services/ # Business services (cache, telemetry, pattern service)
├── strategies/ # Strategy pattern implementations
├── types/ # TypeScript type definitions
└── mcp-server.ts # MCP server entry point
data/
├── patterns/ # 710 JSON pattern definitions (see `feature-flag.json`)
└── design-patterns.db # SQLite database with 710 patterns and embeddingsVerwendung
Patterns finden
Stellen Sie über Ihren MCP-Client Fragen in natürlicher Sprache:
"I need to create complex objects with many optional configurations"
→ Builder, Abstract Factory, Factory Method
"How to handle service failures gracefully in distributed systems?"
→ Circuit Breaker, Bulkhead, Retry, Fallback
"What pattern helps with state-dependent behavior in React?"
→ State Machine, Observer, useReducer
"How to implement secure authentication and authorization?"
→ OAuth 2.0, RBAC, JWT, Zero TrustMCP-Tools
Tool | Beschreibung |
| Hybride Suche nach Patterns anhand von Problembeschreibungen |
| Schlüsselwort- oder semantische Suche mit Filtern |
| Umfassende Pattern-Informationen mit Codebeispielen |
| Statistiken über verfügbare Patterns |
| Systemzustand und Servicestatus |
Installation
Voraussetzungen
Node.js >= 18.0.0
Bun >= 1.0.0 (empfohlen) oder npm >= 8.0.0
Setup mit Bun
bun install
bun run build
bun run db:setupSetup mit npm
Das prepare-Skript in package.json erfordert bun. Wenn Sie bun nicht installiert haben, verwenden Sie --ignore-scripts, um es zu überspringen, und bauen Sie manuell:
npm install --ignore-scripts
npx tsc
# Setup database
node dist/cli/migrate.js
node dist/cli/seed.js
node dist/cli/generate-embeddings.js
node dist/cli/setup-relationships.jsMCP-Konfiguration
Fügen Sie Folgendes zu Ihrer MCP-Client-Konfiguration hinzu (Claude Desktop, Cursor usw.):
{
"mcpServers": {
"design-patterns": {
"command": "node",
"args": ["/absolute/path/to/design-patterns-mcp/dist/mcp-server.js"],
"env": {
"LOG_LEVEL": "info",
"DATABASE_PATH": "/absolute/path/to/design-patterns-mcp/data/design-patterns.db",
"ENABLE_HYBRID_SEARCH": "true",
"ENABLE_GRAPH_AUGMENTATION": "true",
"EMBEDDING_COMPRESSION": "true",
"ENABLE_FUZZY_LOGIC": "true",
"ENABLE_TELEMETRY": "true",
"ENABLE_MULTI_LEVEL_CACHE": "true"
}
}
}
}Wichtig: Verwenden Sie absolute Pfade sowohl für
argsals auch fürDATABASE_PATH. MCP-Clients wie Cursor unterstützen das Feldcwdnicht zuverlässig. Relative Pfade werden daher relativ zum Home-Verzeichnis des Benutzers aufgelöst und nicht relativ zum Projektverzeichnis. Beispiele für clientspezifische Konfigurationen finden Sie im Quickstart des Projekts.
Umgebungsvariablen
Variable | Standard | Beschreibung |
|
| Protokollierungsgrad (debug, info, warn, error) |
|
| Pfad zur SQLite-Datenbank |
|
| Blended-RAG-Suche aktivieren |
|
| Traversierung von Pattern-Beziehungen aktivieren |
|
| Dimensionsreduktion |
|
| Verfeinerung der Ergebnisse durch Fuzzy-Logik |
|
| Leistungsmetriken |
|
| L1- + L3-Caching |
|
| Limit für gleichzeitige Anfragen |
|
| Cache-Größenlimit |
|
| Cache-TTL in Millisekunden |
|
| Transportmodus (stdio/http) |
|
| HTTP-Port (HTTP-Modus) |
|
| MCP-Endpunktpfad |
|
| Pfad für Health-Check |
|
| Datenbank-Setup überspringen |
Docker-Bereitstellung
Schnellstart
# Build
docker build -t design-patterns-mcp .
# Run HTTP mode
docker run -p 3000:3000 -e TRANSPORT_MODE=http design-patterns-mcp
# Run stdio mode (default)
docker run design-patterns-mcpDocker Compose
docker compose up --build -dUmgebungsvariablen
Variable | Standard | Beschreibung |
|
| Transportmodus (stdio/http) |
|
| HTTP-Port (HTTP-Modus) |
|
| MCP-Endpunktpfad |
|
| Pfad für Health-Check |
|
| Pfad zur SQLite-Datenbank |
|
| Protokollierungsgrad |
|
| Datenbank-Setup überspringen |
Endpunkte (HTTP-Modus)
GET /health– Health-CheckPOST /mcp– MCP-JSON-RPC-Endpunkt
Befehle
# Development
bun run build # Compile TypeScript
bun run dev # Development with hot reload
bun run start # Build and start production server
# Database
bun run db:setup # Complete database setup
bun run migrate # Run migrations
bun run seed # Seed pattern data
bun run generate-embeddings # Generate semantic embeddings
bun run setup-relationships # Setup pattern relationships
# Quality
bun run test # Run all tests
bun run lint # Check code quality
bun run lint:fix # Auto-fix linting issues
bun run typecheck # TypeScript type checkingTests
Das Projekt umfasst 654 Testfälle in 77 Testdateien mit 100 % Erfolgsquote (0 Fehler, 0 Übersprungen):
Vertragstests: Validierung der MCP-Protokollkonformität
Integrationstests: Tests der Komponenteninteraktion mit einer echten SQLite-Datenbank und Embeddings
Performanztests: Benchmarks für Suche und Vektorisierung
Unit-Tests: Tests einzelner Komponenten
# Run all tests
bun run test
# Run specific test suites
bun run test:unit -- --grep "PatternService"
bun run test:integration -- --grep "database"
bun run test:performance -- --timeout 30000Architektur-Patterns
Dieses Projekt implementiert die Patterns, die es dokumentiert:
Pattern | Implementierung |
Repository |
|
Service Layer |
|
Object Pool |
|
Dependency Injection |
|
Strategy |
|
Event Bus |
|
Multi-Level Cache |
|
Builder |
|
Vektorsuche (Laufzeit-Transparenz)
Der Server verwendet sql.js (SQLite-WASM) mit In-Memory-Cosinus-Ähnlichkeit über gespeicherte Embeddings. Natives sqlite-vec (vec0-virtuelle Tabellen) ist in dieser Laufzeit nicht verfügbar. Die semantische Suche funktioniert für die aktuelle Kataloggröße (~710 Patterns), verwendet jedoch keine indizierten nativen Vektortabellen.
Aktivieren Sie die LLM-Anreicherung nur, wenn Sie eine echte Provider-Integration haben – die integrierten LLM-Bridge-Provider geben Platzhalter zurück, sofern sie nicht erweitert werden.
Beitragen
Beiträge sind willkommen! Siehe den Leitfaden für Beiträge.
Forken Sie das Repository
Erstellen Sie einen Feature-Branch
Nehmen Sie Änderungen gemäß den SOLID-Prinzipien vor
Führen Sie Tests und Linting aus
Reichen Sie einen Pull-Request ein
Versionshinweise
v0.7.2 — Versionsanpassung (2026-08-16)
Die kanonische Version wurde in allen aktiven Quell- und Dokumentationsdateien von
0.7.1auf0.7.2angehoben.Aktualisierte Dateien:
package.json,src/mcp-server.ts(Server-Registrierung + Laufzeitinformationen),AGENTS.md,CLAUDE.md(Canonical-Identity-Header),README.md(Badge, Abschnitt Versionshinweise, Versions-Footer),CHANGELOG.md(neuer Eintrag). Die Audit-Nachweis-Referenzen indocs/IMPROVEMENTS_03.mdundQUICKSTART.mdbleiben gemäß Status #45 unverändert.Veraltete Versionsreferenzen korrigiert: Header
(version 0.6.0)inAGENTS.mdundCLAUDE.md→(version 0.7.2)(lag 7 Minor-Versionen hinter der tatsächlichenpackage.json).Der Laufzeit-Self-Report bewirbt jetzt
0.7.2gegenüber MCP-Clients über denServer-Konstruktor und den/info-Endpunkt.Keine verhaltensbezogene Änderung auf Code-Ebene: reiner Release-/Versionskanonisierungs-Patch.
Tests: vollständige Suite erhalten (keine Testdateien geändert), Typecheck sauber.
v0.7.1 — Lint- und Teststabilisierung (2026-08-16)
Test-Suite vollständig validiert: 654/654 GRÜN, 0 übersprungen, 0 Todos (zuvor 651/654 mit 3 bereits vorhandenen Flakes).
Das durch die
db:setup-Pipeline verursachtedata/.git-Leck behoben (Data-Hygiene-Test).Zwei veraltete Tests an den BUG-007-Vertrag angeglichen: snake_case
search_typewird vonvalidateSearchPatternsArgsstillschweigend ignoriert und die kanonische Standardstrategiehybridwird angewendet.tests/unit/input-validation.test.tstests/unit/mcp-server-search.test.ts
README.md-Versionsdrift korrigiert: Der abschließende Block spiegelt jetzt die kanonische 0.7.0 → 0.7.1-Baseline wider; Badge, Abschnitt „Production Ready“ und „Testing“ sind an die aktuelle 654-Test-Suite angeglichen.
Lint-Baseline wiederhergestellt: 0 Probleme, Exit 0 (zuvor 2 Fehler + 6 Warnungen).
Nicht verwendeten
HealthStatus-Import insrc/mcp/http-transport.tsentfernt.Gezieltes
eslint-disablefürrequire-awaitbei der synchronencheck()-Methode insrc/health/embedding-coverage-health-check.tshinzugefügt (Interface-Konformität bleibt erhalten).ensureBM25()insrc/handlers/keyword-search-handler.tsso refaktoriert, dass esBM25Scorerzurückgibt; dadurch entfallen 4 Non-Null-Assertions an den Aufrufstellen.2 Non-Null-Assertions auf
results.find()intests/unit/bm25-scorer.test.tsdurch explizitetoBeDefined-Guards ersetzt.
bun run typechecksauber.
v0.7.0 — Katalogerweiterung (2026-08-16)
24 neue Design Patterns aus
docs/01_Agentic_Design_Patterns.mdunddocs/02_Data_Engineering_Design_Patterns.mdhinzugefügt:3 Agentic AI: Multi-Agent Collaboration, Goal Setting and Monitoring, Exception Handling and Recovery.
21 Data Engineering: Aligned Fan-In, Unaligned Fan-In, Bin Pack Orderer, Exclusive Choice, FIFO Orderer, Fine-Grained Accessor for Resources, Fine-Grained Accessor for Tables, Fine-Grained Tracker, In-Place Overwriter, Isolated Sequencer, Metadata Decorator, Metadata Enhancer, Offline Observer, Schema Compatibility Enforcer, Schema Migrator, Secretless Connector, Secrets Pointer, Single Runner, Skew Detector, SLA Misses Detector, Vertical Partitioner.
Katalog von 686 → 710 Patterns gewachsen (Agentic AI: 3→6, Data Engineering: 4→25).
Integritätsprüfung PASS: 710 Patterns, 151 gültige Beziehungen.
654/654 Tests bestanden (100 % grün, 0 übersprungen, 0 Todos).
Lizenz
MIT-Lizenz – siehe LICENSE für Details.
Ressourcen
Notizen zur Vektorsuche (sql.js vs. sqlite-vec) – siehe Contributing-Guide
Referenz zur MCP-Tools-Oberfläche
Dokumentationsindex
Version: 0.7.2 Zuletzt aktualisiert: August 2026 Patterns: 710 JSON-Definitionen (Highlight: Feature Flag / Feature Toggle) Tests: 654 Testfälle | 100 % Erfolgsquote (0 Fehler, 0 übersprungen)
Siehe auch: den neuesten adversarischen Qualitätssicherungsbericht (16 Befunde: 1 kritisch, 9 mit hoher Priorität, 6 geringfügig). Die Befunde betreffen die Korrektheit der Suchpipeline, Konfigurationsdrift, Transportsicherheit und die Synchronisierung der Dokumentation.
Available Tools
4 toolscount_patternsB
Get the total number of design patterns in the database
| Name | Required | Description | Default |
|---|---|---|---|
| includeDetails | No | Include breakdown by category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] the total number', implying a read-only operation, but doesn't mention any behavioral traits such as performance considerations, error handling, or whether it's a simple count versus an aggregated query. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly. Every part of the sentence earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter) and high schema coverage, the description is adequate but has clear gaps. It lacks output schema information, usage guidelines, and behavioral context, which could help an agent use it correctly. However, for a simple counting tool, it meets the minimum viable threshold without being fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'includeDetails' clearly documented in the schema. The description adds no additional meaning beyond what the schema provides, as it doesn't mention parameters at all. According to the rules, when schema_description_coverage is high (>80%), the baseline score is 3, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('total number of design patterns in the database'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'find_patterns' or 'search_patterns', which might also retrieve pattern information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'find_patterns', 'get_pattern_details', or 'search_patterns'. It lacks any context about use cases, prerequisites, or exclusions, leaving the agent to infer usage based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_patternsC
Find design patterns matching a problem description using semantic search
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language description of the problem or requirements | |
| categories | No | Optional: Pattern categories to search in | |
| maxResults | No | Maximum number of recommendations to return | |
| programmingLanguage | No | Target programming language for implementation examples |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'semantic search' but doesn't explain what this entails—e.g., how results are ranked, whether it's a read-only operation, or any limitations like rate limits or authentication needs. For a tool with no annotation coverage, this leaves critical behavioral traits unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core purpose ('Find design patterns...'), making it easy to understand at a glance. Every part of the sentence earns its place by conveying essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (semantic search with 4 parameters) and the absence of both annotations and an output schema, the description is insufficient. It doesn't cover behavioral aspects like result format, error handling, or how semantic search works, nor does it explain the relationship between parameters and outcomes. This leaves significant gaps for an AI agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds no additional meaning beyond the schema, such as explaining the 'semantic search' process in relation to the 'query' parameter or how 'categories' affect results. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find design patterns matching a problem description using semantic search.' It specifies the verb ('Find'), resource ('design patterns'), and method ('semantic search'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_patterns' or 'count_patterns,' which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'search_patterns' and 'count_patterns' available, it fails to indicate scenarios where this tool is preferred, such as for semantic versus keyword-based searches, or how it differs from 'get_pattern_details.' This lack of comparative context leaves the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pattern_detailsC
Get detailed information about a specific pattern
| Name | Required | Description | Default |
|---|---|---|---|
| patternId | Yes | Pattern ID to get details for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it 'gets' information, implying a read-only operation, but doesn't disclose any behavioral traits such as error handling, permissions needed, rate limits, or what 'detailed information' includes. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed information' entails, potential return values, or any behavioral context. For a tool with no structured data beyond the input schema, this leaves significant gaps in understanding its full functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'patternId' clearly documented. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'detailed information about a specific pattern', which is specific and understandable. However, it doesn't differentiate from sibling tools like 'find_patterns' or 'search_patterns' that might also retrieve pattern information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'find_patterns' or 'search_patterns'. It lacks context about whether this is for retrieving details of a known pattern ID versus searching for patterns, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_patternsC
Search patterns by keyword or semantic similarity
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| searchType | No | hybrid | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions search functionality but fails to describe critical behaviors such as pagination, rate limits, authentication needs, or what happens on no matches. For a search tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence with zero waste, front-loading the core functionality. Every word earns its place, making it easy for an agent to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a search function with 3 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on return values, error handling, and behavioral traits, leaving the agent with insufficient context to use the tool effectively beyond basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 33%, with only the 'query' parameter documented. The description adds value by explaining that searches can be by keyword or semantic similarity, which helps interpret the 'searchType' enum, but it doesn't clarify the 'limit' parameter or provide details beyond what the schema implies. This partial compensation justifies a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as searching patterns using keyword or semantic similarity, which is specific and actionable. However, it doesn't explicitly distinguish this from sibling tools like 'find_patterns' or 'count_patterns', leaving some ambiguity about when to choose one over another.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'find_patterns' or 'count_patterns'. It mentions search methods but doesn't specify scenarios, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
count_patterns - First observed
find_patterns - First observed
get_pattern_details - First observed
search_patterns
TDQS
Scored across 4 tools
Multiple tools have overlapping purposes that could cause confusion. 'find_patterns' and 'search_patterns' both appear to search for patterns, with descriptions that are nearly identical ('semantic search' vs 'keyword or semantic similarity'), making them difficult to distinguish. 'count_patterns' and 'get_pattern_details' are clearer, but the overlap between the two search tools significantly reduces disambiguation.
All tool names follow a consistent verb_noun pattern with snake_case, such as 'count_patterns', 'find_patterns', 'get_pattern_details', and 'search_patterns'. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions.
With only 4 tools, the set feels thin for a server focused on design patterns, which typically involve operations like creating, updating, or categorizing patterns. While basic retrieval functions are covered, the low count may limit functionality for more complex agent tasks, placing it in the borderline range for appropriateness.
The tool set is severely incomplete for a design patterns domain, as it only supports read operations (counting, searching, and getting details) with no ability to create, update, delete, or manage patterns. This lack of CRUD coverage creates significant gaps that will likely cause agent failures when trying to perform full lifecycle tasks.
Maintenance
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
295k+ bug-fix patterns with MCP Hub proxy, PII filtering, and code search
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across projects using AI embeddings to find code by meaning rather than just text matching. Provides fast intelligent search, symbol analysis, and code similarity detection with multi-language support.MIT
- AlicenseAqualityDmaintenanceProvides code repository indexing and semantic search capabilities, allowing natural language queries to find relevant code snippets with automatic incremental indexing and multi-language support.114 npm359ISC
- AlicenseAqualityDmaintenanceProvides design pattern templates and anti-pattern guidance to AI coding agents for correct pattern implementation.21MIT
- AlicenseNot gradedqualityCmaintenanceExposes the 23 Gang of Four design patterns to AI coding agents for generation, canonical examples, AST-based detection, validation, and anti-pattern refactoring in Python codebases.1MIT