xmp4 — Semantic code knowledge for your stack

OSS libs in your stack, really used: source, tests, callers. C#, Java, TS, Python, Rust, PHP+.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
88%
Integridad del esquema
91%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • LOWTool 'xmp4_source' description lacks action verben xmp4_source
  • LOWTool 'xmp4_symbol_at' description lacks action verben xmp4_symbol_at

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,703Tokens (definiciones de herramientas)
~3.0 KBTamaño de respuesta típico
Impacto significativo en la atención (3.67% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "xmp4": {
      "url": "https://mcp.example4.ai/mcp"
    }
  }
}

Puntos de conexión remotos

https://mcp.example4.ai/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (16)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢xmp4_callees(docs, file_path, output_format, page, page_size, ...)

Find direct callees (methods called by) a symbol in a project. Navigate step-by-step by calling xmp4_callees again on interesting results.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_callers(docs, file_path, output_format, page, page_size, ...)

Find direct callers of a symbol in a project. Navigate step-by-step by calling xmp4_callers again on interesting results.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_deps(output_format, page, page_size, project)

List external dependencies of a project.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    }
  },
  "required": [
    "project"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "RepoParams"
}
🟢xmp4_grep(case_sensitive, file_glob, file_path, max_results, page, ...)

Server-side regex text search over indexed project source files. Free tier: requires file_path (single file). Premium tier (XMP4_PREMIUM_GREP_WALK=true): allows file_glob multi-file walk. Prefer xmp4_tests_for/xmp4_usages for SCIP symbols — grep is for text not indexed (comments, literals, config keys).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "case_sensitive": {
      "description": "If true, search is case-sensitive (default false)",
      "nullable": true,
      "type": "boolean"
    },
    "file_glob": {
      "description": "Optional file glob for multi-file walk (premium tier). Set XMP4_PREMIUM_GREP_WALK=true to enable.",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "Single-file grep target, repo-relative (e.g. 'src/foo.rs'). Required in free tier.",
      "nullable": true,
      "type": "string"
    },
    "max_results": {
      "default": null,
      "description": "Maximum number of hits to collect before pagination (default 50, max 1000)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "pattern": {
      "description": "Regex pattern (case-insensitive by default)",
      "type": "string"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    }
  },
  "required": [
    "project",
    "pattern"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "GrepParams"
}
🟢xmp4_guide

Usage guide for xmp4 tools — read this first to learn the correct workflow

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢xmp4_hierarchy(docs, file_path, output_format, page, page_size, ...)

Get type hierarchy (base, interfaces, derived) for a symbol in a project.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_info(docs, file_path, output_format, page, page_size, ...)

Get detailed information about a symbol in a project.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_outline(file_path, output_format, page, page_size, project)

Get outline (all symbols) for a file in a project.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "file_path": {
      "description": "File path",
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    }
  },
  "required": [
    "project",
    "file_path"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "OutlineParams"
}
🟢xmp4_projects(language, page, page_size, query, repo)

Search and browse projects by language and name. Use this first to discover projects, then use other tools with the repo name.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "language": {
      "description": "Filter by language (e.g., Python, TypeScript, CSharp)",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "query": {
      "description": "Search by project name (case-insensitive contains)",
      "nullable": true,
      "type": "string"
    },
    "repo": {
      "description": "Filter by repository name",
      "nullable": true,
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ProjectsParams"
}
🟢xmp4_search(kind, max_results, output_format, page, page_size, ...)

Search symbols in a project. Use xmp4_projects first to find the project identifier.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "kind": {
      "description": "Filter by kind: Class, Method, Function, etc.",
      "nullable": true,
      "type": "string"
    },
    "max_results": {
      "default": null,
      "description": "Maximum results to return (default: 50). Kept as per-page upper bound alongside page_size.",
      "format": "uint",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "query": {
      "description": "Search query (symbol name or pattern)",
      "type": "string"
    }
  },
  "required": [
    "project",
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SearchParams"
}
🟢xmp4_server

Get server information, version, and capabilities

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
🟢xmp4_source(docs, file_path, output_format, page, page_size, ...)

Extract source code for a symbol in a project.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_symbol_at(column, file_path, line, project)

LSP-style position→symbol lookup. Given (file_path, line, column) returns the symbol whose occurrence covers that cursor position. line is 1-based; column is 0-based. Use after xmp4_outline/xmp4_view when you know coordinates and want the canonical symbol.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "column": {
      "default": null,
      "description": "Column number (0-based, default 0 = beginning of line)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "file_path": {
      "description": "File path inside the project, relative to repo root",
      "type": "string"
    },
    "line": {
      "default": null,
      "description": "Line number (1-based)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    }
  },
  "required": [
    "project",
    "file_path"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolAtParams"
}
🟢xmp4_tests_for(docs, file_path, output_format, page, page_size, ...)

Find direct tests that exercise a given symbol (direct callers filtered to test-file candidates per language pattern: CSharp/Java/PHP: *Test(s).<ext>; Python: test_*.py / *_test.py; TypeScript/JavaScript: *.spec/test.{ts,js}; Rust: *_tests.rs / tests/; etc.).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_usages(docs, file_path, output_format, page, page_size, ...)

Find all usages/references of a symbol in a project.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "docs": {
      "description": "Include docs: none (default) | summary | full (xmp4_info only)",
      "nullable": true,
      "type": "string"
    },
    "file_path": {
      "description": "File path to disambiguate",
      "nullable": true,
      "type": "string"
    },
    "output_format": {
      "description": "Output format: Compact (default) or Verbose",
      "nullable": true,
      "type": "string"
    },
    "page": {
      "default": null,
      "description": "Page number (1-based, default 1; ignored by xmp4_info/xmp4_source)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "page_size": {
      "default": null,
      "description": "Results per page (default 20, max 100)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "symbol_name": {
      "description": "Symbol name",
      "type": "string"
    }
  },
  "required": [
    "project",
    "symbol_name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "SymbolParams"
}
🟢xmp4_view(file_path, from_line, project, to_line)

Read a raw file excerpt from an indexed project by line range. Use after xmp4_search/xmp4_outline locates the region of interest, or to expand a truncated xmp4_source snippet. Hard cap of 500 lines per call.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "file_path": {
      "description": "File path inside the project, relative to repo root",
      "type": "string"
    },
    "from_line": {
      "default": null,
      "description": "Starting line (1-based, default 1)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "project": {
      "description": "Project id: 'repo/project' or 'repo/project/language'. Case-insensitive prefix match. Append '/Python'|'/CSharp'|'/Java'|etc. only to disambiguate multi-language projects (e.g. 'django/Django/Python' vs 'django/Django/JavaScript'). 1 match → proceeds; N → warning lists candidates; 0 → do NOT iterate guesses, call xmp4_projects(query=...) once then retry.",
      "type": "string"
    },
    "to_line": {
      "default": null,
      "description": "Ending line (inclusive, default from_line+49, hard cap 500 lines per call)",
      "format": "uint32",
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    }
  },
  "required": [
    "project",
    "file_path"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "ViewParams"
}

Prompts recomendados

search_research
Search for information about [topic] using xmp4 — Semantic code knowledge for your stack
Herramientas esperadas: xmp4_search
find_specific
Find [specific item] using xmp4 — Semantic code knowledge for your stack
Herramientas esperadas: xmp4_search

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada16 herramientas
verificadoversión no registrada16 herramientas