Bo Kendell — Portfolio

Bo Kendell's portfolio: projects, writing, work history, resume, and live activity.

Should I use this

Quality & Safety

B
Description quality
89%
Schema completeness
60%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • LOWTool 'get_project' description lacks action verbin get_project
  • LOWTool 'get_post' description lacks action verbin get_post
  • LOWTool 'get_experience' description lacks action verbin get_experience

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~751Tokens (tool definitions)
~400 BTypical response size
Moderate attention impact (0.59% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "portfolio": {
      "url": "https://bokendell.com/mcp"
    }
  }
}

Remote endpoints

https://bokendell.com/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_projects(lifecycle)

Return every portfolio project (title, brief description, lifecycle, tech stack). Use get_project for the full body + screenshots.

Input Schema

{
  "type": "object",
  "properties": {
    "lifecycle": {
      "description": "Filter by lifecycle. Omit to return all.",
      "type": "string",
      "enum": [
        "building",
        "shipping",
        "retired"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_project(slug)

Full project detail — full description, tech stack, links, status.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "description": "Project slug (e.g. 'warm-machine').",
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_posts

Published posts, newest first. Returns metadata only — call get_post for the full body.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_post(slug)

Full post metadata by slug (MDX body is served by the app routes).

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "description": "Post slug.",
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_experience(type)

Employment, education, projects, certifications, and awards — the full timeline.

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "employment",
        "education",
        "project",
        "certification",
        "award"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_profile

Bo's name, bio, current role, social links. The canonical 'who is this person' summary.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_tech_stack

Technologies Bo works with, grouped by category.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_activity

Current GitHub contributions + LeetCode stats. Changes throughout the day — call fresh each time rather than caching.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools