Skip to main content
Glama
huseyindol

User Info MCP Server

by huseyindol

User Info MCP Server

🚀 Gelişmiş Model Context Protocol (MCP) Server - Context7 Best Practices ile geliştirilmiş kullanıcı yönetim sistemi.

Bu proje, modern layered architecture pattern kullanarak kullanıcı bilgilerini JSON dosyasından sağlayan profesyonel bir MCP server'dır. Context7 MCP best practices ve clean architecture prensipleri uygulanarak geliştirilmiştir.

🏗️ Proje Mimarisi

McpProjectScaffold/
├── src/
│   ├── server.ts                   # 🎯 Ana MCP server (Entry Point)
│   ├── controllers/
│   │   └── user.controller.ts      # 🎮 Tool handlers (MCP Interface Layer)
│   ├── services/
│   │   └── user.service.ts         # 🧠 Business logic & validation
│   ├── repositories/
│   │   └── user.repository.ts      # 💾 Data access layer (JSON operations)
│   ├── tools/
│   │   ├── index.ts               # 🔧 Tool registration orchestrator
│   │   └── user-tools.ts          # 📋 MCP tool definitions
│   └── types/
│       └── user.ts                # 📝 TypeScript interfaces & Zod schemas
├── data/
│   └── users.json                 # 💿 JSON veri dosyası
├── package.json                   # 📦 Proje bağımlılıkları
├── tsconfig.json                  # ⚙️ TypeScript konfigürasyonu
└── README.md                      # 📖 Bu dosya

🎨 Architecture Pattern: Layered Architecture (Context7 Pattern)

Separation of Concerns prensipleri:

  • Controllers → MCP tool handlers & response formatting

  • Services → Business logic, validation & error handling

  • Repositories → Pure data access (JSON file operations)

  • Tools → MCP tool registration & schema definitions

  • Types → TypeScript interfaces & Zod validation schemas

Related MCP server: Enterprise Data MCP Server

✨ Özellikler

MCP server 6 gelişmiş tool sağlar:

  1. get_all_users → Tüm kullanıcıların listesini getirir

  2. get_user_by_id → ID'ye göre belirli kullanıcıyı getirir

  3. search_users_by_name → İsme göre kullanıcı arar (partial match)

  4. search_users_by_email → E-posta adresine göre kullanıcı arar

  5. search_users_by_phone → Telefon numarasına göre kullanıcı arar

  6. add_user → Yeni kullanıcı ekler (validation + duplicate control)

🔍 User Veri Yapısı

interface User {
  id: number;        // Benzersiz kullanıcı kimliği (auto-increment)
  name: string;      // Kullanıcının tam adı (2-100 karakter)
  email: string;     // E-posta adresi (unique, email format)
  phone: string;     // Telefon numarası (10-20 karakter)
}

📦 Kurulum & Setup

1. Bağımlılıkları Yükleyin

npm install

2. TypeScript Build

npm run server:build

3. Development Mode

npm run server:dev

4. MCP Inspector ile Test

npm run server:inspect

🛠️ Teknoloji Stack

Core Technologies

  • Node.js (v18+) → JavaScript runtime

  • TypeScript (v5.8+) → Type-safe development

  • ES Modules → Modern module system

  • MCP TypeScript SDK → Protocol implementation

Development & Quality Tools

  • Zod (v3.25+) → Runtime schema validation

  • tsx → TypeScript execution

  • MCP Inspector → Interactive tool testing

  • Strict TypeScript → Maximum type safety

Architecture Patterns

  • Context7 MCP Best Practices → Industry standards

  • Layered Architecture → Clean separation of concerns

  • Repository Pattern → Data access abstraction

  • Service Layer Pattern → Business logic encapsulation

🚀 Kullanım

Development Scripts

# Development mode (hot reload)
npm run server:dev

# TypeScript build
npm run server:build

# Watch mode build
npm run server:build:watch

# MCP Inspector (interactive testing)
npm run server:inspect

MCP Inspector Kullanımı

npm run server:inspect

Bu komut MCP Inspector web arayüzünü açar ve tool'ları interaktif olarak test etmenizi sağlar. Tarayıcıda http://localhost:3000 adresinde açılır.

🔧 MCP Tool Kullanım Örnekleri

1. Tüm Kullanıcıları Getir

{
  "method": "tools/call",
  "params": {
    "name": "get_all_users",
    "arguments": {}
  }
}

2. ID'ye Göre Kullanıcı Getir

{
  "method": "tools/call",
  "params": {
    "name": "get_user_by_id",
    "arguments": {
      "id": 1
    }
  }
}

3. İsme Göre Kullanıcı Ara

{
  "method": "tools/call",
  "params": {
    "name": "search_users_by_name",
    "arguments": {
      "name": "Ahmet"
    }
  }
}

4. E-posta ile Kullanıcı Ara

{
  "method": "tools/call",
  "params": {
    "name": "search_users_by_email",
    "arguments": {
      "email": "ahmet.yilmaz@example.com"
    }
  }
}

5. Telefon ile Kullanıcı Ara

{
  "method": "tools/call",
  "params": {
    "name": "search_users_by_phone",
    "arguments": {
      "phone": "+90 532 123 4567"
    }
  }
}

6. Yeni Kullanıcı Ekle

{
  "method": "tools/call",
  "params": {
    "name": "add_user",
    "arguments": {
      "name": "Zeynep Kılıç",
      "email": "zeynep.kilic@example.com",
      "phone": "+90 537 555 1234"
    }
  }
}

📁 Veri Dosyası Düzenleme

data/users.json dosyasını düzenleyerek kullanıcı verilerini manuel olarak değiştirebilirsiniz:

[
  {
    "id": 1,
    "name": "Ahmet Yılmaz",
    "email": "ahmet.yilmaz@example.com",
    "phone": "+90 532 123 4567"
  },
  {
    "id": 2,
    "name": "Ayşe Demir", 
    "email": "ayse.demir@example.com",
    "phone": "+90 533 987 6543"
  }
]

⚠️ Not: JSON formatını bozmamaya dikkat edin. Yeni kullanıcılar için add_user tool'unu kullanmak daha güvenlidir.

🔗 MCP Client Konfigürasyonu

Bu MCP server'ı çeşitli IDE'ler ve AI araçlarında kullanabilirsiniz:

Cursor IDE

{
  "mcpServers": {
    "user-info-server": {
      "command": "node",
      "args": ["dist/server.js"],
      "cwd": "/path/to/McpProjectScaffold"
    }
  }
}

Claude Desktop

{
  "mcpServers": {
    "user-info-server": {
      "command": "npm",
      "args": ["run", "server:dev"],
      "cwd": "/path/to/McpProjectScaffold"
    }
  }
}

VS Code (MCP Extension)

{
  "mcp": {
    "servers": {
      "user-info-server": {
        "type": "stdio",
        "command": "npm",
        "args": ["run", "server:dev"],
        "cwd": "/path/to/McpProjectScaffold"
      }
    }
  }
}

🔒 Güvenlik & Validasyon

Zod ile Type-Safe Validasyon

  • Schema-based validasyon → Tüm input'lar Zod schema'ları ile doğrulanır

  • Runtime type checking → TypeScript + Zod ile çifte güvenlik

  • Otomatik validasyon mesajları → Zod'un built-in error handling

  • E-posta format kontrolüz.string().email() ile format doğrulama

  • String uzunluk kontrolüz.string().min(2).max(100) ile range validation

  • Sayı validasyonuz.number().int().positive() ile integer kontrolü

  • Duplicate e-posta kontrolü → Repository layer'da unique email kontrolü

  • Required field validasyonu → Zod schema ile zorunlu alan kontrolü

Zod Schema Örnekleri

// User entity schema
export const UserSchema = z.object({
  id: z.number().int().positive().describe("Benzersiz kullanıcı kimliği"),
  name: z.string().min(2).max(100).describe("Kullanıcının tam adı"),
  email: z.string().email().describe("E-posta adresi"),
  phone: z.string().min(10).max(20).describe("Telefon numarası")
});

// Add user input schema
export const AddUserInputSchema = {
  name: z.string().min(2).max(100).describe("Kullanıcının tam adı"),
  email: z.string().email().describe("E-posta adresi"),
  phone: z.string().min(10).max(20).describe("Telefon numarası")
};

🏗️ Geliştirme Notları

Context7 MCP Best Practices ✅

  • Modular architecture → Layered separation of concerns

  • Tool registration → Clean tool definition & registration

  • Error handling → Comprehensive error management

  • Type safety → Full TypeScript + Zod validation

  • Input schemas → Context7 compatible schema definitions

  • Clean responses → Standardized MCP response format

Technical Features

  • ES Modules → Modern JavaScript module system

  • Strict TypeScript → Maximum type safety

  • Auto-increment IDs → Automatic ID generation

  • Duplicate prevention → Email uniqueness checks

  • Business validation → Service layer business rules

  • Repository pattern → Data access abstraction

  • CRUD operations → Full Create, Read, Update capabilities

Code Quality

  • Separation of concerns → Each layer has single responsibility

  • Error boundaries → Proper error catching & handling

  • Validation layers → Multiple validation levels

  • Clean code → Readable, maintainable codebase

  • Type inference → Zod to TypeScript type generation

📚 MCP Protocol Hakkında

Model Context Protocol (MCP), AI asistanlarına structured veri ve tool sağlamak için tasarlanmış modern bir protokoldür.

MCP'nin Avantajları:

  • Standardized communication → AI araçları arası standart iletişim

  • Tool-based architecture → Modular fonksiyonellik

  • Real-time data access → Canlı veri erişimi

  • Type-safe operations → Güvenli operasyonlar

  • Cross-platform compatibility → Platform bağımsızlık

Bu proje, Context7 MCP best practices kullanarak profesyonel MCP server geliştirme konusunda pratik yapmak için tasarlanmıştır.


🤝 Katkıda Bulunma

  1. Fork yapın

  2. Feature branch oluşturun (git checkout -b feature/AmazingFeature)

  3. Değişikliklerinizi commit edin (git commit -m 'Add some AmazingFeature')

  4. Branch'e push yapın (git push origin feature/AmazingFeature)

  5. Pull Request açın

📝 Lisans

Bu proje MIT lisansı altında lisanslanmıştır.


🚀 Happy Coding! - Context7 MCP Best Practices ile geliştirilmiştir.

Available Tools

6 tools
add_userKullanıcı EkleC

Yeni kullanıcı ekle

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesKullanıcının tam adı
emailYesE-posta adresi
phoneYesTelefon numarası

TDQS

C2.9/5.0
Behavior2/5

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. 'Yeni kullanıcı ekle' implies a mutation (creation) but doesn't disclose critical traits: whether it requires specific permissions, what happens on duplicate email/phone, if the operation is idempotent, rate limits, or what the response contains (e.g., user ID). For a write tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient phrase ('Yeni kullanıcı ekle') that is front-loaded and wastes no words. Every part earns its place by conveying the core action and resource without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a write operation with 3 required parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, error handling, or return values, leaving the agent with insufficient context to use the tool effectively beyond basic parameter passing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (name, email, phone) well-documented in the schema (e.g., 'Kullanıcının tam adı' for name). The description adds no parameter information beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Yeni kullanıcı ekle' (Add new user) clearly states the verb 'ekle' (add) and resource 'kullanıcı' (user), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings (like get_all_users, search_users_by_email, etc.), which are all read operations while this is a write operation. The distinction is implied but not explicitly stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention prerequisites (e.g., admin permissions), when not to use it (e.g., for updating existing users), or refer to sibling tools like get_user_by_id for checking existing users before adding. The agent must infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_usersTüm Kullanıcıları GetirB

Tüm kullanıcıların listesini getir

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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. While it indicates a read operation ('getir'), it doesn't specify whether this requires authentication, what format the list returns in (e.g., paginated or complete), or any rate limits. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Turkish that directly states the tool's function without any unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no output schema), the description is minimally adequate but lacks details on behavioral aspects like authentication needs or return format. Without annotations or an output schema, the description should ideally provide more context about what 'list' entails, but it meets basic requirements for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the schema already fully documents that no parameters are required. The description doesn't need to add parameter details, and it correctly implies no filtering parameters are needed. Baseline is 4 for tools with 0 parameters, as the description adequately matches the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Tüm kullanıcıların listesini getir' clearly states the tool's purpose as retrieving a list of all users, which is a specific verb+resource combination. However, it doesn't explicitly distinguish this from its sibling tools like search_users_by_email or get_user_by_id, which would require mentioning that this tool returns all users without filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention that this is for retrieving all users without filtering, as opposed to using sibling tools like search_users_by_email for filtered searches or get_user_by_id for single-user retrieval. No explicit when/when-not instructions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_by_idKullanıcı GetirC

ID'ye göre belirli bir kullanıcıyı getir

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesKullanıcının ID'si

TDQS

C2.9/5.0
Behavior2/5

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 only states the basic action ('getir' - get/retrieve), implying a read-only operation, but doesn't disclose any behavioral traits like error handling (e.g., what happens if the ID doesn't exist), authentication requirements, rate limits, or response format. For a tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence: 'ID'ye göre belirli bir kullanıcıyı getir' (Get a specific user by ID). It's front-loaded with the core purpose, with zero wasted words or redundancy. Every word earns its place by specifying the action and key constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, 100% schema coverage) but lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like error cases or response format, which are crucial for an AI agent to use it correctly. For a read operation with no structured output information, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'ID'ye göre' (by ID), which aligns with the single parameter 'id' in the schema. Schema description coverage is 100%, with the schema already documenting the parameter as 'Kullanıcının ID'si' (user's ID) with type integer and exclusiveMinimum: 0. The description adds no additional meaning beyond what the schema provides, so 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'get a specific user by ID' (ID'ye göre belirli bir kullanıcıyı getir). It specifies the verb ('getir' - get/retrieve) and resource ('kullanıcı' - user), distinguishing it from siblings like get_all_users (which retrieves all users) or search tools. However, it doesn't explicitly differentiate from other search tools that might also retrieve users by ID indirectly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention sibling tools like get_all_users (for listing all users) or search_users_by_email/name/phone (for searching by other criteria). There's no context about prerequisites, such as needing a valid user ID, or when this tool is preferred over search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_users_by_emailKullanıcı AraC

E-posta adresine göre kullanıcı ara

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesAranacak kullanıcı e-posta adresi

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the search action without mentioning whether this is a read-only operation, what permissions might be required, what happens with multiple matches, or the format of results. For a search tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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 any unnecessary words. It's appropriately sized and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 address behavioral aspects like search behavior (exact match vs partial), result format, or error handling, which are important for a search tool with no structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the email parameter clearly documented. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 users by email address ('E-posta adresine göre kullanıcı ara'), which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like search_users_by_name or search_users_by_phone, though the email focus is implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention sibling tools like search_users_by_name or get_user_by_id, nor does it specify scenarios where email-based search is preferred over other methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_users_by_nameKullanıcı AraC

İsme göre kullanıcı ara

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAranacak kullanıcı ismi

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the basic action (search by name) without disclosing behavioral traits like whether it's read-only, what permissions are needed, how results are returned (list, single user), pagination, error handling, or performance characteristics. This is inadequate for a search tool with zero 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Turkish that directly states the tool's purpose. It's appropriately sized and front-loaded with no wasted words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain what the tool returns, how to interpret results, or differentiate it from similar search tools. For a search operation in a user management context, more guidance is needed to help the agent use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'name' documented as 'Aranacak kullanıcı ismi' (User name to search). The description adds no additional meaning beyond what the schema provides, such as format examples or search semantics. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'İsme göre kullanıcı ara' (Search users by name) states a clear verb ('ara' - search) and resource ('kullanıcı' - users), but it's vague about scope and doesn't distinguish from sibling tools like search_users_by_email or search_users_by_phone. It only specifies the search criteria (by name) without indicating what kind of search (exact match, partial, etc.) or what results to expect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 search_users_by_email, get_user_by_id, or get_all_users. There's no mention of prerequisites, limitations, or typical use cases. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_users_by_phoneKullanıcı AraC

Telefon numarasına göre kullanıcı ara

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYesAranacak Telefon numarası

TDQS

C2.9/5.0
Behavior2/5

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 only states the search action without mentioning what the search returns (e.g., partial matches, exact matches, error handling), whether it's read-only or has side effects, or any rate limits or permissions required. For a search tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Turkish that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, with every word contributing to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 the search returns (e.g., user objects, IDs, or error messages), how results are structured, or any limitations. For a search tool with no structured output documentation, the description should provide more context about the expected behavior and results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description implies a 'phone' parameter but doesn't add meaning beyond what the input schema provides. The schema has 100% description coverage with a clear parameter description ('Aranacak Telefon numarası'), so the baseline is 3. The tool description doesn't elaborate on format expectations or search behavior beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Telefon numarasına göre kullanıcı ara' clearly states the tool's purpose: searching for users by phone number. It specifies both the verb ('ara' - search) and the resource ('kullanıcı' - users), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_users_by_email' or 'search_users_by_name', which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It doesn't mention sibling tools like 'search_users_by_email' or 'search_users_by_name' for different search criteria, nor does it indicate any prerequisites or exclusions. The user must infer usage from the tool name 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. Dates show when Glama detected each change.

  1. 1 tool updatev1.0.0
    • Changedget_all_users1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 6 tool updates
    • First observedadd_user
    • First observedget_all_users
    • First observedget_user_by_id
    • First observedsearch_users_by_email
    • First observedsearch_users_by_name
    • First observedsearch_users_by_phone

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: add_user creates a new user, get_all_users retrieves all users, get_user_by_id fetches a specific user by ID, and the three search tools each target different attributes (email, name, phone). There is no overlap or ambiguity in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case (e.g., add_user, get_all_users, search_users_by_email). The naming is predictable and readable throughout the set.

Tool Count5/5

With 6 tools, this server is well-scoped for user information management. The count is appropriate, covering core operations (create, retrieve, search) without being excessive or insufficient for the domain.

Completeness4/5

The tool set covers key user operations: creation (add_user), retrieval (get_all_users, get_user_by_id), and search (by email, name, phone). Minor gaps exist, such as missing update and delete operations, which agents might need to work around, but core workflows are largely supported.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides tools to query and interact with MongoDB user collections, supporting filtering, sorting, and retrieval operations.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server providing natural-language tools for managing and querying an employee database, including user CRUD, search, and statistics.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A user management MCP server that enables CRUD operations on users stored in a JSON file, with random user generation using Faker.
    28
    1
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/huseyindol/McpProjectScaffold'

If you have feedback or need assistance with the MCP directory API, please join our Discord server