get_contact
Contact details
How to reach Ryan Lindsey, and his working timezone.
无需输入参数。

me.ryanlindsey由 ryanlindsey.me 发布官方发布者v1.36.0更新于 Oct 24, 2026
Ryan Lindsey's professional corpus, exposed as MCP tools.
一个远程 MCP 服务器,提供 Ryan Lindsey 的职业资料——联系方式、简历、案例研究和文章——供阅读与语义搜索。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/me.ryanlindsey%2Fryanlindsey-me/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"ryan-lindsey": {
"type": "http",
"url": "https://mcp.ryanlindsey.me/mcp"
}
}
}The code behind ryanlindsey.me: an Astro site on the Cloudflare developer platform, plus a second Worker serving a remote MCP server at mcp.ryanlindsey.me. One repository, two deployed Workers, one shared set of D1, KV, R2, Queues and Analytics Engine resources.
The site is built so that a person and an agent read the same corpus through different doors.
Source-visible so you can read how it is built. There is no LICENSE file, and the absence is deliberate rather than an oversight: no license means all rights reserved, so nothing here is licensed for reuse.
Deploys run on Workers Builds from main, and CI has no deploy step. CLAUDE.md carries the working notes, including the commands, the traps worth knowing before editing, and the reasoning behind the parts that look strange.
Four entrypoints, stable by contract:
This file does not list the rest, and the omission is the part worth reading. Every endpoint this site advertises lives in one list, ADVERTISED_SURFACE in src/lib/discovery/surface.ts, published as both the API catalog and the ARD manifest and checked by tests/discovery-catalog.test.ts. A table here would be a second copy, living outside the test suite, and it would drift the first time an endpoint moved. Fetch the catalog rather than trusting this file.
One thing is missing from that list on purpose. /fit and everything beneath it are unlisted by requirement, and a catalog is a published list of the paths its author finds interesting, so listing one there would un-list it.
The split into two Workers is not cosmetic. An ai binding in the site's config makes astro build open a remote proxy session that credential-free CI cannot authenticate, so inference lives on the second Worker and the site reaches it over a service binding. Each Worker names the other, and the cycle is deliberate and legal, because a service binding resolves when it is called rather than when the Worker is defined.
The drawing is deliberately incomplete. It carries the structure and leaves out the rest: which storage each Worker touches, which models it calls, the queue consumer, the crons. The site publishes its own drawing of the deployed inventory on /ops, over the one description of this architecture the repository keeps, src/lib/architecture.ts. That page also reports what the system has done lately and what it cost, read at request time rather than asserted here.
Four claims, each paired with the file that proves it rather than with an assurance.
Four files, in reading order. They explain the rest.
src/lib/discovery/surface.ts, every endpoint this site advertises, in one list, carrying the reason it is one list and not two.src/lib/tier/grant.ts, the only place a token is verified. The site Worker holds no copy: it treats the token as an opaque string and asks over the service binding, so the boundary has one implementation rather than two that agree.tests/workers.ts, why the suite boots real Workers inside workerd, and what it refuses to reach.src/components/ArchitectureDiagram.astro, for its header rather than its output. That header records that two claims in its own first draft were false, names them, and says what the mistake taught. It is a fair sample of how the rest of this repository is commented.release-please watches main and keeps a release pull request open with the next version and its changelog. Merging that pull request tags the release and publishes it.
Pull requests are squash-merged, so the pull request title is the commit subject release-please reads. A title without a recognized type(scope): summary prefix is skipped silently: no version bump, no changelog entry. feat is a minor bump, fix and perf are patches, and type!: or a BREAKING CHANGE: footer is a major. The full set of types lives in release-please-config.json under changelog-sections.
来源:README.md,提交 6b24b76
Contact details
How to reach Ryan Lindsey, and his working timezone.
无需输入参数。
Résumé
Ryan Lindsey's résumé: JSON Resume data, the published markdown document, or a short prose summary.
formatList case studies
Published case studies with their metadata and citation URLs.
无需输入参数。
Get a case study
The full markdown of one published case study, by slug.
slug必填List writing
Published posts with their descriptions and citation URLs.
无需输入参数。
Get a post
The full markdown of one published post, by slug.
slug必填Search the writing
Semantic search across the published posts, case studies and résumé. Each result is a passage, the URL it is published at, and an "exact" flag saying whether the excerpt is the passage that matched.
limitquery必填Request private access
Explains the private access tier and how to request a scoped token.
无需输入参数。
已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在仓库或注册中心条目中声明许可证。
flowchart TB person(["person"]) agent(["agent"])
subgraph site["site Worker (ryanlindsey.me)"] S["pages, posts, case studies, résumé<br>markdown variants, llms.txt, feeds<br>well-known catalogs<br>chat page and the form surfaces"] end
subgraph mcpw["MCP Worker (mcp.ryanlindsey.me)"] G{"grant resolved<br>here, and only here"} T["/mcp, the chat stream,<br>the fit engine"] R[["rate limiter<br>Durable Object"]] G --> T T -->|every tool call spends budget| R end
P[("R2_PRIVATE")]
person --> site agent --> site agent --> mcpw site -->|service binding| mcpw mcpw -->|reads published documents| site T -. "private-docs.ts, the only reader" .-> P