MCP-Demo
mcp-demo
Минималистичный Python MCP-сервер, созданный поэтапно, чтобы каждый коммит раскрывал одну концепцию. Конечный результат: Claude Code может вызывать локальные модели Ollama (gemma3:4b / 3:12b) в качестве инструмента, перенаправляя некритичные задачи с API на домашний сервер.
Что такое MCP на самом деле?
Model Context Protocol — это стандартизированный протокол JSON-RPC 2.0, который позволяет LLM-клиенту (Claude Code, Claude Desktop, Cursor) обнаруживать и вызывать инструменты, получать ресурсы и загружать шаблоны промптов из отдельных процессов, называемых MCP-серверами. MCP для инструментов LLM — это то же самое, что LSP для поддержки языков в IDE: один протокол, множество совместимых реализаций.
Компоненты системы
┌───────────────────┐ stdio / HTTP ┌──────────────────┐
│ MCP Client │ ◄──JSON-RPC──► │ MCP Server │
│ (Claude Code) │ │ (this repo) │
└───────────────────┘ └──────────────────┘
│ │
│ spawns as child │ hits
│ process (stdio) │ localhost:11434
▼ ▼
your shell env Ollama / gemma3Клиент — встроен в LLM-приложение
Сервер — любой процесс, поддерживающий MCP
Транспорт —
stdio(клиент запускает сервер как дочерний процесс, передает JSON-RPC через каналы) илиstreamable-http(сервер как веб-сервис). В этом репозитории используется stdio.
Три примитива, предоставляемые MCP-сервером
Примитив | Что это такое | Использование в этом репозитории |
Инструменты | Функции, которые может вызывать LLM |
|
Ресурсы | Блоки данных только для чтения, которые может получить клиент |
|
Промпты | Готовые шаблоны промптов | (не используются — для минимализма) |
Этапы разработки
Каждый этап — это один коммит, git log показывает эволюцию.
✅ каркас — pyproject, README, .gitignore.
✅ hello-world сервер — один инструмент
echo+ клиент для дымового тестирования. Демонстрирует полный жизненный цикл: запуск клиентом → рукопожатие → обнаружение инструмента → вызов инструмента.✅ инструмент ollama_ask — асинхронный инструмент, который отправляет POST-запрос на
localhost:11434/api/generateи возвращает ответ Gemma.✅ полировка — добавляет параметр
systemвollama_askи предоставляет ресурс по адресуollama://models(список загруженных моделей).
Установка и запуск
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
# Phase 2+ only: run the server by hand to smoke-test
python -m mcp_demo.serverСервер считывает JSON-RPC из stdin и записывает в stdout — если запустить его напрямую в терминале, он будет просто ждать ввода. Это ожидаемое поведение. Клиент (Claude Code) — это то, что фактически подает данные.
Регистрация в Claude Code
Добавьте в ~/.claude/settings.json:
{
"mcpServers": {
"mcp-demo": {
"command": "/home/booty/mcp-demo/.venv/bin/python",
"args": ["-m", "mcp_demo.server"]
}
}
}Перезапустите Claude Code. Инструменты появятся как mcp__mcp-demo__<tool_name>.
Дополнительная информация
Спецификация: https://modelcontextprotocol.io/specification
Python SDK: https://github.com/modelcontextprotocol/python-sdk
Инспектор (интерфейс отладки для тестирования любого MCP-сервера):
npx @modelcontextprotocol/inspector
This server cannot be installed
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI dialogue using various LLM models via AceDataCloud
An MCP server that gives your AI access to the source code and docs of all public github repos
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/SiNBooty/MCP-Demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server