local-code-agent
local-code-agent
MCP-сервер на базе FastMCP: позволяет внешним ИИ (ChatGPT, Claude и др.) удалённо управлять локальной рабочей областью через HTTP — чтение/запись/редактирование файлов, поиск, shell-команды, Git-операции — с песочницей, защитой конфиденциальных файлов и журналом аудита.
Этот проект не содержит логики ИИ/LLM, только инструментальный слой и средства безопасности.
Требования к окружению
Python 3.10+ (строгое требование FastMCP)
pip install -r requirements.txt(fastmcp, pyyaml)
Related MCP server: OpenAI Secure MCP Tunnel
Быстрый старт
Способ 1: Графический интерфейс (рекомендуется)
python start.pyПорядок действий в окне консоли:
Папка рабочей области: нажмите «Выбрать…» и укажите папку. Все действия ИИ ограничены этой папкой (песочница); смена папки переключает корень песочницы.
Подсказка для подключения: в центре окна есть карточка «Подсказка для подключения». Скопируйте текст из неё и отправьте веб-версии ИИ — ИИ настроит подключение к этому MCP-серверу (токен не требуется).
Порт: по умолчанию 8000; если занят, можно изменить.
Режим только для чтения: при включении все инструменты записи/редактирования/команд будут отклоняться; переключение вступает в силу немедленно.
Нажмите «Запустить службу» → в строке состояния отобразятся версия, статус только для чтения, рабочая область, время работы; в области журнала в реальном времени выводятся логи службы.
Остановка: нажмите «Остановить службу» или просто закройте окно (будет запрос подтверждения).
Способ 2: Командная строка
# 1. 安装依赖
pip install -r requirements.txt
# 2. 启动服务(默认监听 127.0.0.1:8000,MCP 路径 /mcp,无需 Token)
python server.pyНеобязательные параметры: --workspace D:\projects\my-project (корень песочницы), --host 0.0.0.0 (разрешить доступ по локальной сети), --port 9000. Остановка — Ctrl+C.
Проверка работоспособности и health check
После запуска службы перейдите по адресу: GET http://127.0.0.1:8000/health (без аутентификации). Возвращает:
{ "status": "ok", "service": "local-code-agent", "version": "0.1.0",
"workspace": "D:\\projects\\my-project", "readonly": false,
"uptime_seconds": 3 }Остальные конечные точки (включая /mcp) доступны напрямую, без аутентификации.
Доступ по локальной сети
По умолчанию служба слушает только 127.0.0.1, доступна только с локальной машины. Для доступа с других устройств в той же локальной сети:
python server.py --host 0.0.0.0Адрес подключения клиента: http://<локальный IP этой машины>:8000/mcp (локальный IP можно узнать через ipconfig). Открытие доступа по локальной сети означает, что все устройства в той же подсети смогут обращаться к службе без аутентификации — будьте осторожны.
Не рекомендуется напрямую открывать доступ в интернет. Если требуется доступ из интернета, используйте собственное решение обратного прокси (Nginx + TLS, frp или другие туннельные инструменты) и на уровне обратного прокси принудительно включите HTTPS и аутентификацию.
Графический интерфейс (опционально)
Можно использовать без командной строки. tkinter входит в стандартную библиотеку Python, дополнительная установка не требуется.
python start.pyФункции консоли:
Папка рабочей области: нажмите «Выбрать…», чтобы открыть диалог выбора папки. Можно выбрать только одну папку; все действия ИИ ограничены этой папкой (песочница); смена папки заменяет текущий выбор.
Подсказка для подключения: встроенный редактируемый текст подсказки; нажмите «Копировать подсказку», чтобы скопировать её одним нажатием, и отправьте веб-версии ИИ для завершения привязки MCP. Токен не требуется.
Порт / Режим только для чтения: установите порт прослушивания; при включении режима только для чтения инструменты записи/редактирования/команд отключаются.
Запуск / Остановка службы: запускает FastMCP в процессе GUI (фоновый поток + uvicorn) с отдельным обработчиком журналов; остановка ожидает завершения потока службы.
Переключение во время работы: смена рабочей области или включение режима только для чтения вступают в силу немедленно, без перезапуска. Изменение порта требует перезапуска службы.
Строка состояния: опрашивает
/health, отображает версию, статус только для чтения, текущую рабочую область, время работы.Область журнала: в реальном времени показывает вывод службы, автоматически очищает ANSI-escape-последовательности; можно скопировать правой кнопкой мыши; при превышении 600 строк автоматически усекается.
GUI и командная строка используют одни и те же механизмы песочницы и аудита; способ подключения одинаков.
Подключение клиента
Локальный клиент: URL http://127.0.0.1:8000/mcp; клиент по локальной сети: http://<локальный IP этой машины>:8000/mcp (сервер должен быть запущен с --host 0.0.0.0). Аутентификация не требуется.
claude_desktop_config.json для Claude Desktop:
{
"mcpServers": {
"local-code-agent": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}Список инструментов
Инструмент | Параметры | Описание |
| path, offset=0, limit=0 | limit 0 — весь файл; offset — количество пропускаемых начальных строк |
| path, content | Автоматически создаёт родительские каталоги; конфиденциальные пути отклоняются |
| path, old_text, new_text, dry_run=false | Точное совпадение текста, должно быть уникальным |
| path=".", recursive=false | Возвращает структурированные записи; пропускает .git |
| pattern, path=".", file_pattern="*" | Возвращает записи |
| path | Возвращает структурированные размер, mtime, тип |
| path, lines=100 | Чтение конца файла |
| pattern, path="." | Возвращает структурированный массив путей; отклоняет выход за границы |
| source, destination | Не перезаписывает существующий целевой файл |
| source, destination | Только копирование файла, без перезаписи |
| path | Автоматически создаёт родительские каталоги |
| path | Только удаление файла |
| path, url | Поддерживает любые HTTP(S) URL; запрещены перенаправления; лимит 50 МБ |
| command, timeout=30 | Выполнение произвольной команды в рабочей области; потоковый вывод через SSE |
| — | Только чтение |
| message |
|
Модель безопасности
Песочница: все пути разрешаются через
realpathи должны находиться внутри корня рабочей области (перехватывает побеги через символические ссылки).../и абсолютные пути не могут выйти за границы.Аутентификация: аутентификация по токену отсутствует. Служба по умолчанию слушает только локальный
127.0.0.1; для внешнего доступа добавьте аутентификацию на уровне обратного прокси самостоятельно.Подтверждение опасных операций: для Git-коммита требуется заголовок запроса
x-confirm: true.Конфиденциальные файлы:
.env,.env.*,*.pem,*.key,id_rsa,.ssh/,.aws/,credentialsблокируются на любом уровне пути. Возвращается единый ответ «access denied», не раскрывающий существование файла.Загрузка: поддерживаются любые HTTP(S) хосты; перенаправления запрещены; при превышении 50 МБ загрузка прерывается, частичный файл удаляется.
Журнал аудита: формат JSON lines, ротация 10 МБ × 5, записываются время, имя инструмента, обезличенные параметры, результат, время выполнения.
Режим только для чтения:
python server.py --readonlyили флажок в GUI. Инструменты записи/команд остаются видимыми, но при вызове возвращаютread-only mode. Можно переключать во время работы.
Приоритет конфигурации
Рабочая область: --workspace > переменная окружения MCP_WORKSPACE > config.yaml (по умолчанию .). Остальные настройки берутся из config.yaml (см. значения по умолчанию внутри файла).
Структура проекта
server.py # FastMCP 入口:配置、认证、/health
tool_registry.py # 工具注册(与生命周期分离)
config.py / config.yaml # 默认值 + YAML
sandbox.py # 路径沙盒 + 敏感文件过滤
audit.py # 轮转 JSON 审计日志
tools/file_ops.py # 读/写/编辑/列目录/搜索
tools/file_management.py # 删/改名/复制/建目录/stat/tail/glob
tools/download.py # HTTP(S) 下载(无域名白名单)
tools/command.py # 同步 run_command(测试/非流式)
tools/git_ops.py # status/diff/log/branch/commit
runtime.py # 运行时只读标志
gui/ # tkinter 控制台(进程内服务)
start.py # GUI 入口
tests/ # test_core.py + test_extra.pyИзвестные ограничения
Python 3.8 не может запустить этот сервис (fastmcp требует 3.10+); модули логики совместимы с 3.8, можно проверить через
python tests/test_core.py.run_commandиспользует потоковый вывод SSE, общий тайм-аут — 3600 секунд.Поддерживается только одна рабочая область. Переключение между несколькими рабочими областями и контекст на уровне сеанса пока не реализованы (YAGNI).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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 Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to access files and terminal of a local computer via a public HTTPS endpoint, secured with GitHub OAuth.-
- AlicenseNot gradedqualityBmaintenanceEnables file operations and bash command execution on the local workspace, securely exposed to ChatGPT via OpenAI Tunnel.2MIT
- AlicenseNot gradedqualityCmaintenanceEnables remote MCP clients like ChatGPT to run shell commands and manage files on your local machine via a Cloudflare tunnel, exposing tools for file operations, search, and task management.1MIT
- FlicenseNot gradedqualityCmaintenanceEnables macOS users to securely connect AI assistants such as Notion AI, Claude, and Cursor to their local files and terminal through an MCP server protected by a Bearer token and Cloudflare Tunnel.-
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/jhonsmithsamsmith/webmcp-coder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server