afpnews-mcp-server
使用说明(Markdown 格式)
项目简介
- 这是一个基于 Model Context Protocol(MCP)的服务器端实现,专门将 AFP 新闻内容通过工具、资源、Prompts 等形式暴露给 AI 助手或 LLM 客户端,支持通过标准的 MCP 请求/响应进行交互。
主要功能点
- MCP核心能力:实现资源(Resources)、工具(Tools)和提示模板(Prompts)的注册、解析与渲染,统一通过 MCP 服务对外暴露。
- 多传输协议:内置两种传输方式,标准输出/输入的 STDIO 传输和基于 HTTP 的 Web传输,方便本地调试和远程部署。
- 安全与会话管理:通过 JWT 加密/解密实现 token 认证与会话管理,内置 OAuth/DCR 风格的简易认证流,支持令牌刷新和会话清除。
- AFP 数据接入:使用 afpnews-api 客户端对 AFP 内容进行查询、获取全文和相似文章检索等操作,工具返回格式化的多文档输出。
- 服务器内聚性:所有工具、资源和 Prompts 通过集中注册实现 MCP 服务的统一能力声明,支持通过客户端发起的 JSON-RPC 请求进行调用。
- 库化使用:核心定义可作为库在其他运行时直接使用,导出 AFP 定义的工具、Prompts、资源,便于在自有运行时中组装 MCP 服务。
安装与运行
-
安装与构建
- 将仓库克隆到本地并进入目录
- 安装依赖并构建:使用你偏好的包管理器执行安装并构建
- 运行构建后的服务器文件
-
运行模式
- STDIO 传输(本地客户端,如 Claude 桌面端/Code 端)
- HTTP 传输(多用户远程部署,需额外的鉴权和会话管理)
服务器配置(MCP客户端所需的最小配置,JSON 格式) 请注意,以下是针对 STDIO 传输的典型配置示例,描述了 server 的名称、启动命令、工作目录以及必须的环境变量。MCP 客户端通过该信息启动并与服务器建立连接。 { "mcpServers": { "afpnews": { "name": "afpnews", "command": "node", "args": ["build/index.js"], "cwd": "/absolute/path/to/afpnews-mcp-server", "env": { "APICORE_API_KEY": "your-api-key", "APICORE_USERNAME": "your-username", "APICORE_PASSWORD": "your-password", "APICORE_BASE_URL": "https://api.afp.example" // 如有必要,可选 } // 说明:APICORE_API_KEY 为 AFP API 的访问密钥,APICORE_USERNAME/APICORE_PASSWORD 为 AFP 账户凭证,用于认证并获取访问令牌。 // baseUrl 仅在需要时提供(若 AFP API 不在默认地址)。 } } } 服务器启动后,客户端可通过 MCP 的标准调用向 afp_search_articles、afp_get_article、afp_find_similar、afp_list_facets 等工具发起请求,并可访问 topics 资源和 prompts。
基本使用方法
- 启动服务器
- 使用上方的 STDIO 配置在命令行中启动服务器进程,确保 AFP 的凭证已正确设置在环境变量中。
- 使用 MCP 客户端调用工具与资源
- 调用 afp_search_articles 进行文章检索,获取摘要输出或 JSON/CSV 结果,支持分页和全文本开关。
- 调用 afp_get_article 获取指定 UNO 的完整文章文本与元数据。
- 调用 afp_find_similar 查找与指定 UNO 相似的文章。
- 调用 afp_list_facets 获取分类或主题的值及其计数,支持预设(如 trending-topics)。
- 读取 topics 资源,获取 AFP 主题目录。
- 使用 prompts(daily-briefing、country-news、comprehensive-analysis、factcheck 等)来引导对话,内部会自动引入上述工具。
运行与配置要点
- 服务器需要 AFP API 的访问密钥,以及一个 AFP 用户名/密码进行初始认证。
- 生产环境建议使用 HTTPS 以保障传输安全。
- HTTP 传输模式下,客户端会为每个会话分配独立的会话信息,服务器端会进行会话清理以避免资源泄露。
相关参考
- 项目实现了完整的 MCP 服务端入口、服务器创建、工具/资源/Prompts 的注册、两种传输模式的实现,以及与 AFP API 的对接逻辑。
- 测试用例覆盖了核心工具的输出结构、错误处理、JSON/CSV/Markdown 等多种输出格式,以及 HTTP/WS 传输下的行为,确保功能实现的鲁棒性。
常见问题与注意
- 若要在生产环境中暴露给外部客户端,务必开启 HTTPS,并妥善管理 JWT_SECRET/密钥轮换。
- HTTP 传输模式需要正确配置 MCP_SERVER_URL、JWT 加解密密钥等,以确保授权和会话的安全性。
- 当输出内容超过字符限制时,系统会进行截断并附带提示信息,确保长文本不会导致响应异常。
联系与更新
- 本实现提供了完整的服务器端功能,若后续需要扩展新工具、Prompts 或资源,可在 src 下添加相应的定义并通过注册器暴露到 MCP 服务。