Cameron Rye Portfolio MCP Server

Cameron Rye's blog, projects, resume, and live site stats, plus contact and newsletter tools.

Sollte ich dies verwenden

Qualität und Sicherheit

B
Qualität der Beschreibung
83%
Vollständigkeit des Schemas
62%
Qualität der Benennung
100%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (5)

  • LOWTool 'search_posts' description lacks action verbin search_posts
  • LOWTool 'get_post' description lacks action verbin get_post
  • LOWTool 'list_projects' description lacks action verbin list_projects
  • LOWTool 'get_project' description lacks action verbin get_project
  • LOWTool 'get_about' description lacks action verbin get_about

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,313Tokens (Tool-Definitionen)
~1.8 KBTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.81% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "portfolio": {
      "url": "https://rye.dev/mcp"
    }
  }
}

Remote-Endpunkte

https://rye.dev/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (12)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢list_posts(limit)

Return up to N most recent published blog posts.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "posts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "slug",
          "title",
          "description",
          "date",
          "tags"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "posts"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_posts(query)

Case-insensitive substring match across title, description, and tags. Returns up to 10 matches.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "matches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "slug",
          "title",
          "description",
          "date",
          "tags"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "matches"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_site(query, limit)

Semantic (vector similarity) search across blog posts and projects — the same Cloudflare Vectorize retrieval the Ask chatbot uses, without the LLM call. Broader than search_posts (which only does exact substring matching on title/description/tags): finds conceptually related content even when the query words never appear verbatim. Returns scored chunks with deep-link URLs.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "limit": {
      "default": 5,
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "snippet": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "url",
          "score",
          "snippet"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "results"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡get_post(slug)

Return the full markdown body and frontmatter of a post by slug.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "frontmatter": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "body": {
      "type": "string"
    },
    "url": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "frontmatter",
    "body",
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢list_projects

Return all portfolio projects with their slug, title, and short description.

Eingabe-Schema

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

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "projects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title",
          "description"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "projects"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_project(slug)

Return the full markdown body and frontmatter of a project by slug.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "frontmatter": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "body": {
      "type": "string"
    },
    "url": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "frontmatter",
    "body",
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_about

Return a short bio about Cameron Rye, the portfolio owner.

Eingabe-Schema

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

Return what Cameron is currently working on, learning, building, reading, and up to in life — the live /now page sections.

Eingabe-Schema

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

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "sections": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "body": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "status"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "url",
    "sections"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_reading(status)

Return Cameron's reading list — books currently reading, finished, or abandoned, with notes. Filter by status if given.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "reading",
        "finished",
        "abandoned"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "books": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "started": {
            "type": "string"
          },
          "finished": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          }
        },
        "required": [
          "title",
          "author",
          "status"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "url",
    "books"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_pulse

Return live, PII-free operational stats for rye.dev: recent Core Web Vitals p75s, 30-day pageviews, trailing-30d uptime %, top-reacted pages, and the last deploy. Same data the homepage pulse strip shows.

Eingabe-Schema

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

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "pulse": {
      "type": "object",
      "properties": {
        "asOf": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "webVitals": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "metric": {
                "type": "string"
              },
              "p75": {
                "type": "number"
              },
              "unit": {
                "type": "string"
              },
              "rating": {
                "type": "string"
              }
            },
            "required": [
              "metric",
              "p75",
              "unit",
              "rating"
            ],
            "additionalProperties": false
          }
        },
        "pageviews": {
          "type": "object",
          "properties": {
            "days": {
              "type": "number"
            },
            "total": {
              "type": "number"
            },
            "series": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          },
          "required": [
            "days",
            "total",
            "series"
          ],
          "additionalProperties": false
        },
        "uptime": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "pct": {
                  "type": "number"
                },
                "avgMs": {
                  "type": "number"
                },
                "days": {
                  "type": "number"
                }
              },
              "required": [
                "pct",
                "avgMs",
                "days"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "topReacted": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              },
              "count": {
                "type": "number"
              }
            },
            "required": [
              "path",
              "count"
            ],
            "additionalProperties": false
          }
        },
        "deploy": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "sha": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "branch": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string"
                },
                "buildSeconds": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "completedAt": {
                  "type": "number"
                }
              },
              "required": [
                "sha",
                "message",
                "branch",
                "status",
                "buildSeconds",
                "completedAt"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "asOf",
        "webVitals",
        "pageviews",
        "uptime",
        "topReacted",
        "deploy"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "url",
    "pulse"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟡submit_contact(name, email, subject, message)

Send Cameron a message through the site contact form. Subject to the same validation and per-IP rate limits as the contact form itself.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "subject": {
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "name",
    "email",
    "subject",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "success",
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
⚪subscribe_newsletter(email, source)

Subscribe an email address to the newsletter. Sends a confirmation email; the subscription only becomes active once confirmed. Same validation and per-IP rate limits as the signup form.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "source": {
      "type": "string",
      "maxLength": 50
    }
  },
  "required": [
    "email"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "success": {
      "type": "boolean"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "success",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet12 Tools
verifiziertVersion nicht aufgezeichnet12 Tools