Skip to main content
Glama
Portfolio MCP

Portfolio MCP

by aim-t

Portfolio MCP

Aiman Tariq의 실제 CV와 포트폴리오 콘텐츠를 AI 어시스턴트가 직접 조회할 수 있는 도구와 리소스로 노출하는 MCP(Model Context Protocol) 서버입니다. 이력서 PDF의 텍스트 추출이 만들어내는 결과에 의존하는 대신, 그녀의 데이터에서 근거 있는 답을 바로 얻을 수 있습니다.

이 서버를 Claude Desktop, Claude Code, 또는 Cursor에 추가하고 "Aiman에게 RAG 경험이 있나요?" 또는 "그녀는 아우디 캠프에서 무엇을 만들었나요?"라고 물어보세요. 어시스턴트가 도구를 호출해 그녀의 데이터에서 직접 근거 있는 답변을 얻고 인용할 수 있습니다.

이 프로젝트를 만든 이유

MCP는 나온 지 1년이 채 안 된 기술이며, 2026년에 GitHub 프로필을 훑어보는 기술에 종사하는 사람에게도 여전히 최신이고 날카로운 도구 지식으로 읽힙니다. "포트폴리오를 MCP 서버로" 만든 오픈소스 프로젝트는 이미 몇 개 존재합니다 (sohumsuthar/portfolio-mcp, Mrinank-Bhowmick/MCV). 이 프로젝트도 같은 패턴을 따르지만, 그들의 코드를 재사용하는 대신 Aiman의 데이터를 바탕으로 처음부터 작성했으며, 빠르고 작고 실질적으로 유용한 빌드입니다. 채용 담당자의 AI 어시스턴트가 이력서 파서를 신뢰하는 대신 이 서버를 직접 조회할 수 있기 때문입니다.

Related MCP server: kazejev-personal

제공하는 것

도구 6개:

  • get_about() - 개요, 현재 역할, 교육 이력

  • get_experience(role="") - 업무 경험, 필요하면 특정 역할로 필터링

  • get_projects(name="") - 프로젝트 소개, 필요하면 특정 프로젝트로 필터링

  • get_skills(category="") - 보유 스킬, 필요하면 특정 카테고리로 필터링

  • get_contact() - 이메일, 포트폴리오 사이트, LinkedIn, GitHub, 위치

  • search_portfolio(query) - 호출자가 특정 도구를 어디에 적용해야 할지 모를 때 사용하는 전체 자유 검색

리소스 5개는 원본 마크다운 파일이며 URI(portfolio://about, portfolio://experience, portfolio://projects, portfolio://skills, portfolio://contact)로 지정할 수 있습니다. 도구를 하나씩 호출하는 대신 지식 베이스 전체를 컨텍스트로 미리 로드하려는 클라이언트를 위한 방식입니다.

도구만이 아니라 두 방식 모두 의도적으로 포함했습니다. MCP는 도구(모델이 호출하는 액션)와 리소스(수동적이고 URI 주소 방식의 데이터)를 실제로 구분하며, 이 서버는 대부분의 튜토리얼이 보여 주는 한 가지만이 아니라 두 가지를 모두 시연합니다.

설계 결정

도구는 필터링된 텍스트를 반환하지, 구조화된 JSON을 반환하지 않습니다. get_experience("PookiDevs")는 필드 이름을 가진 파싱된 객체가 아니라, 일치하는 통해 크다. 이렇게 작은 지식 베이스(파일 몇 개, 사람 한 명)에서는 모델이 구조가 잘 갖춰진 markdown 섹션을 읽는 것이 JSON 스키마를 자체적인 것보다 최소한 쓰임새가 동일하며, data/experience.md 파일에 새 경력 항목을 추가해도 server.py 파일을 전혀 건드리지 않아도 된다는 뜻이 있습니다.

검색은 문장과 겹침이지 임베딩이 아닙니다. search_portfolio는 다른 섹션에 포함된 쿼리 키워드를 수はない고 세는 방식으로 동작합니다. 이 서버는 mcp 패키지 이외에 다른 의존성이 전혀 없습니다. ChromaDB, scikit-learn 불타고, 다운로드가 필요한 모델 전부도 없기 때문에 설치가 매우 빠른 수밖에 없고, 문제의 규모 (대규모 문집이 아니라 수십 개의 짧은 섹션) 규모CM에도 알맞습니다. 비주얼이 아닌 더 스마트한 검색이 필요하다면, search_portfolio는 ask-my-portfolio의 app/rag.py호출로 맞아들일 수 있게 작은 함수 하나로 바꿔쓸 수 있는 것입니다.

데이터 파일은 ask-my-portfolio/data/를 미러링 일체형입니다. 두 프로젝트 모두 같은 사람을 소개하므로 이 저장소의 data/about.md, data/experience.md, data/projects.md, data/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개 검사를 준비만으로 통과합니다. 모든 것이 로컬 markdown으로 이루어져 있어 별도 설정, API 키, 네트워크 통신 등이 필요하지 않은 것입니다.

프로젝트 구조

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
    C
    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.
    -