Skip to main content
Glama
mrcodefrost

daksh-mcp

by mrcodefrost

daksh-mcp

An MCP (Model Context Protocol) server that exposes a professional profile — projects, work experience, skills, and live GitHub activity — as tools any MCP-compatible AI client (Claude Desktop, Claude Code, etc.) can call.

Connect it to Claude Desktop and ask things like "What fintech projects has this person shipped?" or "Summarize their experience at [company]" — the client calls these tools and answers from real, structured data instead of a resume PDF.

Tools exposed

Tool

Input

What it does

get_profile

(none)

Name, title, summary, location, contact/social links

list_projects

tag?, limit?

Projects, optionally filtered by tag (e.g. "fintech")

get_experience

company?

Work history, optionally filtered by company

get_skills

category?

Skills grouped by category (languages, backend, cloud, ...)

get_github_activity

username?, limit?

Live call to the GitHub REST API for recently updated public repos

All inputs are validated with Zod schemas.

Related MCP server: personal-context

Project structure

data/profile.json       Static source data — replace this with your own info
src/schema.ts           Zod schemas for the profile data shape
src/data.ts             Loads + validates profile.json at startup
src/github.ts           GitHub REST API client (fetch-based, optional token)
src/tools/*.ts          One file per tool: input schema + handler
src/index.ts            Wires everything into an McpServer over stdio

Setup

npm install
cp .env.example .env   # optional: add a GITHUB_TOKEN to raise API rate limits
npm run build

Then edit data/profile.json with your own projects, experience, and skills.

Running & testing locally

Option A — MCP Inspector

npm run build
npx @modelcontextprotocol/inspector node dist/index.js

Opens a browser UI to see the tool list and call each tool with arbitrary arguments.

Option B — Claude Desktop

Add this server to Claude Desktop's config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "daksh-mcp": {
      "command": "node",
      "args": ["ABSOLUTE_PATH_TO_REPO/dist/index.js"]
    }
  }
}

Restart Claude Desktop and ask it questions about the profile in data/profile.json.

Option C — Claude Code

Claude Code can attach to the same server via claude mcp add, using the same command/args as above.

Environment variables

See .env.example. GITHUB_TOKEN is optional — it raises the GitHub API rate limit from 60/hr (unauthenticated) to 5000/hr. The server works without it.

Available Tools

5 tools
get_experienceGet ExperienceA

Returns Daksh's work history: company, title, dates, summary, and achievements. Optionally filter to a single company.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyNoFilter to a specific company name (case-insensitive, partial match). Omit to return full work history.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It communicates that the operation is a read-only retrieval, lists output content, and notes the optional filtering behavior. It doesn't mention edge cases like missing experience or unknown company names, but this is adequate for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, well-structured sentences with no filler. The key action and return fields are front-loaded, and the optional filter is stated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter read-only tool with no output schema and no annotations, the description covers the essential invocation context: what is returned, from whom, and how filtering works. It could go slightly further by describing the response shape or ordering, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'company' parameter thoroughly, including case-insensitive partial match behavior. The description only restates the optional filtering concept without adding significant new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Returns' with a clear resource ('Daksh's work history') and enumerates the exact fields included: company, title, dates, summary, and achievements. This clearly distinguishes it from siblings like get_profile and list_projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states that the tool returns work history and optionally filters to a single company, giving the agent a solid sense of when to use it. It doesn't explicitly name sibling tools or mention when not to use it, but the domain is obvious enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_github_activityGet GitHub ActivityA

Fetches a live list of recently updated public repositories for a GitHub user via the GitHub REST API (bonus tool demonstrating a real external API integration, not static profile data). Defaults to Daksh's own GitHub username.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of repositories to return. Defaults to 5.
usernameNoGitHub username to look up. Defaults to Daksh's username from the profile data if omitted.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the call is live, external, and returns public repositories, and that it defaults to Daksh's username. However, it does not mention rate limits, failure behavior, or the shape of the returned repository list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, with the core purpose front-loaded. The parenthetical about being a 'bonus tool' is somewhat meta and not essential for invocation, but it does help explain why this tool exists alongside static profile tools.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only external API fetch with 0 required parameters and full schema coverage, the description covers purpose, source, liveness, and default behavior. With no output schema or annotations, a bit more detail about the returned repository fields would strengthen it, but it is largely sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both 'limit' and 'username' are documented in the schema, including defaults. The description adds only the contextual detail that the username defaults to Daksh's, which is already in the schema, so no significant value is added beyond the structured input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Fetches a live list of recently updated public repositories for a GitHub user'. It clearly distinguishes itself from the sibling profile/experience/static-data tools by emphasizing 'live' and 'not static profile data'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context that this is for live external GitHub API data rather than static profile data, which implies when to use it over siblings. It does not explicitly name alternative tools or formalize exclusions, but the 'not static profile data' phrasing gives practical routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profileGet ProfileA

Returns Daksh's professional identity: name, title, summary, location, and contact/social links. Use this first for any 'who is this person' style question.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral transparency burden. It clearly states that the tool returns identity information, implying a read-only operation, but it does not explicitly mention response format, error behavior, or side-effect absence. The risk is low for a simple profile getter, and the return content is specified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core action and content are front-loaded, and the usage note is directly actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, the description carries the responsibility of indicating what the tool returns. It lists the main identity fields and provides usage guidance, which is sufficient for this simple tool. Some minor specifics like exact link names or formatting are omitted but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to explain parameter meaning. The baseline of 4 applies because there is no input complexity for the agent to navigate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Returns'), names the exact resource ('Daksh's professional identity'), and enumerates the content: name, title, summary, location, and contact/social links. This clearly differentiates it from sibling tools like list_projects, get_experience, get_skills, and get_github_activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use this tool first for any 'who is this person' question, providing a clear usage context. It does not explicitly state when not to use it or name alternative tools, but the sibling set makes the boundary obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_skillsGet SkillsA

Returns Daksh's skills grouped by category (languages, backend, cloud, ai-tooling, etc). Optionally filter to one category.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter to a specific skill category, e.g. 'languages', 'backend', 'cloud', 'ai-tooling'. Omit to return all categories.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses that results are grouped by category and that filtering is optional, which is useful. However, it does not describe response format, error behavior, or whether the category list is exhaustive, leaving some behavioral detail to inference for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that front-loads the core purpose and immediately follows with the filtering option. No redundant wording or filler. The 'etc.' is slightly vague but acceptable in context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no annotations or output schema, the description sufficiently explains what the tool returns and how to invoke it. It could briefly mention that the output is a grouped structure, but 'grouped by category' already conveys that. Overall, an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the category parameter. The description adds no new meaning beyond restating the optional filter, which is the baseline expected when the schema carries full parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Returns') and resource ('Daksh's skills') with a clear grouping behavior. It distinguishes itself from sibling tools like get_profile and list_projects by focusing on skills, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: whenever an agent needs Daksh's skills. It provides no exclusion or alternative because none of the sibling tools cover skills. The optional filter guidance adds context for narrowing the call, though it does not explicitly compare against alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList ProjectsA

Lists Daksh's projects, optionally filtered by tag (e.g. 'fintech') and capped by limit. Each project includes description, role, tech stack, highlights, and links.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter projects by tag, e.g. 'fintech', 'ai-tooling', 'backend'. Case-insensitive. Omit to return all projects.
limitNoMaximum number of projects to return. Defaults to all matching projects.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the burden of behavioral disclosure. It does disclose the output shape ('Each project includes description, role, tech stack, highlights, and links') and the optional filters. However, it does not mention ordering, behavior when no projects match, or whether the list follows any deterministic order, leaving some traits to inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The main action 'Lists Daksh's projects' is front-loaded, and each sentence adds a distinct piece of information: optional filters and the returned fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with two optional parameters and no output schema, the description is nearly complete. It enumerates the fields returned in each project and mentions both optional filters. Minor gaps like explicit ordering or empty-result behavior keep it from a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both 'tag' and 'limit' already have descriptive text in the schema. The tool description only adds a marginal example tag value ('fintech') and refers to limit as a cap, which does not substantially exceed the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Lists' with a clear resource 'Daksh's projects', and immediately specifies optional filtering by tag and capping by limit. This clearly distinguishes it from sibling tools like get_profile, get_experience, get_skills, and get_github_activity, which cover different domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this is the tool for retrieving Daksh's projects, optionally narrowed by tag and limit. It does not explicitly name alternatives or exclusion conditions, but the domain difference from the listed siblings makes selection unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedget_experience
    • First observedget_github_activity
    • First observedget_profile
    • First observedget_skills
    • First observedlist_projects

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool maps to a distinct facet of Daksh's professional identity: profile, projects, experience, skills, and GitHub activity. There is no meaningful overlap between the tools, and the descriptions reinforce their unique purposes.

Naming Consistency4/5

The naming pattern is mostly consistent with get_* for singular resources (get_profile, get_experience, get_skills, get_github_activity). The one deviation is list_projects, which uses list_ instead of get_, but it remains clear and predictable.

Tool Count5/5

Five tools is well-scoped for a personal professional profile server. Each tool serves a clear purpose without redundancy or bloat.

Completeness5/5

The tool set covers the core sections of a professional identity: bio, projects, work history, skills, and live GitHub activity. Contact and social links are included in the profile, so there are no obvious missing operations for the server's stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes a person's structured professional profile as MCP tools, enabling Claude and other MCP clients to answer questions about that person based on real data.
    3 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Aggregates your digital footprint (GitHub, blogs, resume) into a single AI-readable profile and exposes it via MCP tools so AI agents can query your context live.
    1
    MIT
  • 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.
    -