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経験はありますか?」や「Audiキャンプで何を作りましたか?」と質問すると、アシスタントはツールを呼び出し、本人のデータから直接得た裏付けのある答えを返し、それを引用できます。

なぜこのプロジェクトか

MCPは生まれてからまだ1年ほどで、2026年にGitHubプロフィールを流し読みする技術者にとって、MCPは今でも現代的で切れ味のよいツール知識として映ります。オープンソースの「ポートフォリオをMCPサーバーにする」プロジェクトはすでにいくつか存在します(sohumsuthar/portfolio-mcp、Mrinank-Bhowmick/MCV)。これは同じパターンを踏襲しつつ、彼らのコードを再利用するのではなくAiman自身のデータに対してゼロから書かれたもので、高速で小規模、そして実用的なツールです。採用担当者のAIアシスタントは、履歴書パーサーに頼らず、このサーバーを直接参照できます。

Related MCP server: kazejev-personal

公開する内容

6つのツール:

  • get_about() - 概要、現在の役割、学歴

  • get_experience(role="") - 職務経験(任意で1つの役割に絞り込み可能)

  • get_projects(name="") - プロジェクトの解説(任意で1つのプロジェクトに絞り込み可能)

  • get_skills(category="") - スキル一覧(任意で1つのカテゴリに絞り込み可能)

  • get_contact() - メール、ポートフォリオサイト、LinkedIn、GitHub、所在地

  • search_portfolio(query) - 全コンテンツに対する自由形式の検索。呼び出し側がどのツールが該当するか分からない場合に使います

5つのリソース(生の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も、ダウンロードするモデルもなし)。インストールが本当に速く、問題規模(数ダースの短いセクションであって、巨大なコーパスではない)に一致します。仲間のリポジトリである ask-my-portfolio のよりスマートな検索方式を使いたい場合は、file_portfolio を app/rag.py を呼び出す小さな関数に丸ごと差し替えできます。

  • データファイルは 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)であり、単なるPython関数の直接呼び出しではありません。6つすべてのツール、5つすべてのリソース、マッチングなしフィルターの端のがチェックされます。現在の実行は、設定なし、APIキーなし、ネットワーク呼び出しなしで全16チェックをパーフェクトに通りました。ここにあるのはすべてローカルな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.
    -