/ Каталог / Песочница / concierge
● Сообщество concierge-hq ⚡ Сразу

concierge

автор concierge-hq · concierge-hq/concierge

Python SDK for building MCP servers where tools appear only when relevant — progressive disclosure, workflow state, and semantic tool search for 100+ tool APIs.

Concierge is not an end-user MCP; it's a framework for writing MCP servers that don't overwhelm the LLM. Define workflows with ordered steps, each step exposing only the tools it needs. Share state across steps. Semantic search over your tool catalog when you have too many to list.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

concierge.replay ▶ готово
0/0

Установка

Выберите клиент

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "concierge": {
      "command": "uvx",
      "args": [
        "concierge"
      ],
      "_inferred": true
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "concierge": {
      "command": "uvx",
      "args": [
        "concierge"
      ],
      "_inferred": true
    }
  }
}

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "concierge": {
      "command": "uvx",
      "args": [
        "concierge"
      ],
      "_inferred": true
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "concierge": {
      "command": "uvx",
      "args": [
        "concierge"
      ],
      "_inferred": true
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "concierge",
      "command": "uvx",
      "args": [
        "concierge"
      ]
    }
  ]
}

Continue использует массив объектов серверов, а не map.

~/.config/zed/settings.json
{
  "context_servers": {
    "concierge": {
      "command": {
        "path": "uvx",
        "args": [
          "concierge"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add concierge -- uvx concierge

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: concierge

Wrap a giant REST API (200+ endpoints) as an MCP without blowing the context

👤 Platform engineers exposing internal APIs to LLMs ⏱ ~90 min advanced

Когда использовать: Your company's API has 300 endpoints and a naive MCP dumps all of them into the system prompt, wrecking latency and hit rate.

Предварительные требования
  • Python 3.9+ — pyenv / uv
  • OpenAPI spec or endpoint catalog — Your API gateway / Swagger
Поток
  1. Scaffold with concierge-sdk
    Using concierge-sdk, scaffold an MCP server that wraps my OpenAPI spec at ./openapi.yaml. Make it use semantic search rather than listing all tools up front.✓ Скопировано
    → Boilerplate code + search handler
  2. Define workflow stages
    Group the endpoints into 3 workflows: 'read operations', 'create operations', 'admin'. Each workflow exposes only its own tools.✓ Скопировано
    → Workflow definitions with tool allowlists
  3. Test with Claude
    Connect Claude Desktop to this server and verify that listing tools only shows the search tool + current workflow tools — not all 300.✓ Скопировано
    → Claude sees ~10 tools, not 300

Итог: A large API surface usable by an LLM without collapsing on system prompt length.

Подводные камни
  • Semantic search returns the wrong tool when descriptions are too similar — Write distinctive one-line tool descriptions; test search with held-out queries

Build a guided multi-step workflow (e.g. customer onboarding)

👤 Devs building structured agent flows ⏱ ~60 min advanced

Когда использовать: You want the LLM to follow a defined sequence: collect info → validate → create record → notify. Each step has its own tools.

Поток
  1. Declare the workflow
    Define a concierge workflow 'customer_onboarding' with steps [collect, validate, create, notify], each with its own tool set.✓ Скопировано
    → Workflow config
  2. Share state
    Pass the customer_data dict from step 1 into steps 2, 3, 4 via shared state. Show me how.✓ Скопировано
    → State-object code
  3. Handle failure
    If validate fails, return to step 1 with the specific fix needed.✓ Скопировано
    → Retry/backtrack logic

Итог: A robust guided flow that keeps the LLM on-rails.

Подводные камни
  • LLM tries to skip steps — Concierge enforces order at the tool-visibility level — skipping is physically impossible if you wired it right

Ship your first MCP server in 15 minutes

👤 Developers new to MCP ⏱ ~15 min beginner

Когда использовать: You want to expose 3-5 functions to Claude and don't want to learn the raw MCP spec.

Поток
  1. Install and scaffold
    pip install concierge-sdk. Generate a minimal server exposing two tools: add(a, b) and greet(name). Stdio transport.✓ Скопировано
    → Working Python file
  2. Run and connect
    Add to Claude Desktop config and test that both tools are callable.✓ Скопировано
    → Tool calls succeed in Claude

Итог: A working MCP server you wrote end-to-end in an afternoon.

Подводные камни
  • Missing type hints — SDK relies on them for tool schema — Always type your args and return — concierge generates the MCP schema from them

Комбинации

Сочетайте с другими MCP — эффект x10

concierge + gateway

Serve concierge-built MCP behind a security gateway for PII redaction

Start concierge server on :8001, then add it as an upstream to mcp-gateway with Presidio plugin.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
concierge.workflow(name) name, steps, initial_state Define a named multi-step flow framework only
concierge.tool(workflow, step) step allowlist Attach a function as a tool scoped to one or more steps framework only
concierge.search_tools query: str Auto-exposed when you have too many tools to list eagerly free
concierge.serve() transport: 'stdio'|'http'|'sse' Entry point of your script free

Стоимость и лимиты

Во что обходится

Квота API
None — you're the author
Токенов на вызов
Depends on your tool design; progressive disclosure shrinks system prompts 5-10x
Деньги
Free and open source
Совет
Don't eagerly expose every tool. Start with 'search' + current-step tools. Add eager tools only if profiling shows the LLM always needs them.

Безопасность

Права, секреты, радиус поражения

Хранение учётных данных: Your MCP server handles its own credentials — concierge doesn't impose a model
Исходящий трафик: Whatever your tools call

Устранение неполадок

Частые ошибки и исправления

Tools not appearing in the expected step

Check the step arg on @concierge.tool. A tool with step=['create'] is invisible during collect.

Проверить: Call the search_tools tool; if nothing returns, your allowlist is wrong
Semantic search returns no results

Tool descriptions may be empty. Concierge builds embeddings from docstrings — fill them in.

Workflow state lost between calls

Concierge state is session-scoped. Ensure your client is sticky (same MCP session across calls).

Альтернативы

concierge в сравнении

АльтернативаКогда использоватьКомпромисс
fastmcp (Python)You want the most popular Python MCP SDK without progressive disclosureLighter, but no built-in workflow/tool-gating features
Official MCP Python SDKYou want zero framework, closest to the specMore boilerplate; you build gating yourself
TypeScript MCP SDKYour stack is TS/NodeDifferent language; no direct concierge equivalent

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills