mcpField
F
Frédérick Madore — Academic Record

Frédérick Madore — Academic Record

本地服务
frederickmadore.com搜索与检索12 天前更新

关于 Frédérick Madore — Academic Record

这是用于查询 Frédérick Madore 学术记录的 MCP 服务,适合查阅其研究成果的研究者和读者。它提供出版物、演讲、研究项目、数字人文工作和履历的搜索及完整记录,并可生成引文。

主要功能

  1. 01按类型、主题、地区、语言和年份搜索出版物
  2. 02获取出版物和演讲的完整记录
  3. 03浏览研究项目和数字人文项目
  4. 04搜索活动条目并读取全文
  5. 05获取履历章节和引文格式

适用场景

  1. 01查找特定主题或地区的出版物
  2. 02查看演讲议程和参与者
  3. 03追踪项目关联的出版物和田野工作
  4. 04生成 BibTeX 或纯文本引文

MCP 相关

向 MCP 客户端提供十二种工具和七份 API 文档资源,支持 stdio 与 Streamable HTTP,并从网站读取已发布的 JSON 文档。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbfrederickmadore-website.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

website-mcp

一个用于访问 frederickmadore.com 上发布的学术记录的 MCP 服务。将它连接到 Claude(或任何 MCP 客户端),即可询问有关出版物、演讲、研究项目、数字人文工作和简历的问题,无需逐一浏览查找。

本服务不涵盖什么。 本服务涵盖的是 Frédérick Madore _本人的_学术研究。他研究的西非来源档案由 IWAC MCP 服务提供。两者的语料库不同——如果两者都需要,就都连接。

安装(Claude Desktop)

从最新版本下载 frederickmadore-website.mcpb,然后双击。Claude Desktop 会打开安装对话框;点击“安装”即可。整个过程就是这么简单——无需编辑配置文件,无需使用终端,也无需安装 Node,因为 Claude Desktop 自带运行时。

Claude Desktop 会提示发布者未经验证。这是正常且不会改变的——请参阅为什么这个安装包未签名。

每次提交也会构建该安装包:打开 Actions 中最新的运行记录,如果想获取尚未发布的构建版本,请下载 mcpb 工件。要自行构建,请参阅下方的命令。

扩展的配置面板中有一个可选设置 Site address。除非要基于尚未发布的内容进行开发,否则请留空。

检查是否可用

提问:“Frédérick Madore 发表过哪些关于校园宗教活动的研究?”

安装(其他客户端)

任何支持通过 stdio 使用 MCP 的客户端都可以直接运行该服务。此方式使用开发者构建版本,因此需要 Node 20 或更高版本。

git clone https://github.com/fmadore/Website.git
cd Website
npm install          # also builds the server

Claude Code:

claude mcp add frederickmadore -- node /absolute/path/to/Website/mcp/dist/index.js

任何读取 mcpServers JSON 的客户端:

{
	"mcpServers": {
		"frederickmadore": {
			"command": "node",
			"args": ["/absolute/path/to/Website/mcp/dist/index.js"]
		}
	}
}

工具

工具功能
search_publications搜索书籍、文章、章节、报告和论文。可按类型、标签、国家、项目、语言和年份范围筛选。
get_publication获取一篇出版物的完整信息——摘要、DOI/ISBN/ISSN、目录、引用作品和已发表的评论。
search_communications搜索会议论文、演讲、研讨会、工作坊、专题讨论会和播客。
get_communication获取一场演讲的完整信息,包括专题讨论会的议程和参与者。
search_activities搜索新闻和活动条目,并匹配其完整正文。
get_activity获取一项活动的完整信息,包括其完整正文。
list_research_projects列出所有研究项目,每个项目均列出其出版物、演讲、资助和田野调查的 ID。
get_research_project获取一个项目的完整信息:完整叙述、时间跨度、地区、源语言、资助和交叉引用。
list_dh_projects列出数字档案、数据集和工具,以及相关技能、奖项和评论。
get_dh_project获取一个数字人文项目的完整信息。
get_cv获取职业履历。也可指定一个部分(grants、teaching、awards 等)。
get_citation获取 BibTeX 格式或纯文本参考文献。

搜索不区分重音符号,因此,cote d'ivoire 可以匹配 Côte d'Ivoire。type 和 country 必须匹配完整值(Niger 不会匹配 Nigeria,article 也不会匹配 bulletin-article);tag、project 和 language 则可匹配其中任意部分。 搜索结果支持使用 limit 和 offset 分页,每个工具都会返回易读的文本块和通过架构验证的结构化内容。

网站通过 WebMCP(src/lib/utils/webmcp.ts)也为访问网站的 Agent 注册了相同的十二个工具。 两者通过 src/lib/utils/api*.ts 中相同的加载器、搜索和引文代码读取相同的 API 文档,因此二者不会出现偏差。

搜索会返回标题;get_* 工具会返回完整记录。每个数据集都包含完整文本——出版物和演讲摘要、活动正文、项目描述以及研究叙述——因此网站上的内容既可搜索,也都可阅读。

资源

相同的七份 API 文档也作为 MCP 资源公开在 website://api/ 下: 发现清单、研究、出版物、交流活动、活动、数字人文项目和职业履历。对于带筛选条件的问题,工具是高效的途径; 资源则是完整且可通过 URI 寻址的数据集,适合希望直接访问数据层的客户端。

工作原理

服务通过 HTTP 读取网站已发布的 JSON 文档(/api/*.json),并将通过验证的响应保存在内存中五分钟。并发请求共享一次获取操作,失败的请求可以重试。这里没有数据库、没有搜索索引,也没有自己的数据:语料只有几百条记录,因此线性扫描比避免扫描所需的机制更省成本。缓存过期后的下一个请求会获取新内容。

WEBSITE_API_TIMEOUT_MS 限制整个获取操作的时长,包括响应正文(默认值为 10,000 ms)。WEBSITE_API_CACHE_TTL_MS 设置缓存有效期(默认值为 300,000 ms)。两者都接受毫秒值:超时时长必须为正数;TTL 为零时会禁用持久缓存。与 API 不兼容的版本和格式错误的文档会在缓存前被拒绝。

服务使用稳定版 TypeScript SDK v2。serveStdio() 和 createMcpHandler() 由同一个服务工厂提供服务,支持无状态的 2026-07-28 协议和 2025 年前后的旧版客户端,因此不同传输方式下的工具和资源接口不会出现分歧。现代版 tools/list、resources/list 和 resources/read 响应会声明一小时的公共缓存提示。

Streamable HTTP

在本地构建并运行无状态远程端点:

npm run mcp:build
npm run start:http -w mcp

MCP 端点为 http://localhost:7860/mcp;/ 和 /healthz 会返回一份简短的健康状态文档。本地运行时绑定到 127.0.0.1。在容器或公共托管环境中,请有意设置 MCP_BIND_HOST=0.0.0.0;存在 SPACE_HOST 时,Hugging Face Spaces 会自动选择此设置。PORT 和 WEBSITE_API_BASE 仍可配置。

Host 和 Origin 防护使用 SDK 验证器。回环主机名和 SPACE_HOST 受信任;可以通过 ALLOWED_HOSTS 和 ALLOWED_ORIGIN_HOSTS 分别添加以逗号分隔的主机名(不含协议或端口)。Origin 策略基于主机名;受信任主机上的端口不受限制。没有 Origin 的原生客户端会被接受;不受信任、格式错误及为 null 的 Origin 会被拒绝。 转发标头不会覆盖这些防护;请配置代理实际使用的 Host。

这里不会重新实现 get_citation——构建会将 #lib 设置为别名,并打包网站自身的 bibtexGenerator 和 citationFormatter,因此返回的 BibTeX 与网站下载按钮生成的内容逐字节相同。这里只提供 BibTeX 和纯文本参考文献,因为这是网站本身仅有的生成格式;如果要添加 APA/MLA/Chicago 格式,只需修改 src/lib/utils,之后这些格式就会自动在此提供。

针对未发布内容进行开发

将服务指向本地构建,而不是线上网站:

npm run build            # at the repo root, produces build/api/*.json
npm run preview          # serves it on :4173
WEBSITE_API_BASE=http://localhost:4173 node mcp/dist/index.js
命令
命令作用
npm run mcp:build在 mcp/dist/ 中构建 stdio、HTTP 和共享服务包
npm run mcp:pack构建可安装的 mcp/dist/frederickmadore-website.mcpb
npm run mcp:check进行类型检查
npm run mcp:smoke构建两者,然后针对网站的本地构建,通过协议分别驱动它们
npm test单元测试(搜索和排序),与网站的测试套件一起运行

npm run mcp:smoke 需要先在仓库根目录运行 npm run build。它会测试开发构建,以及从 .mcpb 中解包出来的服务——也就是用户实际安装的构件,并通过无状态 Streamable HTTP 驱动同一个工厂。现代和旧版协议时期均在测试范围内。CI 会在每个拉取请求中运行全部测试,因此重命名 API 字段、工具注册损坏或构件无法启动等问题都会被发现。

发布

推送一个标签,或依次选择 Actions → Release MCP bundle → Run workflow:

git tag mcp-v0.3.0 && git push origin mcp-v0.3.0

工作流会进行类型检查、构建站点、构建程序包并使用真实 API 文档进行冒烟测试,只有全部完成后才会将其发布为发行版资源。未能启动的内容不会发布。

发布到 MCP Registry

server.json 是服务器在官方 MCP Registry(预览版)中的条目,名称为 io.github.fmadore/frederickmadore-website。Registry 仅存储元数据:该条目指向发行版中的 .mcpb,并记录其 SHA-256,客户端会在安装前进行检查。已提交的文件描述的是最新发行版 0.3.0。

哈希必须与上传文件的哈希一致。程序包是带有构建时间戳的 zip,因此,在本地重新构建同一提交得到的哈希会不同。因此,发行工作流会为其发布的程序包生成 server.json(scripts/release/stamp-mcp-registry.mjs),并将其附加到同一发行版。发布仍需手动进行,并且需要以 fmadore 身份登录 GitHub:

  1. 按上述步骤发布,然后获取该发行版的条目(此处为 0.3.0):

    gh release download mcp-v0.3.0 --repo fmadore/Website --pattern server.json --dir mcp --clobber
    

    若要重新发布 0.3.0,请跳过此步骤:已提交的文件就是该发行版的条目。

  2. 从 Registry 的发行版页面安装 mcp-publisher(快速入门指南提供了各平台的一行安装命令,包括 ARM 版 Windows)。

  3. 在 mcp/ 中检查条目、登录并发布:

    mcp-publisher validate
    mcp-publisher login github
    mcp-publisher publish
    

    validate 会将文件发送到 Registry 的验证端点;login github 会打开 GitHub 设备授权流程;publish 会读取 ./server.json。login 存储的 Registry 令牌会在几分钟内过期,因此请紧接着运行 publish;如果出现 401 … token is expired,请重新登录。

  4. 确认条目,然后提交获取到的 server.json,以便仓库记录已发布的内容:

    curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.fmadore/frederickmadore-website"
    

npm test 会根据 Registry 的限制检查已提交的条目(scripts/release/mcp-registry.test.mjs)。之后可以通过 mcp-publisher login github-oidc 在 release-mcp.yml 中运行此步骤,这需要 id-token: write,且无需存储密钥。

为什么程序包未签名

Claude Desktop 会警告发布者未经验证。这是有意为之,不会改变。

mcpb 通过调用操作系统信任存储来验证签名——在 macOS 上使用 security verify-cert -p codeSign,在 Windows 上使用对应的 PowerShell 命令——因此只有由受认可 CA 颁发的证书才能消除警告。这类证书需要每年付费,并且必须验证你的身份;本项目不会购买证书。

mcpb sign --self-signed 并非解决办法。无法链接到受信任证书的证书会被验证为 unsigned,因此文件只会增大约 2 KB,没有其他变化——Claude Desktop 也一样,因为它使用相同的验证代码。诚实地发布未签名程序包,好过使用加载器会忽略的签名。

构建 bundle 的方式

pack.mjs 会将所有依赖内联到一个压缩后的文件中(无需随包发布 node_modules/), 目标运行时为 Node 20,而非 24,因为 Claude Desktop 会提供运行时,并写入一个将输出标记为 ESM 的 package.json。清单中的工具列表并非手动编写:脚本会启动刚构建好的服务,通过协议询问它有哪些工具, 然后写入结果。手动维护的列表是第二个事实来源,一旦工具重命名就会出现偏差。

归档文件由 fflate 直接写入,而不是通过 @anthropic-ai/mcpb CLI。该 CLI 打包时恰好使用此调用—— 级别为 9 的 zipSync,并在外部属性中设置 Unix 模式位——但它还会引入 @inquirer/prompts 来提供交互式的 init 向导,连带引入一个带有两项尚未修复的高危安全公告的 tmp。这里没有任何操作会运行 init, 因此要为一次 zipSync 调用引入 171 个包,并导致 npm audit 失败。对于从固定模板生成的清单, 真正重要的部分是 pack.mjs 中对必填字段所做的简短检查。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。