Cortex
Cortex: каталог сервисов, владение и скоркарды инженерных стандартов
Что умеет
- Искать и фильтровать сущности каталога
- Смотреть зависимости и связи между сервисами
- Читать деплои, дежурства и кастомные метрики сервиса
- Просматривать инициативы и скоркарды команд
- Запрашивать метрики за период
Какие данные видит
Ассистент читает данные каталога Cortex в пределах организации, к которой подключён сервер.
Нужен ли аккаунт
Не нужен: сервер работает без входа
Cortex — внутренний портал для разработчиков, который каталогизирует сервисы, отслеживает владение и оценивает команды по скоркартам. MCP-сервер даёт ассистенту доступ к каталогу сущностей, зависимостям, деплоям и метрикам.
Как подключить
Как подключить Cortex к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://cortex.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить Cortex к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://cortex.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить Cortex к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://cortex.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (30)
Технические названия из tools/list. Нужны только разработчикам.
| listAllEntities | List and filter catalog entities with support for pagination, search, and various filters including groups, types, owners, and git repositories. If the client is trying to fetch data for teams, use 'type': 'team' in these APIs. |
| listEntityDescriptors | Cortex Catalog API - Access and manage your service catalog, teams, domains, and resources |
| listDependenciesForEntity | List all dependencies for an entity including both incoming (who depends on this service) and outgoing (what this service depends on) relationships. Essential for understanding service interactions, planning changes, and assessing blast radius |
| getDependency | Get specific dependency details between two entities including method, path, and metadata. Useful for understanding the nature of the relationship, API contracts, and communication patterns between services |
| getEntityDetails | Retrieve comprehensive details about a specific entity including its metadata, ownership, hierarchies, and relationships. This is the primary method for getting complete information about services, teams, or domains. |
| getCustomDataForEntity | List all custom data key-value pairs associated with an entity. Retrieve metadata, configuration settings, and custom attributes stored for services, resources, or domains. Supports pagination for entities with large amounts of custom data |
| getCustomDataForEntityByKey | Retrieve a specific custom data value by key for an entity. Efficiently access individual metadata attributes, configuration values, or custom properties without fetching all custom data |
| listCustomEventsForEntity | List custom events for an entity with optional filtering by type and time range. Supports pagination and filtering by event type, start time, and end time to retrieve historical event data |
| getCustomEventForEntityByUuid | Retrieve a specific custom event by its UUID. Returns event details including title, description, timestamp, type, and any custom data associated with the event |
| getDeploysForEntity | List all deployments for a specific catalog entity. Returns deployment history including timestamps, environments, SHAs, and deployment types in paginated format |
| getCurrentOncallForEntity | Retrieve the current on-call personnel for an entity in real-time. Shows who is actively responsible for incident response, including primary and secondary on-call, contact information, and rotation schedules |
| getEntityDescriptor | Cortex Catalog API - Access and manage your service catalog, teams, domains, and resources |
| listEntityDestinationsForRelationshipType | List all destinations for a certain relationship type & entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag. |
| listEntitySourcesForRelationshipType | List all sources for a certain relationship type & entity. Use the listRelationshipTypes tool to find the relevant relationshipTypeTag. |
| getCustomMetricData | Retrieve custom metric data points for an entity. Returns paginated time-series data for a specific custom metric, with optional filtering by date range to analyze trends and patterns |
| queryPointInTimeMetrics | Execute point-in-time queries for one or more engineering metrics. Returns current metric values for specified time periods, with support for batch queries and optional period-over-period comparisons. Time range (startTime/endTime) cannot exceed 6 months (180 days). PREREQUISITES - Follow this workflow: 1. Discover all available metrics ONCE: Call listMetricDefinitions (view='basic') - cache this response 2. Get metric query metadata ONCE per metric: Call listMetricDefinitions (view='full', key=METRIC_KEY) - supportedAggregations: Valid aggregation methods - orderByAttribute: Attribute path for sorting by metric values - groupByOptions[].key: Valid groupBy keys (use exact values, do NOT guess) - filterOptions[].key: Valid filter keys (use exact values, do NOT guess) Cache the full view response for each metric. Reuse the metadata from cached responses for subsequent queries on the same metric. 3. Construct query: Use the query metadata from the full view responses in step 2 to build valid point-in-time requests IMPORTANT: Cache only results from listMetricDefinitions. Do NOT cache point-in-time query results - always execute fresh queries for current data. Only refresh cached listMetricDefinitions responses if no longer in your context window or explicitly requested. Do NOT guess attribute names - always use exact values from listMetricDefinitions responses. Response includes: - Lightweight metadata: Column definitions optimized for programmatic use - Row data: Actual metric values and dimensional data - No heavy schemas: Source definitions excluded (get from listMetricDefinitions instead) Error responses: - 400: Invalid metric names, date range, validation errors, or unsupported metric combinations - 403: Feature not enabled (contact help@cortex.io) |
| listMetricDefinitions | List all available engineering metric definitions. USAGE - Call this endpoint BEFORE querying metrics (queryPointInTimeMetrics): 1. Once at start: Call with view='basic' to discover all available metrics - cache this response 2. Once per metric: Call with view='full' and key=METRIC_KEY to get detailed metadata - cache each response 3. Use cached metadata to construct valid point-in-time queries Cache responses in your context. Only refresh if no longer in your context window or explicitly requested (ex to check if metric readiness has changed). Query parameters: - view: 'basic' (default) returns minimal info, 'full' includes sources and query metadata - key: Filter metrics by key (supports multiple values and comma-separated lists) Full view provides query construction metadata: - supportedAggregations: Valid aggregation methods for the metric - orderByAttribute: Attribute path for sorting by metric values - groupByOptions[].key: Valid groupBy keys (use exact values, do NOT guess) - filterOptions[].key: Valid filter keys (use exact values, do NOT guess) Valid orderBy attributes for metric queries: - orderByAttribute: The metric value itself (returned in full view) - Source attributes: Any attribute from the metric's source (e.g., "source_name.attribute_name") - Dimension attributes: Any attribute from related dimensions (e.g., "source_name.dimension_name.attribute_name") Filter operators by type (for constructing queries): - STRING: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, LIKE, NOT_LIKE, IN, NOT_IN, ANY - INTEGER/DECIMAL/DOUBLE: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, IN, NOT_IN, BETWEEN, ANY - DATETIME/DATE: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, GREATER_THAN, LESS_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL, BETWEEN - BOOLEAN: EQUAL, NOT_EQUAL, IS_NULL, IS_NOT_NULL, IN, NOT_IN - ARRAY: EQUAL, CONTAINS, IN Error responses: - 400: Invalid view parameter (must be 'basic' or 'full') - 403: Restricted Feature (contact help@cortex.io) |
| listInitiatives | List all initiatives in the organization with optional filters for draft and expired initiatives. View active improvement programs, strategic projects, and their current status to understand organizational priorities and track progress |
| getInitiative | Retrieve detailed information about a specific initiative including its goals, timeline, affected entities, scorecard targets, and current progress. Essential for understanding initiative scope and tracking achievement of objectives |
| getMyWorkspace | TOOL for retrieving current user's owned resources and work items across the Cortex workspace. FLEXIBLE REQUEST STRUCTURE: The request accepts an object with optional fields for each resource type: - myEntitiesRequest: Fetch entities (services, resources, domains) owned by the user - myTeamsRequest: Fetch teams the user belongs to - myScorecardsRequest: Fetch scorecards associated with user's entities - myOpenPRsRequest: Fetch user's open pull requests across all Git repositories - myRequestedReviewsRequest: Fetch PRs where user is requested as a reviewer - myWorkItemsRequest: Fetch work items (Jira, Linear, Azure DevOps) assigned to the user Set one or more fields to fetch multiple resource types in a single call. All results are combined into a single response array with mixed item types. RESPONSE STRUCTURE: Returns a single array of items where each item has an 'itemType' field indicating its type: - 'entity': Catalog entities (services, resources, domains) - 'team': Teams the user belongs to - 'scorecard': Scorecards for user's entities - 'pull_request': Open pull requests authored by the user - 'review_request': Pull requests where user is requested as reviewer - 'work_item': Work items (issues/tickets) assigned to the user EXAMPLES: 1. Fetch only services: {"myEntitiesRequest": {"entityTypes": ["service"]}} 2. Fetch teams and their entities: {"myTeamsRequest": {"includeMembers": true}, "myEntitiesRequest": {}} 3. Get all work (PRs, reviews, Jira tickets): {"myOpenPRsRequest": {}, "myRequestedReviewsRequest": {}, "myWorkItemsRequest": {}} 4. Search entities with filters: {"myEntitiesRequest": {"query": "payment", "ownershipSource": "DIRECT", "entityTypes": ["service", "resource"]}} |
| listRelationshipTypes | List all available relationship types with pagination. View relationship type configurations to understand what kinds of relationships can be created between entities like services, resources, domains, and teams |
| getRelationshipTypeDetails | Get complete details of a specific relationship type including its configuration, rules, source/destination filters, and inheritance settings. Essential for understanding how entities can be connected and what validation rules apply |
| listEntityRelationships | List all entity relationships/full graph for a specific relationship type across the entire organization. Returns paginated results showing all source-destination pairs, useful for understanding the complete relationship graph and finding all connections of a particular type |
| listScorecards | List all scorecards in the organization with optional filtering. View scorecard configurations to understand quality standards, compliance requirements, and maturity models. Supports filtering by groups, entities, and teams to find relevant scorecards |
| getScorecard | Get complete details of a scorecard including its configuration, rules, levels, weights, exemption settings, and evaluation criteria. Essential for understanding how services are evaluated and what standards they must meet |
| getScorecardNextStepsForEntity | Get actionable next steps for an entity to improve its scorecard performance. Shows which rules need to be satisfied to reach the next maturity level, helping teams prioritize improvements and track progress toward compliance goals |
| listScorecardScores | Retrieve scores for all entities evaluated by a specific scorecard. Returns paginated results showing how each service, resource, or domain performs against the scorecard's rules, including individual rule scores and overall scorecard scores |
| getTeamDetails | Retrieve detailed information about a specific team by its tag or ID. Returns complete team data including members, slack channels, metadata, and whether it's backed by an identity provider group |
| query_docs | Query the Cortex knowledge base for answers. Args: query: The question to ask Cortex docs Returns: Response from Cortex including answer and metadata |
| get_more_tools | Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback. |