Skip to main content
Glama

DiffContext

Показывай AI-ассистенту для кода только тот код, который важен для вносимого изменения.

Python 3.9+ CI License: MIT

DiffContext — это компилятор контекста для LLM-агентов, пишущих код. Передайте ему Python-репозиторий и изменение — git-диф, ветку или имя одной функции — и он вернёт небольшой набор функций, который модели действительно нужен, чтобы безопасно внести это изменение: вызывающий код, который сломается, подклассы, которые переопределяют функцию, тесты, которые её покрывают. Он подгоняет результат под ваш лимит токенов и сообщает модели, что пришлось отбросить.

Инструмент создан для тех, кто встраивает LLM в настоящие кодовые базы: циклы агентов, боты для ревью PR, CI-проверки — везде, где приходится решать, что отправлять в промпт, а репозиторий слишком велик, чтобы пересылать его целиком.

И он оценивает сам себя: укажите ему свой репозиторий — он проанализирует вашу git-историю, прогонит поиск на реальных парах со-изменений и напечатает NULL RESULT, когда инструмент не подходит; узнать, что он не подходит, и есть фича.

Проблема

Попросите ассистента изменить одну функцию в проекте из 50 000 строк — и у вас есть три плохих варианта: вставить весь репозиторий (он не помещается, а модели работают хуже в очень больших контекстах), вставить только эту функцию (модель сломает три вызывающих места, которые она не видела) или поискать имя через grep (grep не найдёт подкласс, который переопределяет функцию, или обработчик, который получает её через functools.partial — мы замерили, что полнота grep «выходит на плато», сколько бы бюджета вы ему ни дали).

DiffContext — это четвёртый вариант. Один раз разберите репозиторий в настоящий граф зависимостей, затем для любого изменения отберите те несколько функций, которые действительно важны, и упакуйте их в минимально достаточный промпт.

git change ──► changed functions ──► hybrid retrieval ──► token budget ──► LLM-ready context
                                      graph ∪ BM25 ∪ file      top-k + tokens

Related MCP server: Serena

Установка

pip install diffcontext

Ноль зависимостей времени выполнения, Python 3.9+.

Для интеграции через MCP (Claude Code / Cursor / Windsurf):

pip install "diffcontext[mcp]"

Описание конфигурации сервера: docs/MCP.md.

Из исходного кода для разработки:

git clone https://github.com/trakshan-mishra/Diffcontext.git
cd Diffcontext && pip install -e .

Быстрый старт

diffcontext index /path/to/project              # cold: seconds; warm: ~0.02s
diffcontext compile --ref HEAD~1 --max-tokens 8000
diffcontext verify --from-history 20 --calibrate

Больше команд: USAGE.md. Рецепты для продакшена: docs/USE_CASES.md.

Не доверяйте нашим бенчмаркам — прогоните свои (2 минуты)

diffcontext verify --from-history 20 --calibrate извлекает тестовые примеры из git-истории вашего репозитория и оценивает качество поиска на них — и печатает NULL RESULT вместо декоративной цифры, когда инструмент не подходит вашему репозиторию. Узнать, что он не подходит, и есть фича.

Становится ли модель лучше?

Да — измерено сквозным образом, а не по косвенным метрикам. На 128 задачах ContextBench на Python, проверенных собственными тестовыми наборами каждого репозитория (без LLM-судьи), контекст примерно вчетверо увеличивает pass@1: 5.5% → 25.8%, точный тест Макнемара p < 0.0001.

Две оговорки, обе в benchmarks/contextbench/RESULTS.md, раздел §6: (a) стартовые функции, которые получает каждая ветвь, — оракул — они извлечены из эталонного патча, так что здесь измеряется «если локализация дана верно, влияет ли качество контекста?», а не решение задачи от начала до конца (локализация достаётся каждой ветви бесплатно); (b) 121 из 128 валидных задач — это django, так что это в основном результат про django.

Честное дополнение: три варианта контекста (default / gap / depboost) статистически неразличимы между собой, p = 0.36–0.81. Выигрыш даёт контекст против отсутствия контекста, а не один селектор против другого. Полные результаты: benchmarks/contextbench/RESULTS.md.

Чем это не является

  • Не генератор кода. Он отбирает и упаковывает контекст; модель пишет код.

  • Не precision-first. Он забрасывает широкую сеть — средняя точность ниже 0.1 при стандартном top-k. Если вы платите за каждый токен, используйте --cutoff gap.

  • Еще не многолязычный. Python полностью поддерживается. TypeScript/JS (ESM) — рабочий прототип; CommonJS — измеренный провальный сценарий.

  • Не замена чтению кода. У статического анализа есть слепые зоны — они перечислены ниже и в docs/BENCHMARKS.md.

Качество поиска (измерено, а не заявлено)

Эталонная истина извлекается из git-истории — разработчик изменил эти функции вместе в одном коммите; если показать ему одну, найдёт ли инструмент остальные? Измерено на 701 реальном коммите в 9 Python-репозиториях; при каждом пуше этот тест также прогоняется как CI-гейт, чтобы качество не могло незаметно деградировать.

Покомминные hit/recall по реальным парам со-изменений, гибридный поиск:

django

click

flask

httpx

pydantic

black*

requests*

Hit

0.894

0.889

0.863

0.935

0.758

0.897

0.953

Recall

0.774

0.750

0.694

0.772

0.536

0.712

0.762

* валидационные репозитории, не использовались при настройке. Полная таблица по всем 9 репозиториям: benchmarks/README.md.

Сравнение один-на-один против grep при одинаковых лимитах токенов: grep выходит на плато на полноте 0.215 после 4k токенов, а DiffContext достигает 0.576 при 8k (в 2.7×). Честная оборотная сторона: средняя точность ниже 0.1 при стандартном top-k — большинство найденных символов это вспомогательный контекст, а не точный набор со-изменённых функций. --cutoff gap обрезает выборку в месте наибольшего падения оценки, даёт ~4× точность при затрате ~30% полноты (оверкой co-change; 2.2× / ~14% на ContextBench).

Я проверил свой собственный бенчмарк, и три моих утверждения не прошли

Продуть 2026-07 атаковала оценку, а не инструмент. Три опубликованные цифры не выжили:

  • Калибровка — единственная цитируемая цифра (r=0.274, n≈25) была измерена на загрязнённом индексе. При повторном чистом замере на n=1,080 старая оценка даёт r=0.016 (p=0.60): связи нет вообще. Исправлено ужатием к «не знаю» → r=0.287 (p=0.0001) — сигнал, который ранжирует, а не вероятность.

  • Веса смешивания — опубликованный [0.5, 0.35, 0.15] не прошёл leave-one-repo-out; каждое разбиение выбирало менее «графовый» вариант. Теперь [0.3, 0.5, 0.2].

  • Плотный боратилон — TF-IDF-замена завышала плотный поиск (0.664, побеждала BM25 в 5 из 5). Настоящий энкодер MiniLM даёт 0.597 и побеждает BM25 только в 2 из 5. Два прежних вывода исправлены публично.

Подробный разбор: docs/auditing-my-own-benchmark.md · сырой отчёт: benchmarks/RIGOR_REPORT_2026-07.md.

Использование как библиотеки

from diffcontext.pipeline import index_repository, analyze_impact, compile

idx = index_repository("/path/to/repo")
impact = analyze_impact(idx, ["./src/auth.py:validate_jwt"])
ctx = compile(idx, impact, max_tokens=8000, top_k=20)
print(ctx.text)  # paste-ready, meta-header discloses what was dropped

Инкрементальный API (idx.update([...])), структурированный результат, подключаемый токенизатор: docs/ARCHITECTURE.md.

Поддержка языков

Язык

Статус

Качество поиска

Python

Полная

Забенчмарчено: 701 коммит, 5 репозиториев + 4 валидационных

TypeScript / JS (ESM)

Прототип

Средний recall 0–68% в зависимости от стиля кода

JavaScript (CommonJS)

Не поддерживается

Измеренный 0.0% на express — не используйте

Известные ограничения (измерено, а не угадан)

У статического анализа есть потолок: тематические «соседи» без вызова между ними, кросс-подсистемные концептуальные связи (все методы дают 0/20) и динамическая диспетчеризация — это наши замеренные слепые зоны; полный список в docs/BENCHMARKS.md. Если сомневаетесь, проверьте: grep -rn "function_name(" --include="*.py" ., прежде чем полностью довериться ответу «вызывающие не найдены».

Далее

  • docs/ARCHITECTURE.md — конвейер, карта модулей, API для агентов

  • docs/BENCHMARKS.md — все цифры, метрика pass@1, ограничения

  • docs/MCP.md — MCP-сервер для Claude Code / Cursor / Windsurf

  • docs/ROADMAP.md — приоритетный план с обоснованием по результатам измерений

  • diffcontext-service/ — FastAPI-сервис + веб-интерфейс

  • observability/ — трассировка конвейера поиска

  • CONTRIBUTING.md — окружение, CI-гейты, разработка адаптеров

Лицензия

MIT

Available Tools

4 tools
compile_contextA

Compile LLM-ready context for a change.

Give it changed symbol IDs (e.g. ./src/auth.py:validate_jwt) or a git ref (e.g. HEAD~1), and it returns the callers, callees, and related functions the model needs to make the change safely — packed into max_tokens with a disclosure header showing what was dropped.

Optionally pass task_description (the bug report or issue text) to bias retrieval toward symbols relevant to the described problem — the one signal the graph alone can't provide.

Args: repo_path: Absolute path to the repository. If omitted, uses the --repo from server startup. changed_symbols: List of changed symbol IDs (e.g. ["./src/auth.py:validate_jwt"]). Mutually exclusive with git_ref. git_ref: Git ref to detect changes from (e.g. "HEAD~1"). Mutually exclusive with changed_symbols. When only task_description is given (no changed_symbols or git_ref), defaults to "HEAD". task_description: The bug report or issue text. Biases retrieval toward symbols semantically related to the described problem, not just structurally near the changed symbols. max_tokens: Token budget for the context (default 8000). meta: Disclosure header level: "full" (default), "compact", or "off". The pass@1 effect of meta level is UNMEASURED.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNofull
git_refNo
repo_pathNo
max_tokensNo
changed_symbolsNo
task_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/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. It exposes useful behavioral details: output is 'packed into max_tokens', a disclosure headers shows what was dropped, retrieval can be biased by task_description, and the pass@1 effect of the meta level is explicitly marked 'UNMEASURED'. These are substantive disclosures, not merely rephrased schema information.

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

Conciseness4/5

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

The description is front-loaded with the core action and then expands into concrete input formats, defaults, and caveats. It contains no filler, yet it is rather long due to the detailed Args block. Every sentence earns its place, and the most critical behavioral caveat ('UNMEASURED') is included without unnecessary qualification.

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

Completeness4/5

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

For a 6-parameter tool with no annotations and no input-schema descriptions, the description covers all required behavior: input formats, defaults, output composition, token budget, disclosure header, and task bias. The one gap is explicit behavior when all inputs are omitted: it only explains defaulting to HEAD when 'task_description' is given, not what happens when no parameters at all are passed. This is a small but real completeness gap.

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

Parameters5/5

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

Although input-schema content coverage is 0%, the description's Args block thoroughly documents all six parameters with examples, defaults, mutual exclusivity, and behavioral caveats. It explains the exact meaning of changed_symbols and git_ref, the default git_ref when only task_description is passed, and the enum-like behavior of meta. This fully compensates for the sparse 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 opening sentence states a specific verb and resource: 'Compile LLM-ready context for a change.' It further clarifies the resource by naming the accepted inputs (changed symbol IDs or git ref) and the returned content (callers, callees, related functions). It does not explicitly differentiate from the sibling tools, but the purpose is clear enough to be usable in isolation.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong input-selection guidance: changed_symbols vs git_ref are mutually exclusive, and task_description alone implies HEAD. However, it says nothing about when to use compile_context over its siblings (find_impact, explain_selection, verify_retrieval), so the when-to-use guidance is limited to parameter choices rather than tool-disambiguation.

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

explain_selectionA

Explain why symbols were included or dropped from context.

Returns the included symbols (with scores and token costs) and the dropped symbols (scored but cut by the token budget), so an agent can inspect or filter the selection.

Args: repo_path: Absolute path to the repository. If omitted, uses the --repo from server startup. symbol: The changed symbol ID to build context for. max_tokens: Token budget (default 8000).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNo
repo_pathNo
max_tokensNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden here. It is transparent about the behavior: included symbols are returned with scores and token costs, and dropped symbols are scored but cut by the token budget. It does not explicitly state side effects or authorization requirements, but its read-only nature is strongly implied.

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 front-loaded with the core purpose, then the return behavior, then a compact Args block. Every sentence adds value; there is no filler or unrelated detail.

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

Completeness4/5

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

Despite having no annotations, the description covers the essential aspects needed to invoke the tool: what it does, what it returns, and what each parameter means. The only notable gap is the lack of comparative routing guidance against the sibling tools.

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?

Schema property descriptions have 0% coverage, so the description must compensate. It does: repo_path is 'Absolute path to the repository' with a fallback to the --repo startup value, symbol is described as 'The changed symbol ID to build context for,' and max_tokens is defined as a 'Token budget' with a default. This adds meaningful semantics beyond the raw 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 clearly states the tool's purpose with a specific verb and resource: 'Explain why symbols were included or dropped from context.' It also details what is returned. It does not explicitly compare itself to siblings such as compile_context or verify_retrieval, but the purpose is specific enough to be distinguished from them.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context: after context selection, an agent can 'inspect or filter the selection.' It also explains parameter defaults such as using the startup repo when repo_path is omitted. However, it does not explicitly state when to use this tool over its siblings or when not to use it.

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

find_impactA

Find what breaks if you change a symbol.

Returns the blast radius: direct callers, direct callees, and transitive impact. The "what breaks if I change this" query.

Args: repo_path: Absolute path to the repository. If omitted, uses the --repo from server startup. symbol: Symbol ID (e.g. ./src/auth.py:validate_jwt).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNo
repo_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral burden. It clearly discloses the output: direct callers, direct callees, transitive impact, and even describes behavior when repo_path is omitted, using the server startup --repo. It does not explicitly call itself read-only, but the language 'Find... Returns' strongly implies a query-only operation.

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 short, front-loaded with the core purpose, and each sentence earns its place. The summary 'The "what breaks if I change this" query' is a useful clarifying mental model rather than unnecessary repetition. The two argument descriptions are compact and relevant.

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

Completeness4/5

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

For a fairly simple 2-parameter lookup tool, the description covers the inputs, the core behavior, and the scope of results, and an output schema exists to fill in any return-format uncertainty. It doesn't go quite further to explicitly mention read-only constraints, staleness, or required indices, but there are no annotations and the description is still sufficiently rich for most AI agents.

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

Parameters5/5

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

Input schema has 0% description coverage, but the description fully compensates for both parameters: repo_path is defined as an absolute path with the startup --repo fallback, and symbol is given an exact Symbol ID example (./src/auth.py:validate_jwt). This adds significant, actionable detail beyond the raw 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 clearly states the tool's purpose: finding what breaks if a symbol is changed, and what it returns: direct callers, direct callees, and transitive impact. It is specific enough to be distinguished from generic helpers, but it does not explicitly differentiate from sibling tools like compile_context or verify_retrieval.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "The 'what breaks if I change this' query" gives a strong, useful usage frame: call this when you are about to change a symbol and want to assess impact. However, there is no explicit statement about when not to use it, no comparison to alternatives, and no exclusions, so the guidance remains implied rather than explicit.

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

verify_retrievalA

Mine git history and grade retrieval quality on your repo.

Generates test cases from co-change history, runs DiffContext retrieval against them, and reports hit/recall. Prints NULL RESULT when the tool doesn't fit your repo — finding that out IS the feature.

Args: repo_path: Absolute path to the repository. If omitted, uses the --repo from server startup. n: Maximum number of test cases to generate from git history (default 20).

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
repo_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

Even though no annotations were provided, the description reveals significant behavioral traits: it generates test cases from co-change history, runs DiffContext retrieval, reports hit/recall, and optionally prints NULL RESULT when the repo doesn't fit. Calling out the NULL RESULT as a feature is genuinely useful and goes beyond typical descriptions.

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 definition is short, front-loaded with the main purpose, then narrows to mechanism and parameters. The NULL RESULT sentence is pointed and earns its place. The Args section provides compact parameter context without re-describing what the schema already defaults.

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

Completeness5/5

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

Given that there is an output schema and only two simple parameters, the description is complete: it covers what the tool does, the algorithm, output metrics, edge-case behavior, and all parameter semantics. An agent has enough information to select and invoke this tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries all param documentation. It clearly adds meaning by explaining repo_path as an absolute path with a startup fallback to --repo, and describes n as the maximum number of test cases with a default of 20. This covers both parameters meaningfully.

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 opens with a specific verb and resource: 'Mine git history and grade retrieval quality on your repo,' and then defines the mechanism (generate test cases, run retrieval, report hit/recall). It clearly explains what the tool does, but it does not explicitly contrast it with sibling tools like compile_context or find_impact.

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

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: you use this when you want to assess retrieval quality over git history, and the NULL RESULT warning indicates what to expect if the repository isn't a good fit. However, it does not state explicit when-to-use versus known sibling alternatives.

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. 4 tool updatesv0.5.4
    • First observedcompile_context
    • First observedexplain_selection
    • First observedfind_impact
    • First observedverify_retrieval

TDQS

A4/5.0
Disambiguation3/5

compile_context and find_impact overlap substantially because both return callers/callees for a symbol or change, requiring an agent to read descriptions carefully to pick the right one. Their intended uses are reasonably distinct—compile_context produces token-budgeted LLM context, while find_impact answers 'what breaks'—and explain_selection and verify_retrieval are clearly separate.

Naming Consistency5/5

All tool names follow the same snake_case verb_noun pattern: compile_context, find_impact, explain_selection, verify_retrieval. There are no mixed conventions or vague names.

Tool Count5/5

Four tools is an appropriately focused set for this domain: a primary retrieval/context tool, an impact-focused variant, an introspection tool, and an evaluation tool. None of the tools feel redundant or extraneous.

Completeness4/5

The main workflow is covered: generate context, inspect impacts, explain selection decisions, and verify retrieval quality on the repo. There is a minor gap in that there is no tool to directly explore the raw dependency graph outside these retrieval wrappers, but that is a narrow gap for this tool's stated purpose.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Repomix MCP Server enables AI models to efficiently analyze codebases by packaging local or remote repositories into optimized single files, with intelligent compression via Tree-sitter to significantly reduce token usage while preserving code structure and essential signatures.
    91,625
    28,125
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A fully featured coding agent that uses symbolic operations (enabled by language servers) and works well even in large code bases. Essentially a free to use alternative to Cursor and Windsurf Agents, Cline, Roo Code and others.
    29
    28,830
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Extracts minimal, relevant code context from multiple programming languages while analyzing diffs and optimizing imports to reduce token usage for AI assistants. Supports TypeScript/JavaScript, Python, Go, and Rust with token-aware caching.
    7
    26
    1
    MIT

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/trakshan-mishra/Diffcontext'

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