Cameron Rye Portfolio MCP Server
by rye.dev · remote · no sign-in to list tools · v1.3.0 · published by dev.rye
Cameron Rye's blog, projects, resume, and live site stats, plus contact and newsletter tools.
12 tools: 1 do something that can't be undone, 1 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things1Claude Code: ask: see these tools
- Only reads10Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http portfolio https://rye.dev/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Can't be undone 1Claude Code: ask
submit_contactSend Cameron a message through the site contact form.No findings
Why it is in this group
- The name "submit_contact" says "submit": a word for a change.
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Send Cameron a message through the site contact form. Subject to the same validation and per-IP rate limits as the contact form itself.
Changes things 1Claude Code: ask
subscribe_newsletterSubscribe an email address to the newsletter.No findings
Why it is in this group
- The name "subscribe_newsletter" says "subscribe": a word for a change.
Description, as the server wrote it 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.
Only reads 10Claude Code: allow
get_aboutReturn a short bio about Cameron Rye, the portfolio owner.No findings
Why it is in this group
- The name "get_about" says "get": a word for reading.
Description, as the server wrote it Return a short bio about Cameron Rye, the portfolio owner.
get_nowReturn what Cameron is currently working on, learning, building, reading, and up to in life — the live /now page sections.No findings
Why it is in this group
- The name "get_now" says "get": a word for reading.
Description, as the server wrote it Return what Cameron is currently working on, learning, building, reading, and up to in life — the live /now page sections.
get_postReturn the full markdown body and frontmatter of a post by slug.No findings
Why it is in this group
- The name "get_post" says "get": a word for reading.
Description, as the server wrote it Return the full markdown body and frontmatter of a post by slug.
get_projectReturn the full markdown body and frontmatter of a project by slug.No findings
Why it is in this group
- The name "get_project" says "get": a word for reading.
Description, as the server wrote it Return the full markdown body and frontmatter of a project by slug.
get_pulseReturn 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.No findings
Why it is in this group
- The name "get_pulse" says "get": a word for reading.
Description, as the server wrote it 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.
get_readingReturn Cameron's reading list — books currently reading, finished, or abandoned, with notes.No findings
Why it is in this group
- The name "get_reading" says "get": a word for reading.
Description, as the server wrote it Return Cameron's reading list — books currently reading, finished, or abandoned, with notes. Filter by status if given.
list_postsReturn up to N most recent published blog posts.No findings
Why it is in this group
- The name "list_posts" says "list": a word for reading.
Description, as the server wrote it Return up to N most recent published blog posts.
list_projectsReturn all portfolio projects with their slug, title, and short description.No findings
Why it is in this group
- The name "list_projects" says "list": a word for reading.
Description, as the server wrote it Return all portfolio projects with their slug, title, and short description.
search_postsCase-insensitive substring match across title, description, and tags.No findings
Why it is in this group
- The name "search_posts" says "search": a word for reading.
Description, as the server wrote it Case-insensitive substring match across title, description, and tags. Returns up to 10 matches.
search_siteSemantic (vector similarity) search across blog posts and projects — the same Cloudflare Vectorize retrieval the Ask chatbot uses, without the LLM call.No findings
Why it is in this group
- The name "search_site" says "search": a word for reading.
Description, as the server wrote it 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.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http portfolio https://rye.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__portfolio__list_posts",
"mcp__portfolio__search_posts",
"mcp__portfolio__search_site",
"mcp__portfolio__get_post",
"mcp__portfolio__list_projects",
"mcp__portfolio__get_project",
"mcp__portfolio__get_about",
"mcp__portfolio__get_now",
"mcp__portfolio__get_reading",
"mcp__portfolio__get_pulse"
],
"ask": [
"mcp__portfolio__submit_contact",
"mcp__portfolio__subscribe_newsletter"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as portfolio. Review it before you use it.