Cameron Rye Portfolio MCP Server
Cameron Rye's blog, projects, resume, and live site stats, plus contact and newsletter tools.
我该使用它吗
质量与安全性
发现(5)
- LOW在 search_posts 中
- LOW在 get_post 中
- LOW在 list_projects 中
- LOW在 get_project 中
- LOW在 get_about 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"portfolio": {
"url": "https://rye.dev/mcp"
}
}
}远程端点
https://rye.dev/mcpstreamable-http它能做什么
工具清单
工具(12)
🟢list_posts(limit)
Return up to N most recent published blog posts.
输入模式
{
"type": "object",
"properties": {
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"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#"
}输出模式
{
"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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"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.
输入模式
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"reading",
"finished",
"abandoned"
]
}
},
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/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.
输入模式
{
"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#"
}输出模式
{
"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.
输入模式
{
"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#"
}输出模式
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"message": {
"type": "string"
}
},
"required": [
"success",
"message"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据