Skip to main content
Glama
aim-t

Portfolio MCP

by aim-t

Portfolio MCP

MCP-сервер (Model Context Protocol), который предоставляет настоящее резюме и данные портфолио Айман Тарик в виде инструментов и ресурсов, к которым AI-ассистент может обращаться напрямую, — а не полагаясь на то, что какое-то извлечение текста из PDF-версии резюме случайно выдаст.

Добавьте этот сервер в Claude Desktop, Claude Code или Cursor и спросите «есть ли у Айман опыт с RAG?» или «что она сделала в лагере Audi?» — ассистент вызовет инструмент, получит точный ответ прямо из её данных и сможет процитировать его.

Зачем этот проект

MCP появился едва ли год назад, и для любого технического специалиста, просматривающего GitHub-профиль в 2026 году, он до сих пор выглядит как актуальное, острое знание инструментов. Уже существует несколько open-source-проектов в духе «портфолио как MCP-сервер» (sohamsuthar/portfolio-mcp, Mrinank-Bhowmick/MCV) — этот следует той же схеме, но написан с нуля под данные самой Айман, а не переиспользует их код, и представляет собой быстрый, компактный и по-настоящему полезный проект: собственный AI-ассистент рекрутера может обращаться к нему напрямую, а не доверять парсеру резюме.

Related MCP server: kazejev-personal

Что он предоставляет

Шесть инструментов:

  • get_about() — краткая информация, текущая должность, образование;

  • get_experience(role="") — опыт работы, при необходимости отфильтрованный по должности;

  • get_projects(name="") — описания проектов, при необходимости отфильтрованные по одному проекту;

  • get_skills(category="") — навыки, при необходимости отфильтрованные по одной категории;

  • get_contact() — email, сайт-портфолио, LinkedIn, GitHub, местоположение;

  • search_portfolio(query) — свободный поиск по всем разделам, когда вызывающая сторона не знает, какой именно инструмент нужен.

Пять ресурсов, которые представляют собой исходные markdown-файлы, доступные по URI (portfolio://about, portfolio://experience, portfolio://projects, portfolio://skills, portfolio://contact) — для клиента, который хочет предзагрузить всю базу знаний в контекст, а не вызывать инструменты по одному.

То и другое включено намеренно, а не только инструменты: MCP-спецификация действительно различает инструменты (действия, инициируемые моделью) и ресурсы (пассивные данные, адресуемые по URI), и этот сервер демонстрирует оба подхода, а не только тот, что показывают в большинстве туториалов.

Решения

Инструменты возвращают отфильтрованный текст, а не структурированный JSON. get_experience("PookiDevs") возвращает подходящую markdown-секцию в виде строки, а не разобранный объект с именованными полями. Для такой маленькой базы знаний (несколько файлов, один человек) изучение хорошо оформленной markdown-секции модели не менее полезно, чем разбор JSON-схемы, и это означает, что добавление новой записи об опыте в data/experience.md никогда не потребует править server.py.

Поиск работает на пересечении слов, а не на эмбеддингах. search_portfolio подсчитывает вхождения ключевых слов запроса по каждой секции, а не использует векторный индекс. У этого сервера нет других зависимостей, кроме самого пакета mcp — никаких ChromaDB, scikit-learn и моделей для скачивания, — что делает установку действительно быстрой и соответствует масштабу задачи (пара десятков коротких разделов, а не большой корпус). Если вам вместо этого нужен более «умный» поиск из соседнего проекта, search_portfolio — это небольшая функция, которую можно заменить на вызов app/rag.py внутри ask-meta-портфолио.

Файлы данных соответствуют содержимому ask-my-portfolio/data/. Оба проекта описывают одного и того же человека, поэтому data/about.md, experience.md, projects.md и skills.md здесь — это копии файлов из проекта ask-my-portfolio (плюс contact.md, который нужен только этому серверу). Держите их синхронизированными вручную при обновлении любого из них либо создайте символьную ссылку на data/ между проектами, если держите их рядом друг с другом.

Проверено

Команда python test_server.py «прогоняет» сервер через create_connected_server_and_client_session — настоящий MCP-протокол поверх потоков в памяти (list_tools, call_tool, list_resources, read_resource), то есть ровно то, что делает реальный клиент, а не просто прямые вызовы функций. Проверяются все 6 инструментов, все 5 ресурсов и граничный случай с фильтром без совпадений; текущий запуск проходит все 16 проверок без какой-либо настройки, без API-ключей и без сетевых запросов — всё это локальный markdown.

Структура проекта

server.py          FastMCP server: tools, resources, search
test_server.py      protocol-level integration test
data/
  about.md, experience.md, projects.md, skills.md, contact.md
requirements.txt, .gitignore

Запуск

Подключение к Claude Desktop или Claude Code описано в SETUP.md. Кратко:

pip install -r requirements.txt
python test_server.py     # prove it works, no client needed
python server.py          # starts the stdio MCP server

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Exposes a personal portfolio of projects, skills, and resume as callable tools for MCP-compatible AI assistants like Claude Desktop.
    4
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to retrieve a personal biography, skills, projects, and contact links through a read-only MCP server.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to discover and retrieve professional portfolio information including profile, experience, skills, projects, and contact details through MCP tools.
    -