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
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools