Bijon Portfolio MCP Server
# š 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
Scored across 6 tools
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.
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.
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.
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.