bitbucket-pr-review-mcp
bitbucket-pr-review-mcp
MCP-сервер, который позволяет языковой модели читать pull request в Bitbucket Cloud и оставлять комментарии к нему — привязанные к строкам, к которым они относятся, плюс одно резюме вверху.
Сервер предоставляет материал и публикует слова. Он не формирует мнения: рецензирование выполняет вызывающая модель, и здесь нет ни промпта для рецензирования, ни учётных данных модели.
Как это работает и почему: docs/architecture.md
Решения, стоящие за этим: docs/adr/
Язык, который он использует: CONTEXT.md
Что он не умеет
Он может создавать и обновлять комментарии. Он не может одобрить, отклонить или слить pull request, не может писать в ветки или файлы и никогда не удаляет комментарии.
Bitbucket не продаёт разрешение, которое отделяет комментирование от слияния. Учётные данные, которые вы даёте этому серверу, способны сливать ваши pull request; ни токены, ни области действия этому не препятствуют. Препятствует то, что ни один инструмент об этом не просит, что единственная точка контроля в HTTP-клиенте отказывает в этом, как бы ни был составлен запрос, и — та часть, которая не зависит от правильности этого кода — ограничения веток, которые вы настраиваете в репозитории самостоятельно. См. ADR-0002 и прочтите Перед началом работы.
Related MCP server: Bitbucket MCP Server
Перед началом работы
Настройте ограничения веток для любого репозитория, который вы добавляете в белый список. В Bitbucket: Настройки репозитория → Ограничения веток. Ограничьте, кто может сливать изменения в вашу основную ветку, и требуйте одобрений, которые ожидает ваша команда. Bitbucket применяет это независимо от того, что делает этот сервер, что делает это единственной гарантией здесь, которая переживёт ошибку в этом репозитории. Это занимает минуту, и это разница между «мы верим, что этот код осторожен» и «неважно, если это не так».
Установка
Требуется uv и Python 3.13. Те же три команды работают на Windows, macOS и Linux:
git clone <this repository>
cd bitbucket-pr-review-mcp
uv syncЗатем укажите, к каким репозиториям он может обращаться:
cp config/repositories.yaml.example config/repositories.yaml...и отредактируйте его. Файл перечисляет записи workspace/repo, не содержит секретов и
предназначен для коммита:
repositories:
- streamstech/db-explorer
- streamstech/lent-managerЦелое рабочее пространство можно записать как jantrik/*. Это самая широкая запись здесь —
она охватывает репозитории, созданные после того, как вы её написали, — поэтому сервер
говорит об этом при каждом запуске:
repositories:
- jantrik/*Сервер отказывается запускаться без списка. Отсутствующий список неотличим от разрешения
касаться каждого репозитория, доступного вашим учётным данным. Шаблоны уже целого рабочего
пространства (*/db-explorer, streamstech/db-*) отклоняются по той же причине:
это догадки о именовании, и они захватывают всё, что будет названо так в следующий раз.
Подключение вашей учётной записи Bitbucket
Запустите настройку и откройте ссылку, которую она выводит:
uv run bb-pr-mcp --setupОна обслуживает страницу на вашей собственной машине — только loopback, на случайном порту, одноразовая ссылка, исчезает через пять минут — запрашивая ваш email учётной записи Atlassian (не имя пользователя Bitbucket и не имя, которое вы дали токену) и API-токен. Она проверяет пару на Bitbucket и показывает ваше отображаемое имя перед сохранением чего-либо, затем помещает учётные данные в связку ключей вашей ОС и закрывается.
Создайте токен на https://id.atlassian.com/manage-profile/security/api-tokens с ровно этими четырьмя областями:
Область | Зачем |
| Чтобы сервер знал, чьи комментарии его собственные — без этого каждый повторный ревью накапливает дубликаты |
| Чтение файлов и коммитов вокруг изменения |
| Чтение самого pull request — гранулярные области не вкладываются, поэтому область записи ниже не покрывает это |
| Публикация и обновление комментариев |
Ничего шире. Токен, который также может писать в репозиторий, администрировать его или запускать пайплайны, отклоняется в форме и снова отклоняется при запуске.
Введите дату истечения токена при настройке, и вы будете предупреждены за неделю до его истечения, а не столкнётесь с 401 в середине ревью.
Вам никогда не нужно запускать --setup явно: если учётные данные не сохранены, каждый
инструмент отвечает URL-адресом настройки вместо ошибки.
Проверяйте это когда угодно:
uv run bb-pr-mcp --checkЭто проверяет белый список, учётные данные и их области, выводит, от чьего имени вы
публикуете, и завершается с кодом оболочки — 0 нормально, 1 нет пригодных учётных данных,
2 токен с неправильными областями.
Удаление
uv run bb-pr-mcp --forgetЭто удаляет учётные данные из связки ключей этого устройства и ничего больше — токен по-прежнему существует в Atlassian, пока вы не отзовёте его там, и команда говорит об этом. Следующий вызов инструмента выдаст вам новую ссылку настройки.
Здесь намеренно нет инструмента для этого. Инструмент, который удаляет учётные данные, — это инструмент, который описание pull request может уговорить модель вызвать, и ничего не выигрывается: тот, кто хочет их удалить, уже находится в терминале.
Модель никогда не видит токен
Токен идёт из вашего браузера в связку ключей, а оттуда в заголовок
Authorization. Он никогда не является аргументом инструмента, никогда не находится в ответе
инструмента, никогда не находится в сообщении об ошибке и не находится в URL-адресе настройки —
тот несёт другой одноразовый токен, который даёт только право заполнить одну форму на этой
машине. tests/test_the_token_never_reaches_the_model.py ищет его во всех этих местах.
Если связка ключей недоступна
Учётные данные помещаются в связку ключей ОС и никуда больше — никогда в файл. На macOS и Windows это работает из коробки. На Linux вам нужна запущенная и разблокированная служба Secret Service (gnome-keyring или KWallet); если её нет, сервер останавливается, а не переключается на файл (ADR-0003).
Запуск
Сервер говорит по MCP через stdio. Укажите на него вашему клиенту:
{
"mcpServers": {
"bitbucket-pr-review": {
"command": "uv",
"args": ["run", "--directory", "/path/to/bitbucket-pr-review-mcp", "bb-pr-mcp"]
}
}
}На Windows используйте ту же форму с путём Windows
("C:\\path\\to\\bitbucket-pr-review-mcp"). В остальном между платформами нет различий.
Для Claude Code:
claude mcp add bitbucket-pr-review -- uv run --directory /path/to/bitbucket-pr-review-mcp bb-pr-mcpЗапуск в Docker
Образ говорит по MCP через stdio, как и всё остальное, поэтому нет порта и ничего не нужно
up. Соберите его, затем запустите с -i и общайтесь с ним.
docker build -t bitbucket-pr-review-mcp:local .В контейнере нет связки ключей, и страница настройки не поможет: она привязывает порт
loopback внутри контейнера, до которого ваш браузер не может добраться. Поэтому
контейнерный запуск получает свои учётные данные, а не хранит их. Это реальное понижение —
переменная окружения видна docker inspect и всему, что может читать процесс, — и это
решение, а не запасной вариант: ничто не деградирует в него, обе переменные должны быть
установлены, и запуск говорит об этом каждый раз. См.
ADR-0007.
Поместите учётные данные в файл, который не находится в этом репозитории:
BB_MCP_EMAIL=you@yourcompany.com
BB_MCP_API_TOKEN=ATATT...
BB_MCP_TOKEN_EXPIRES_ON=2027-08-24Затем проверьте его и подключите к клиенту:
docker run --rm \
--env-file /path/to/env.docker \
-v /path/to/repositories.yaml:/config/repositories.yaml:ro \
bitbucket-pr-review-mcp:local --check{
"mcpServers": {
"bitbucket-pr-review": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--env-file", "/path/to/env.docker",
"-v", "/path/to/repositories.yaml:/config/repositories.yaml:ro",
"bitbucket-pr-review-mcp:local"
]
}
}
}docker-compose.yaml записывает те же флаги один раз: docker compose run --rm bitbucket-pr-review, читая .env.docker (в gitignore) из этого каталога.
Несколько вещей, которые стоит знать:
На Windows используйте путь в стиле Windows в
-v(d:/path/to/repositories.yaml:/config/...). В Git Bash добавьте префиксMSYS_NO_PATHCONV=1к команде, иначе путь будет переписан.Белый список монтируется, а не встраивается. Он называет репозитории, к которым сервер может обращаться; этот список принадлежит тому, кто запускает образ, а не образу.
--setupзавершается с кодом 2 в контейнере, сообщая, где можно запустить настройку. Ротация токена означает перезапуск с новым.Контейнер работает как непривилегированный пользователь, только для чтения, со всеми отброшенными capabilities.
Подключение к общему серверу
Общее развёртывание — несколько человек, один сервер, у каждого своя учётная запись Bitbucket — работает за одним origin. И конечная точка MCP, и Keycloak обслуживаются с него, потому что issuer — это строка, которая должна означать одно и то же в токене, документе обнаружения, браузере и конфигурации.
Ни Claude Desktop, ни Claude Code не обращаются к серверу напрямую через localhost.
Пользовательский коннектор Claude загружается инфраструктурой Anthropic, а не вашей
машиной, поэтому сервер на вашем ноутбуке недостижим, как бы он ни был настроен. Локальный
цикл идёт через mcp-remote: мост stdio,
который работает на вашей машине, выполняет поток OAuth в вашем браузере и говорит по HTTP
с сервером. Как только у сервера появляется публичный https-адрес, пользовательский коннектор
достигает его напрямую, и мост больше не нужен.
Какой client id куда
В realm есть три OAuth-клиента, потому что аутентифицируются три разные вещи, и они не
взаимозаменяемы. Использование неправильного терпит неудачу на первом шаге, с
Invalid parameter: redirect_uri на странице ошибки Keycloak — которая называет параметр,
а не клиента, и это одно и то же сообщение для любой причины.
Что вы настраиваете | Client id | Secret |
Пользовательский коннектор в настройках Claude |
|
|
|
| нет — это публичный клиент |
Ничего. Этот сервер использует его сам для |
|
|
Разделение следует за тем, куда попадает callback. Callback коннектора —
https://claude.ai/api/mcp/auth_callback, на инфраструктуре Anthropic, поэтому этот клиент
конфиденциальный, и его секрет живёт там. Callback моста — это порт loopback на чьём-то
ноутбуке, поэтому этот клиент вообще не содержит секрета — секрет в файле конфигурации на
ноутбуке — это не секрет, и PKCE защищает поток loopback. Регистрация размещённого callback
на публичном клиенте передала бы конфиденциальный поток клиенту, который не может ничего
хранить, поэтому он не зарегистрирован, и Keycloak отказывает в этом.
Скопируйте .env.example в .env, затем запустите:
cp .env.example .env # fill in the secrets; the defaults are the loopback stack
docker compose --profile shared up -dЭто поднимет Postgres, Keycloak, nginx и сервер ревью. docker compose --profile shared ps должен показать четыре здоровых контейнера, и http://localhost:8080/mcp должен
отвечать 401 с заголовком WWW-Authenticate, называющим область bitbucket:review —
отказ неаутентифицированному запросу — это работающая система.
Claude Code
Зарегистрируйте мост один раз, для всех проектов, с -s user:
claude mcp add bitbucket-pr-review -s user -- npx -y mcp-remote http://localhost:8080/mcp 3334 --allow-http --static-oauth-client-info "{\"client_id\":\"bitbucket-pr-review-cli\"}"-s user записывает его в ключ верхнего уровня mcpServers в ~/.claude.json, который
применяется в каждом каталоге. Альтернативы: -s local (только этот проект, также в
~/.claude.json, в разделе projects) и -s project (закоммиченный .mcp.json). Не
регистрируйте его более чем в одной области: конфигурации раздельны, область пользователя
выигрывает, и та, которую вы редактируете позже, может не быть используемой.
Проверьте:
claude mcp get bitbucket-pr-reviewчто должно сообщить Scope: User config и Status: ✔ Connected. Сессия подхватывает MCP-
серверы при запуске, поэтому уже запущенный Claude Code не увидит только что
зарегистрированный сервер, пока не будет перезапущен.
Выдача кому-то учётной записи
В realm поставляется один пользователь, dev / dev-only-not-for-production, который
является учётными данными для разработки и говорит об этом. Всем остальным нужна учётная
запись в Keycloak, прежде чем они смогут войти — это отдельная вещь от подключения их
учётной записи Bitbucket впоследствии, которую они делают сами на /connect.
В консоли администратора. Откройте http://localhost:8080/admin, войдите как
bootstrap-администратор (KC_BOOTSTRAP_ADMIN_USERNAME / KC_BOOTSTRAP_ADMIN_PASSWORD из вашего .env),
переключите выбор realm с master на streamstech, затем Users → Add user. Заполните
имя пользователя, email, имя и фамилию, отметьте Email verified и создайте. Затем
Credentials → Set password и выключите Temporary, если только вы не хотите, чтобы их попросили
сменить пароль при первом входе.
Или из командной строки, что проще повторить:
docker exec bitbucket-pr-review-mcp-keycloak-1 /opt/keycloak/bin/kcadm.sh \
config credentials --server http://localhost:8080 --realm master \
--user admin --password "$KC_BOOTSTRAP_ADMIN_PASSWORD"
docker exec bitbucket-pr-review-mcp-keycloak-1 /opt/keycloak/bin/kcadm.sh \
create users -r streamstech \
-s username=somebody -s email=somebody@example.com -s emailVerified=true \
-s firstName=Some -s lastName=Body -s enabled=true
docker exec bitbucket-pr-review-mcp-keycloak-1 /opt/keycloak/bin/kcadm.sh \
set-password -r streamstech --username somebody --new-password 'their-password'В Git Bash добавьте перед каждой из этих команд MSYS_NO_PATHCONV=1, иначе /opt/keycloak/...
будет переписан в путь Windows, и docker exec сообщит, что файл не существует.
Две вещи, которые легко перепутать, и обе приводят к ошибке при входе, а не при создании, с сообщением, которое не указывает на причину:
Имя и фамилия обязательны. Профиль пользователя Keycloak считает их обязательными, поэтому учетная запись, созданная без них, аутентифицируется с ошибкой
invalid_grant: Account is not fully set up. Ничто не предупреждает вас при создании учетной записи.kcadm.sh set-passwordбез-tуже является постоянным; передача-tделает его временным и оставляет то же обязательное действие в ожидании.
Никакие роли или членство в группах не нужны. Новая учетная запись автоматически получает
default-roles-streamstech, и этого достаточно — этот сервер авторизует по области bitbucket:review,
которая запрашивается во время OAuth-потока и на которую дается согласие, а не предоставляется заранее.
Учетные записи хранятся в базе данных Keycloak, которая является томом. Они переживают перезапуски,
но не переживают docker volume rm bitbucket-pr-review-mcp_keycloak-db.
Claude Desktop
В Claude Desktop нет команды mcp add; вы редактируете claude_desktop_config.json вручную.
Где он находится, зависит от того, как был установлен Claude:
Установка | Путь |
Windows |
|
Windows, Microsoft Store |
|
macOS |
|
Путь для Store — это тот, который чаще всего подводит людей — установка из Store полностью игнорирует
файл %APPDATA%, и редактирование неправильного ничего не меняет без какой-либо ошибки.
{
"mcpServers": {
"bitbucket-pr-review": {
"command": "cmd",
"args": [
"/c", "npx",
"-y", "mcp-remote",
"http://localhost:8080/mcp",
"3335",
"--allow-http",
"--static-oauth-client-info", "{\"client_id\":\"bitbucket-pr-review-cli\"}"
]
}
}
}deploy/claude_desktop_config.example.json содержит то же самое. Две детали там выполняют
реальную работу:
cmd /cпередnpxв Windows. Claude Desktop не запускает через оболочку, поэтому голый"command": "npx"разрешается в пакетный файл, чей собственный путь содержит пробел, и всё умирает с ошибкой'C:\Program' is not recognized as an internal or external commandв журнале ниже. На macOS уберитеcmdи/cи используйте"command": "npx".Порт
3335, а не3334. Это число — собственный порт loopback моста, и регистрация Claude Code уже использует3334. Два моста на одном порту означают, что тот, который запускается вторым, не сможет получить свой OAuth-обратный вызов. Realm регистрируетhttp://127.0.0.1:*/oauth/callback, так что подойдет любой свободный порт.
Перезапустите Claude Desktop — полностью, из трея, так как закрытие окна оставляет его работающим — и проверьте, что он запустился:
tail -f "$LOCALAPPDATA/Packages/Claude_*/LocalCache/Roaming/Claude/logs/mcp-server-bitbucket-pr-review.log"Proxy established successfully between local STDIO and remote StreamableHTTPClientTransport — это строка, означающая, что мост общается с сервером.
Server transport closed unexpectedly означает, что он вместо этого завершился — причина на несколько строк выше.
Первый вызов инструмента затем открывает вход в Keycloak (dev / dev-only-not-for-production в
development realm, или учетная запись, которую вы создали выше). После входа вызов инструмента
отвечает ссылкой на /connect, где вы подключаете свою учетную запись Atlassian — эта страница
также заставляет браузер войти, поэтому ссылку безопасно видеть в транскрипте.
Несколько вещей, которые стоит знать:
Мост — это публичный OAuth-клиент, без секрета. Секрет клиента в конфигурационном файле на ноутбуке — это не секрет; PKCE — это то, что защищает loopback-поток.
Его обратный вызов —
http://127.0.0.1:3334/oauth/callback— IP-литерал, а неlocalhost, и/oauth/callback, а не/callbackот Claude Code. Realm регистрирует все из них, потому что ошибка приводит к сбою на последнем шаге потока.--allow-httpобязателен, пока сервер работает на обычном http. Реальное развертывание — это https, и этот сервер отказывается описывать себя через http где-либо, кроме loopback.Аргумент
3334— это собственный порт моста, и realm регистрирует обратный вызов на нем. Два клиента Claude, работающие одновременно через мост, должны использовать разные порты.Значения по умолчанию профиля
shared— это конфигурация для разработки — bootstrap-администратор, чей пароль находится вdocker-compose.yaml, realm с пользователем, чей пароль находится в файле realm, и обычный http на loopback. Каждый из них — это переменная с значением по умолчанию, поэтому реальное развертывание переопределяет их в.env, а не редактирует какой-либо файл. См. docs/deploying-the-shared-server.md.Изменение origin требует повторного импорта realm. Realm импортируется один раз, в базу данных Keycloak;
--import-realmоставляет существующий realm нетронутым. Удалите этот том по имени —docker volume rm bitbucket-pr-review-mcp_keycloak-db— и никогда не используйтеdown -v, который заберет с собой хранилище учетных данных.
Управление им
uv run bb-pr-mcp --health
uv run bb-pr-mcp --rotate-key /path/to/new.key--health сообщает, пригодно ли развертывание для работы — TLS, ключ хранилища, хранилище,
список разрешенных, доступен ли сервер авторизации и сколько людей
подключено — и завершается с кодом 0 (здоров), 1 (есть на что посмотреть), 2 (это не запустится).
--rotate-key повторно запечатывает все сохраненные учетные данные под новым ключом без повторного
включения кого-либо, затем сообщает вам порядок выполнения остальных действий.
Прочтите docs/deploying-the-shared-server.md перед запуском этого где-либо в реальной среде. В нем указано, во что обходится одна компрометация хоста, что больше, чем кажется, и что с этим делать.
Кто подключен, и как снять кого-то
uv run bb-pr-mcp --who
uv run bb-pr-mcp --revoke alice@streamstech.com--who перечисляет всех, кто подключил учетную запись Bitbucket: непрозрачный идентификатор,
электронную почту Atlassian, когда они подключились и когда истекает их токен. Он расшифровывает
хранилище, чтобы ответить, а затем выводит всё, кроме одного поля, которое стоит расшифровывать.
--revoke удаляет сохраненные учетные данные одного человека. Он принимает email или достаточную часть
непрозрачного идентификатора, чтобы быть однозначным, и отказывается, а не угадывает, когда имя совпадает с двумя
людьми. Отзыв вступает в силу при следующем вызове инструмента, в том числе на сервере, который
уже запущен — общий сервер читает учетные данные напрямую, а не хранит их,
именно для того, чтобы оператор в другом терминале не ждал перезапуска.
Чего он не делает — это та часть, которую стоит прочитать. Три места хранят что-то после ухода кого-то, и эта команда владеет одним из них:
Здесь. Сохраненные учетные данные удалены.
Keycloak. Они все еще могут войти и подключить новый токен. Отключите их учетную запись там, чтобы это остановить.
Atlassian. Их API-токен все еще существует и все еще работает везде. Только они, или администратор Atlassian, могут отозвать его.
Команда говорит все три каждый раз, потому что чек-лист по выходу, который отмечается после первого шага, хуже, чем отсутствие чек-листа.
Ни то, ни другое не является инструментом, и это намеренно: описание pull request не должно иметь возможности уговорить Caller отключить коллегу.
Инструменты
Инструмент | Что делает |
| Заголовок, состояние, автор, ветки и основание для рецензирования |
| Каждый измененный файл с количеством, помечая двоичные, сгенерированные и lockfile-записи |
| Весь diff или один файл — с якорной боковой панелью, показывающей номер каждой строки |
| Существующий разговор, с якорями, устаревшими флагами и какие комментарии принадлежат серверу |
| Опубликовать одно замечание или весь обзор; полностью проверено перед отправкой |
| Опубликовать или обновить один сводный комментарий |
| Метаданные и ветка по умолчанию |
| Любой файл в разрешенном репозитории, по ref |
| Список каталога, по ref |
| История для ref или pull request |
| Поиск кода внутри одного разрешенного репозитория |
Pull request называется одной строкой: либо URL Bitbucket, либо сокращением
workspace/repo/id.
Конфигурация
Всё ниже имеет рабочее значение по умолчанию. Установите их в окружении или в файле .env, все
с префиксом BB_MCP_:
Настройка | По умолчанию | Что делает |
|
| Где находится список разрешенных |
|
| Журналы идут в stderr, никогда в stdout |
|
| Один JSON-объект на строку, для отправки в агрегатор |
|
| Таймаут на запрос |
|
| Потолок ответа diff |
|
| Потолок ответа файла |
|
| Строки манифеста |
|
| Строки каталога |
|
| Строки коммитов |
|
| Совпадения поиска |
|
| Комментарии, прочитанные на pull request |
Существуют еще два, и они пусты, пока общее развертывание не завершено — описанная выше установка на устройство не нуждается ни в одном из них, потому что у stdio ровно один вызывающий:
Настройка | Что делает |
| Адрес, к которому подключается Claude, в точности как он введён в коннекторе. Именно этот адрес токены должны указывать в качестве своей аудитории |
| Realm в Keycloak, выпускающий эти токены. Он должен в точности совпадать с issuer в discovery-документе этого realm — завершающий слэш уже является отличием |
| Здесь хранятся учётные данные для каждого пользователя. Они зашифрованы с помощью |
| Клиент Keycloak, через который этот сервер выполняет вход пользователей, чтобы страница, которая запрашивает API-токен, могла спросить, кто они |
| Секрет этого клиента. Требуется для страницы подключения; без него вызывающая сторона без учётных данных получит сообщение о том, что настройка недоступна, а не будет перенаправлена в бесполезное место |
Каждый лимит явно указывается в ответе, когда он срабатывает. Усечение никогда не происходит молча: Caller, который не может отличить усечённый diff от полного, сочтёт недостающую половину просмотренной, исходя из предположения, что с ней всё в порядке.
Разработка
uv run pytest # the suite
uv run pytest --cov=src # with coverage
uv run ruff check src tests # lint
uv run ruff format src tests # formatТесты никогда не обращаются к сети. Точка разделения — это HTTP-транспорт и только он, поэтому защитная проверка, список разрешённых и каждый модуль чтения ответов проверяются как боевой код. В tests/recorded/ хранятся ответы, записанные при работе с реальным pull request — см. docs/architecture.md, почему это важнее, чем кажется.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with Bitbucket Cloud repositories, allowing users to manage pull requests, comments, tasks, and branches through natural language commands.4,1381MIT
- AlicenseAqualityDmaintenanceEnables management of Bitbucket Cloud pull requests through natural language, including creating, reviewing, approving, and commenting on PRs with automatic default reviewer support.791MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to programmatically manage Bitbucket Cloud resources, including pull requests, repositories, and branches, automating code review workflows.189MIT
- AlicenseAqualityDmaintenanceEnables LLMs to review Bitbucket pull requests with custom checklists and API token authentication.51MIT
Related MCP Connectors
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Risk-scan a diff, flag AI-generated-code tells, find secrets. 5 of 7 tools need no account.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/6shihab/bitbucket-pr-review-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server