Skip to main content
Glama
Bijon2002

Bijon Portfolio MCP Server

by Bijon2002
README.md
# šŸ”Œ Bijon Portfolio MCP Server

A Node.js & TypeScript-based **Model Context Protocol (MCP)** server that exposes my resume, portfolio projects, certifications, skills, and live GitHub repositories as tools. This allows AI assistants (like Claude Desktop) to query my professional background, projects, and experiences dynamically using natural language.

---

## šŸš€ Features & Exposed Tools

The server registers the following tools with the MCP client:

1. **`getProfile`**: Exposes core bio, contact information, education history, work/internship experiences, volunteering, and social links.
2. **`getProjects`**: Lists curated portfolio projects (both professional and academic), with support for filtering by specific tech stacks (e.g. React, Laravel, Node.js).
3. **`getSkills`**: Lists structured technical skills categorized by programming languages, frameworks, and developer tools.
4. **`getCertificates`**: Lists professional and academic certifications (e.g., Salesforce AI Associate, Postman Expert, etc.).
5. **`getGithubRepos`**: Performs an authenticated fetch to the GitHub API to return a live list of my active public repositories, showing updated dates, stars, and languages.
6. **`askAboutBijon`**: A free-text search tool allowing natural language Q&A across the entire portfolio dataset (e.g., *"What did he do at FAITE?"* or *"Summarize his research project at SLIIT"*).

---

## šŸ› ļø Tech Stack

- **Runtime**: Node.js (v18+)
- **Language**: TypeScript
- **Protocol**: `@modelcontextprotocol/sdk` (Stdio transport)
- **JSON Data Layer**: Custom file-based single source of truth for resume info.

---

## šŸ“¦ Getting Started

### Prerequisites

- Node.js installed (LTS recommended)
- A GitHub Personal Access Token (`GITHUB_TOKEN`) with **read-only** public repository access (recommended to avoid API rate limits).

### Setup

1. **Clone the repository:**
   ```bash
   git clone https://github.com/Bijon2002/Build-Own-MCP.git
   cd Build-Own-MCP
   ```

2. **Install dependencies:**
   ```bash
   npm install
   ```

3. **Configure Environment Variables:**
   Create a `.env` file in the root directory (or copy from the template):
   ```env
   GITHUB_TOKEN=your_github_personal_access_token_here
   ```

4. **Build the project:**
   ```bash
   npm run build
   ```

---

## šŸ–„ļø Local Integration (Claude Desktop)

To add this server to your local **Claude Desktop** client, edit the configuration file:

1. Open your Claude Desktop config file:
   - On Windows: `%APPDATA%\Claude\claude_desktop_config.json`
   - On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

2. Add the following definition under the `mcpServers` property:

```json
{
  "mcpServers": {
    "bijon-portfolio": {
      "command": "npx",
      "args": [
        "-y",
        "tsx",
        "A:/Build Own MCP/src/server.ts"
      ],
      "env": {
        "GITHUB_TOKEN": "your_github_token_here"
      }
    }
  }
}
```

3. **Restart Claude Desktop**. You will now see the tool icon (šŸ”Œ) with my portfolio tools active!

---

## šŸ“‚ Project Structure

```
ā”œā”€ā”€ data/
│   ā”œā”€ā”€ portfolio-data.json   # Bio, education, experience, skills, socials
│   ā”œā”€ā”€ projects.json         # Curated projects list
│   └── certificates.json     # Certifications list
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ lib/
│   │   ā”œā”€ā”€ github.ts         # Live GitHub API query helper
│   │   └── loadData.ts       # JSON loader helper
│   ā”œā”€ā”€ tools/
│   │   ā”œā”€ā”€ askAboutBijon.ts  # Free-text Q&A tool
│   │   ā”œā”€ā”€ getCertificates.ts
│   │   ā”œā”€ā”€ getGithubRepos.ts
│   │   ā”œā”€ā”€ getProfile.ts
│   │   ā”œā”€ā”€ getProjects.ts
│   │   └── getSkills.ts
│   └── server.ts             # Entry point (MCP server & stdio setup)
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ package.json
└── README.md
```

---

## šŸ‘Øā€šŸ’» Author

**Marislin Bijosilin (Bijon)**
- Website: [bijon.dev](https://bijon.dev)
- GitHub: [@Bijon2002](https://github.com/Bijon2002)
- LinkedIn: [in/marisilin-bijosilin](https://linkedin.com/in/marisilin-bijosilin)

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource: profile, projects, skills, certificates, GitHub repos, and a free-text Q&A search. The Q&A tool is clearly a query interface, separate from the structured getters, so there is no overlap or ambiguity.

Naming Consistency4/5

Five of six tools follow the getX pattern (getProfile, getProjects, getSkills, getCertificates, getGithubRepos). The exception is askAboutBijon, which uses a different verb, but it is still descriptive and the pattern is otherwise highly consistent.

Tool Count5/5

Six tools is a well-scoped number for a portfolio server. Each tool covers a major aspect of the portfolio (profile, projects, skills, certifications, GitHub repos, and general queries), and there is no bloat or redundancy.

Completeness5/5

The tool set comprehensively covers the domain of a personal portfolio. It provides structured access to all major sections (profile, projects, skills, certificates, live GitHub repos) plus a flexible Q&A tool for anything not explicitly covered. No obvious gaps exist for a read-only portfolio use case.

Maintenance

ActivitySlowing
ResponsivenessNo issues