SourceCraft MCP Server
This server is an MCP integration for SourceCraft, letting AI agents and IDEs manage repositories, issues, pull requests, CI/CD, releases, users, and organizations via natural language or tool calls.
Repositories: list, create, update, delete repos; list branches/tags; get file trees; list org repos.
Issues: list/filter, view, create, update, close, reopen issues; manage comments.
Pull Requests: list/filter, view, create, update, merge, publish/discard PRs; manage reviewers and review decisions.
CI/CD: list and inspect CI runs, workflows, cube logs, artifacts; trigger workflows.
Releases: list, view, create, update, publish, discard releases; get latest release.
Users & Organizations: get current/user info, list my issues, list user PRs, list orgs, org details, and org members.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SourceCraft MCP Serverlist my open pull requests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SourceCraft MCP Server
MCP (Model Context Protocol) сервер для интеграции с платформой SourceCraft. Позволяет ИИ-агентам и IDE работать с репозиториями, issues, pull requests, CI/CD пайплайнами и релизами SourceCraft.
Пакет также включает CLI утилиту sourcecraft для работы с SourceCraft из терминала (см. CLI утилита).
Установка
Через pip
pip install sourcecraft-mcpЧерез uv (рекомендуется)
uv pip install sourcecraft-mcpИз исходников
git clone https://github.com/ramgml/sourcecraft-mcp.git
cd sourcecraft-mcp
uv pip install -e .Установка без PyPI
1. Установка из Git репозитория
Добавьте в pyproject.toml другого проекта:
[tool.uv.sources]
sourcecraft-mcp = { git = "https://github.com/ramgml/sourcecraft-mcp.git" }Или установите напрямую:
uv pip install "git+https://github.com/ramgml/sourcecraft-mcp.git"2. Настройка MCP с использованием uv и git зависимостей
{
"mcpServers": {
"sourcecraft": {
"command": "uv",
"args": [
"run",
"--with",
"git+https://github.com/ramgml/sourcecraft-mcp.git",
"--with",
"git+https://github.com/ramgml/pysourcecraft.git@v0.1.5",
"python",
"-m",
"sourcecraft_mcp.server"
],
"env": {
"SOURCECRAFT_API_TOKEN": "your-api-token"
}
}
}
}3. Локальная разработка
Установите в режиме для разработки:
uv pip install -e /path/to/sourcecraft-mcpКонфигурация MCP с PYTHONPATH:
{
"mcpServers": {
"sourcecraft": {
"command": "python",
"args": ["-m", "sourcecraft_mcp.server"],
"env": {
"SOURCECRAFT_API_TOKEN": "your-api-token",
"PYTHONPATH": "/path/to/sourcecraft-mcp/src"
}
}
}
}4. Использование точки входа (после установки из git)
{
"mcpServers": {
"sourcecraft": {
"command": "sourcecraft-mcp",
"env": {
"SOURCECRAFT_API_TOKEN": "your-api-token"
}
}
}
}Related MCP server: GitHub Agent MCP Server
Настройка
Получение API токена
Войдите в SourceCraft
Перейдите в Settings → Access → Personal Access Tokens
Создайте новый токен с необходимыми правами
Настройка окружения
Установите переменную окружения:
export SOURCECRAFT_API_TOKEN="your-api-token-here"Или добавьте в .env файл:
SOURCECRAFT_API_TOKEN=your-api-token-here
SOURCECRAFT_BASE_URL=https://api.sourcecraft.tech # опциональноНастройка MCP клиента
Добавьте в конфигурацию MCP клиента (например, .vscode/mcp.json или claude_desktop_config.json):
{
"mcpServers": {
"sourcecraft": {
"command": "uvx",
"args": ["sourcecraft-mcp@latest"],
"env": {
"SOURCECRAFT_API_TOKEN": "your-api-token"
}
}
}
}Или для локальной разработки:
{
"mcpServers": {
"sourcecraft": {
"command": "python",
"args": ["-m", "sourcecraft_mcp.server"],
"env": {
"SOURCECRAFT_API_TOKEN": "your-api-token"
}
}
}
}Доступные инструменты
Repositories (8 инструментов)
Инструмент | Описание |
| Список репозиториев пользователя |
| Список репозиториев организации |
| Информация о репозитории |
| Создать репозиторий |
| Обновить репозиторий |
| Удалить репозиторий |
| Список веток |
| Список тегов |
| Дерево файлов |
Issues (10 инструментов)
Инструмент | Описание |
| Список issues с фильтрами |
| Информация об issue |
| Создать issue |
| Обновить issue |
| Закрыть issue |
| Переоткрыть issue |
| Список комментариев |
| Добавить комментарий |
Pull Requests (10 инструментов)
Инструмент | Описание |
| Список PR с фильтрами |
| Информация о PR |
| Создать PR |
| Обновить PR |
| Смержить PR |
| Опубликовать draft PR |
| Отклонить PR |
| Список ревьюеров |
| Добавить ревьюера |
| Установить решение ревью |
CI/CD (6 инструментов)
Инструмент | Описание |
| Список CI запусков |
| Информация о CI запуске |
| Информация о workflow |
| Логи CI cube |
| Артефакты CI |
| Запустить workflows |
Releases (7 инструментов)
Инструмент | Описание |
| Список релизов |
| Информация о релизе |
| Последний релиз |
| Создать релиз |
| Обновить релиз |
| Опубликовать релиз |
| Отклонить релиз |
Users & Organizations (7 инструментов)
Инструмент | Описание |
| Текущий пользователь |
| Информация о пользователе |
| Мои issues |
| PR пользователя |
| Список организаций |
| Информация об организации |
| Члены организации |
Примеры использования
Работа с репозиториями
> Покажи мне репозитории в организации myorg
Использую list_organization_repositories...
📦 frontend-app - Web application
📦 backend-api - API service
🔒 internal-tools - Internal utilitiesРабота с issues
> Найди все открытые issues с приоритетом critical в репозитории myorg/backend-api
Использую list_issues с фильтрами status=open и priority=critical...
🟢 #42 ⚠️ Database connection timeout
Status: open | Priority: critical | Assignee: @dev1
🟢 #38 ⚠️ Memory leak in worker processes
Status: open | Priority: critical | Assignee: @dev2Работа с Pull Requests
> Создай PR для ветки feature/new-auth в main в репозитории myorg/backend-api
Использую create_pull_request...
Pull request создан как draft!
#45: Implement new authentication flow
Branch: feature/new-auth → main
Author: @current-userМониторинг CI/CD
> Покажи статус последних CI запусков в myorg/backend-api
Использую list_ci_runs...
CI/CD runs in 'myorg/backend-api':
✅ Run #abc123 - success
Event: push
Created: 2024-01-15 10:30 UTC
❌ Run #abc122 - failed
Event: pull_request
Created: 2024-01-15 09:45 UTCCLI утилита
Пакет включает CLI sourcecraft для работы с SourceCraft из терминала. Покрывает все домены API: репозитории, issues, pull requests, CI/CD, релизы, пользователи и организации.
Аутентификация
export SOURCECRAFT_API_TOKEN="your-api-token"
# опционально
export SOURCECRAFT_BASE_URL="https://api.sourcecraft.tech"Токен также можно передать флагом --token.
Примеры команд
# Репозитории
sourcecraft repo list --org myorg
sourcecraft repo get myorg/backend-api
sourcecraft repo create my-service --visibility private
sourcecraft repo branches myorg/backend-api
sourcecraft repo tree myorg/backend-api --recursive
# Issues
sourcecraft issue list myorg/backend-api --status open
sourcecraft issue create myorg/backend-api --title "Bug" --body "Описание"
sourcecraft issue close myorg/backend-api 42
# Pull requests
sourcecraft pr list myorg/backend-api --status open
sourcecraft pr create myorg/backend-api --title "Fix" --source feature/x --target main --publish
sourcecraft pr merge myorg/backend-api 45 --squash
sourcecraft pr review myorg/backend-api 45 --decision approve
# CI/CD
sourcecraft ci runs myorg/backend-api
sourcecraft ci run myorg/backend-api <run-slug>
sourcecraft ci logs myorg/backend-api <run> <workflow> <task> <cube>
sourcecraft ci trigger myorg/backend-api build --branch main
# Релизы
sourcecraft release list myorg/backend-api
sourcecraft release create myorg/backend-api v1.0.0 --title "First release" --publish
# Пользователи и организации
sourcecraft user me
sourcecraft user prs username --role reviewer
sourcecraft org list
sourcecraft org members myorgФормат вывода
По умолчанию вывод — читаемые таблицы (Rich). Глобальный флаг --json переключает вывод в JSON для скриптов:
sourcecraft --json repo list --org myorg | jq '.repositories[].slug'Разработка
Установка зависимостей
uv syncЗапуск тестов
uv run pytestЛинтинг
uv run ruff check .
uv run ruff format .Структура проекта
src/sourcecraft_mcp/
├── __init__.py
├── server.py # Точка входа MCP сервера
├── cli/ # CLI утилита (команда `sourcecraft`)
│ ├── app.py # Точка входа CLI, глобальные опции
│ ├── common.py # Общие хелперы (клиент, вывод, ошибки)
│ ├── repos.py
│ ├── issues.py
│ ├── prs.py
│ ├── cicd.py
│ ├── releases.py
│ ├── users.py
│ └── orgs.py
├── tools/ # Инструменты по доменам
│ ├── repositories.py
│ ├── issues.py
│ ├── pull_requests.py
│ ├── cicd.py
│ ├── releases.py
│ ├── users.py
│ └── organizations.py
└── utils.py # УтилитыAgent Skill
В каталоге skill/ лежит opencode/claude-скилл sourcecraft-cli — инструкции для ИИ-агента по работе с CLI sourcecraft.
Установка скилла в систему
# opencode / claude (глобально)
git clone https://github.com/ramgml/sourcecraft-mcp.git
cp -r sourcecraft-mcp/skill/sourcecraft-cli ~/.agents/skills/
# или: cp -r ... ~/.claude/skills/ | ~/.config/opencode/skills/
# для конкретного проекта
cp -r sourcecraft-mcp/skill/sourcecraft-cli /path/to/project/.opencode/skills/Без клонирования, напрямую из репозитория:
mkdir -p ~/.agents/skills/sourcecraft-cli
curl -sSL "https://raw.githubusercontent.com/ramgml/sourcecraft-mcp/main/skill/sourcecraft-cli/SKILL.md" \
-o ~/.agents/skills/sourcecraft-cli/SKILL.mdПосле установки перезапустите opencode/claude, чтобы скилл подхватился.
Лицензия
MIT License
Available Tools
48 tools_add_issue_commentD
Inputs: body (required), repo (required), owner (required), issue_number (required). Returns: result
_add_pr_reviewerD
Inputs: repo (required), owner (required), user_id (required), pull_number (required). Returns: result
_close_issueD
Inputs: repo (required), owner (required), issue_number (required). Returns: result
_create_issueD
Inputs: repo (required), owner (required), title (required), priority, +3 more. Returns: result
_create_pull_requestD
Inputs: repo (required), owner (required), title (required), source_branch (required), +4 more. Returns: result
_create_releaseD
Inputs: tag (required), repo (required), owner (required), title (required), +3 more. Returns: result
create_repositoryA
Create a new repository for the authenticated user.
Args: name: Repository name description: Repository description visibility: Repository visibility (public, internal, private)
Inputs: name (required), visibility, description. Returns: result
delete_repositoryB
Delete a repository.
Args: owner: Repository owner repo: Repository name
Inputs: repo (required), owner (required). Returns: result
_discard_pull_requestD
Inputs: repo (required), owner (required), pull_number (required). Returns: result
_discard_releaseD
Inputs: tag (required), repo (required), owner (required). Returns: result
_get_artifactsD
Inputs: repo (required), owner (required), run_slug (required), cube_slug (required), +2 more. Returns: result
_get_ci_runD
Inputs: repo (required), owner (required), run_slug (required). Returns: result
_get_cube_logsD
Inputs: repo (required), owner (required), run_slug (required), cube_slug (required), +3 more. Returns: result
_get_current_userD
Inputs: no named parameters. Returns: result
get_file_treeA
Get the file tree of a repository.
Args: owner: Repository owner repo: Repository name revision: Git reference (branch, tag, or commit SHA). Uses default branch if empty. path: Path within repository. Root if empty. recursive: Whether to retrieve recursively
Inputs: repo (required), owner (required), path, revision, +1 more. Returns: result
_get_issueD
Inputs: repo (required), owner (required), issue_number (required). Returns: result
_get_latest_releaseD
Inputs: repo (required), owner (required). Returns: result
_get_organizationD
Inputs: org (required). Returns: result
_get_pull_requestD
Inputs: repo (required), owner (required), pull_number (required). Returns: result
_get_releaseD
Inputs: tag (required), repo (required), owner (required). Returns: result
_get_repositoryC
Get detailed information about a repository.
Args: owner: Repository owner repo: Repository name
Inputs: repo (required), owner (required). Returns: result
_get_userD
Inputs: username (required). Returns: result
_get_workflowD
Inputs: repo (required), owner (required), run_slug (required), workflow_slug (required). Returns: result
list_branchesC
List branches in a repository.
Args: owner: Repository owner repo: Repository name page: Page number per_page: Items per page
Inputs: repo (required), owner (required), page, per_page. Returns: result
_list_ci_runsD
Inputs: repo (required), owner (required), page_size, page_token. Returns: result
_list_issue_commentsD
Inputs: repo (required), owner (required), issue_number (required), page, +1 more. Returns: result
_list_issuesD
Inputs: repo (required), owner (required), page, label, +4 more. Returns: result
_list_my_issuesD
Inputs: page_size, page_token. Returns: result
_list_organization_membersD
Inputs: org (required), page, per_page. Returns: result
_list_organization_repositoriesD
Inputs: org (required), page, per_page. Returns: result
list_organization_repositoriesB
List repositories in an organization.
Args: org: Organization name page: Page number per_page: Items per page
Inputs: org (required), page, per_page. Returns: result
_list_organizationsD
Inputs: page, per_page. Returns: result
_list_pr_reviewersD
Inputs: repo (required), owner (required), pull_number (required). Returns: result
_list_pull_requestsD
Inputs: repo (required), owner (required), page, author, +4 more. Returns: result
_list_releasesD
Inputs: repo (required), owner (required), page_size, page_token. Returns: result
_list_repositoriesC
List repositories for a user or the authenticated user.
Args: username: Username to list repos for (None for authenticated user) page: Page number per_page: Items per page
Inputs: page, per_page, username. Returns: result
list_tagsB
List tags in a repository.
Args: owner: Repository owner repo: Repository name page: Page number per_page: Items per page
Inputs: repo (required), owner (required), page, per_page. Returns: result
_list_user_pull_requestsD
Inputs: username (required), role, page_size, page_token. Returns: result
_merge_pull_requestD
Inputs: repo (required), owner (required), pull_number (required), squash, +3 more. Returns: result
_publish_pull_requestD
Inputs: repo (required), owner (required), pull_number (required). Returns: result
_publish_releaseD
Inputs: tag (required), repo (required), owner (required). Returns: result
_reopen_issueD
Inputs: repo (required), owner (required), issue_number (required). Returns: result
_set_review_decisionD
Inputs: repo (required), owner (required), decision (required), pull_number (required). Returns: result
_trigger_workflowsD
Inputs: repo (required), owner (required), workflows (required), tag, +2 more. Returns: result
_update_issueD
Inputs: repo (required), owner (required), issue_number (required), title, +4 more. Returns: result
_update_pull_requestD
Inputs: repo (required), owner (required), pull_number (required), title, +1 more. Returns: result
_update_releaseD
Inputs: tag (required), repo (required), owner (required), title, +1 more. Returns: result
update_repositoryC
Update repository settings.
Args: owner: Repository owner repo: Repository name description: New description (optional) default_branch: New default branch (optional) visibility: New visibility (optional)
Inputs: repo (required), owner (required), visibility, description, +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 48 tools
There are duplicate tools (`_list_organization_repositories` and `list_organization_repositories`) and several similar lifecycle actions (`_create_release` vs `_publish_release`, `_update_pull_request` vs `_publish_pull_request`) that are hard to tell apart. Vague names like `_trigger_workflows` and `_get_cube_logs` further obscure their exact purpose relative to other CI tools.
Most tools follow a snake_case verb_noun pattern, but the leading underscore prefix is applied inconsistently: some tools like `create_repository`, `list_branches`, and `get_file_tree` have no underscore. The duplicate `_list_organization_repositories` / `list_organization_repositories` pair and odd names like `_get_cube_logs` also break the naming pattern.
48 tools is a very large surface for a source-management server, especially when several tools appear duplicative or could be consolidated (`_publish_release` vs `_discard_release`, `_trigger_workflows` vs `_get_workflow`). The scope spans users, orgs, repos, issues, PRs, releases, and CI, which feels heavy rather than focused.
Major workflows for repositories, issues, pull requests, releases, and CI are covered with CRUD/lifecycle actions in most areas. However, there are notable gaps for a source-management tool: no commit listing/inspection, no branch or tag creation/deletion, and no repository search or org member management beyond listing.
Maintenance
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Tasks, sprints, releases and docs for engineering teams with AI coding agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage GitHub repositories, branches, issues, pull requests, releases, and actions through natural language.337 npm6MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with GitHub via natural language, supporting repository management, issue tracking, file commits, and more.ISC
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to automate GitHub repository management, issue tracking, and commits using natural language.11 npmApache 2.0
- AlicenseAqualityBmaintenanceEnables AI assistants to perform Git workflows with semantic commit messages, pre-PR secret audits, conflict resolution, and release changelog generation.5MIT