utkarsh21123

about-utkarsh-mcp

Community utkarsh21123
Updated

about-utkarsh-mcp

An MCP (Model Context Protocol) server that exposes information about Utkarsh —bio, skills, work experience, and portfolio projects — to any MCP-compatible client(Claude, Claude Code, ChatGPT, Codex, etc.).

It ships two transports from one shared server implementation:

Transport File Used by
stdio src/transports/stdio.ts Local clients that launch the server as a subprocess: Claude Desktop, Claude Code, Codex CLI
Streamable HTTP (remote) src/transports/http.ts Remote clients that connect over a URL: ChatGPT connectors, remote Claude/Claude Code, any HTTP-based MCP client

The remote HTTP transport is protected with OAuth 2.0, including Dynamic ClientRegistration (DCR, RFC 7591) — so a new MCP client can self-register and connectwithout any manual "create an API key" step, exactly as the MCP Authorization specexpects for remote servers.

Architecture

src/
  data/profile.ts        # Single source of truth: bio, skills, experience, projects
  mcpServer.ts            # Shared MCP server: tools + one resource, used by both transports
  transports/
    stdio.ts               # Local subprocess transport
    http.ts                 # Remote Streamable HTTP transport (OAuth-protected)
  oauth/
    store.ts                # In-memory client/auth-code store
    router.ts               # DCR, authorize (PKCE), token, discovery metadata endpoints

MCP tools exposed

  • get_bio — name, title, location, experience summary, links
  • get_skills — skills by category (languages/frontend/backend/databases/infra/spoken)
  • get_experience — work history
  • list_projects — all portfolio projects (summary)
  • get_project_details — full detail for one named project
  • get_contact — how to reach out

Plus one resource: profile://utkarsh/full (the whole profile as JSON).

OAuth / DCR flow (remote HTTP transport)

  1. Client discovers the server via GET /.well-known/oauth-protected-resource(RFC 9728) and GET /.well-known/oauth-authorization-server (RFC 8414).
  2. Client dynamically registers itself: POST /register (RFC 7591) — nopre-shared client id/secret needed.
  3. Client runs the standard Authorization Code + PKCE flow: GET /authorize(a one-click "Approve" page — there's no personal login here, just consentto read a public profile) → POST /token.
  4. Client calls POST/GET/DELETE /mcp with Authorization: Bearer <token>.

This was verified end-to-end (registration → authorize → token exchange →authenticated initialize and tools/call) during development.

Local development

npm install
npm run build

# Local/stdio mode (what Claude Desktop / Claude Code / Codex CLI use)
npm run start:stdio

# Remote/HTTP mode (what ChatGPT / remote clients use)
npm run start:http
# or, to test without OAuth while developing:
REQUIRE_AUTH=false npm run start:http

Deployment (remote HTTP server)

The included Dockerfile builds a production image; render.yaml is a one-clickblueprint for Render, but this deploys the same way onRailway, Fly.io, or any container host.

Render (recommended, free tier available)

  1. Push this repo to GitHub.
  2. On Render: New → Blueprint, point it at the repo — render.yaml configureseverything (including generating a random JWT_SECRET).
  3. Once deployed, set PUBLIC_BASE_URL to the assigned https://<app>.onrender.comURL in the service's environment settings and redeploy, so OAuth metadataadvertises the correct absolute URLs.
  4. Your MCP endpoint is https://<app>.onrender.com/mcp.

Any other Docker host (Railway, Fly.io, a VPS, etc.)

docker build -t about-utkarsh-mcp .
docker run -p 3000:3000 \
  -e JWT_SECRET=$(node -e "console.log(require('crypto').randomBytes(48).toString('hex'))") \
  -e PUBLIC_BASE_URL=https://your-deployed-domain.example.com \
  about-utkarsh-mcp

Connecting clients

Claude Desktop / Claude Code (local, stdio)

Add to your MCP config (Claude Desktop: claude_desktop_config.json; Claude Code:.mcp.json or claude mcp add):

{
  "mcpServers": {
    "about-utkarsh": {
      "command": "node",
      "args": ["/absolute/path/to/about-utkarsh-mcp/dist/transports/stdio.js"]
    }
  }
}

Or with Claude Code's CLI:

claude mcp add about-utkarsh -- node /absolute/path/to/dist/transports/stdio.js

Claude (remote, HTTP + OAuth)

In Claude's connector/MCP settings, add a remote MCP server and give it thedeployed URL's /mcp endpoint, e.g.:

https://about-utkarsh-mcp.onrender.com/mcp

Claude will auto-discover the OAuth metadata, register itself via DCR, and walkyou through the one-click approval — no manual credentials required.

ChatGPT (connectors / remote MCP)

In ChatGPT's connector settings, add a custom connector pointing at the samehttps://about-utkarsh-mcp.onrender.com/mcp URL. ChatGPT performs the samediscovery → DCR → OAuth flow described above.

Codex

  • Codex CLI (local): configure it the same way as Claude Code above — pointit at node dist/transports/stdio.js.
  • Codex web/cloud (remote): use the deployed /mcp URL the same way as theChatGPT connector above.

Notes on the OAuth implementation

  • Storage for registered clients/auth codes is in-memory (src/oauth/store.ts)— fine for an assessment/demo; swap in a real database for production soregistrations survive restarts and multiple instances.
  • Access tokens are short-lived HS256 JWTs (1 hour). There's no user login screenbecause the "resource" being protected is a public profile with no per-userdata — the approval screen exists to satisfy the OAuth consent step the MCPspec expects, not to gate a private account.
  • PKCE (RFC 7636) is enforced for public clients (token_endpoint_auth_method: none),which is what DCR-registered MCP clients typically use.

Keeping the data current

Everything the tools return lives in src/data/profile.ts. Update that file andredeploy to change what the server tells clients about Utkarsh.

about-utkarsh-mcp

MCP Server · Populars

MCP Server · New

    livecontext-ai

    LiveContext

    The AI automation platform, self-hosted. Describe the job in chat and LiveContext builds it: readable workflows, scoped AI agents, and small apps your team uses. Chat, Workflow, Agent and App on one canvas.

    Community livecontext-ai
    timescale

    rsigma

    A complete Sigma detection engineering toolkit: parser, linter, evaluator, correlation engine, conversion framework, streaming daemon, MCP and LSP servers :crab:

    Community timescale
    Agent360dk

    Browser MCP by Agent360

    Drive your real, logged-in Chrome from any AI agent (Claude Code, Cursor, VS Code) — works where headless dies. Reads emailed login codes from your Gmail, solves CAPTCHAs, 34 tools. MIT, local-only.

    Community Agent360dk
    devlint

    GitWand

    The Git client that actually resolves conflicts — 10 deterministic patterns auto-resolve the trivial 95%, full trace on the rest. Native (Tauri 2 + Rust), free, MIT.

    Community devlint
    BETAER-08

    amdb

    Turn your codebase into AI context — entirely on your machine. Single-binary MCP server with AST parsing, call graph, and local embeddings.

    Community BETAER-08