Skip to main content
Glama
jason-bourne-gg

my-mcp-server

README.md
# my-mcp-server

[![CI](https://github.com/jason-bourne-gg/my-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/jason-bourne-gg/my-mcp-server/actions/workflows/ci.yml)

An [MCP](https://modelcontextprotocol.io) server that exposes **Aniket Charjan's
resume as a queryable API for AI assistants**. Add it to Claude Desktop, Cursor,
or any MCP client and ask *"What did Aniket do at BrowserStack?"* or *"Has he
shipped anything with WebRTC?"* — answered from structured, sourced data instead
of guesswork.

![A live session: has_skill and search_background answered with sourced evidence](https://raw.githubusercontent.com/jason-bourne-gg/my-mcp-server/main/docs/session.svg)

*Real output from the server — `has_skill` returns evidence rather than a yes/no,
and `search_background` cites the project or skill group each match came from.*

It implements all three MCP primitives — **Tools**, **Resources**, and
**Prompts** — so it works as a complete reference server, not just a tool dump.

## Tools

| Tool | Returns |
| --- | --- |
| `get_profile` | Name, current role, location, summary, links |
| `get_experience` | Full work history with highlights and per-role stack |
| `get_projects` | All side projects |
| `get_project(name)` | One project by name (partial match) |
| `get_skills` | Skills grouped by category |
| `has_skill(skill)` | Whether he has a skill **+ supporting evidence** |
| `get_highlights` | Headline career metrics |
| `get_education` | Education history |
| `get_contact` | Contact details and availability |
| `get_resume` | The entire resume as one Markdown document |
| `search_background(query)` | Free-text AND-search across experience, projects, skills |

## Resources

| URI | Content |
| --- | --- |
| `resume://full` | The full resume as Markdown |
| `resume://profile` | Profile summary as JSON |
| `resume://all` | All structured data as JSON |

## Prompts

| Prompt | Purpose |
| --- | --- |
| `screen_for_role(job_description)` | Score Aniket's fit for a role, citing evidence |
| `draft_outreach(company, role?)` | Draft a tailored recruiter outreach message |

## Use it

No install and no npm account needed — npm can run it straight from this repo:

```bash
npx -y github:jason-bourne-gg/my-mcp-server
```

That clones the repo, builds it, and starts the server on stdio.

Or clone it yourself if you want to poke at the source:

```bash
git clone https://github.com/jason-bourne-gg/my-mcp-server.git
cd my-mcp-server
npm install && npm run build
```

### Claude Desktop

Add to `claude_desktop_config.json` (Settings → Developer → Edit Config), using
the absolute path to the built file:

```json
{
  "mcpServers": {
    "aniket": {
      "command": "node",
      "args": ["/absolute/path/to/my-mcp-server/dist/index.js"]
    }
  }
}
```

Restart Claude Desktop, then ask: *"Using the aniket tools, what's his experience with LLMs?"*

### Cursor

Add the same block to `~/.cursor/mcp.json` (or Settings → MCP).

To skip the build step entirely, point the client at the repo instead:

```json
{
  "mcpServers": {
    "aniket": {
      "command": "npx",
      "args": ["-y", "github:jason-bourne-gg/my-mcp-server"]
    }
  }
}
```

## Develop

```bash
npm install
npm run build     # tsc → dist/
npm start         # run the built server on stdio
```

Smoke-test over stdio without a client:

```bash
printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
  '{"jsonrpc":"2.0","id":3,"method":"resources/list","params":{}}' \
  '{"jsonrpc":"2.0","id":4,"method":"prompts/list","params":{}}' \
  | node dist/index.js
```

All content lives in `src/data.ts` — edit there and rebuild.

## How it works

A stdio MCP server built on
[`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/typescript-sdk).
It registers the `tools`, `resources`, and `prompts` capabilities and handles the
corresponding `list` / `call` / `read` / `get` requests. `search_background` and
`has_skill` run over a flattened index of every experience highlight, project, and
skill, returning each hit with its source. Tool handling is wrapped so a single
bad request can never crash the server, and `SIGINT`/`SIGTERM` shut it down
cleanly.

## License

[MIT](LICENSE) © Aniket Ravindra Charjan

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct piece of information about the individual, with clear boundaries between contact, education, experience, projects, skills, and search. No two tools overlap in purpose.

Naming Consistency4/5

Most tools follow a consistent get_<noun> pattern, but has_skill and search_background deviate from this convention, introducing minor inconsistency.

Tool Count5/5

With 11 tools, the server covers a wide range of personal and professional details without being excessive. Each tool serves a distinct informational need.

Completeness5/5

The set covers all major aspects of a personal profile: contact, education, experience, skills, projects, resume, and search. It provides comprehensive read access to the individual's background.

Maintenance

ActivityMaintained
ResponsivenessNo issues