afpnews-mcp-server
v1.3.11
Published
MCP (Model Context Protocol) server that exposes [AFP](https://www.afp.com/) news content as tools for AI assistants. Works with any MCP-compatible client.
Downloads
1,060
Readme
afpnews-mcp
MCP (Model Context Protocol) server that exposes AFP news content as tools for AI assistants. Works with any MCP-compatible client.
The package can also be used as a library without MCP server glue via afpnews-mcp-server/definitions.
Prerequisites
- Node.js 22+
- pnpm
- An AFP API account (API key + username/password)
Setup
git clone https://github.com/julesbonnard/afpnews-mcp-server.git
cd afpnews-mcp-server
pnpm install
pnpm run buildCreate a .env file:
APICORE_API_KEY=your-api-key
APICORE_USERNAME=your-username
APICORE_PASSWORD=your-passwordUsage
Stdio transport (default)
For local MCP clients like Claude Code or Claude Desktop:
{
"mcpServers": {
"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"
}
}
}
}HTTP transport
For remote or multi-user deployments. Each session authenticates independently via HTTP Basic Auth (username/password are your AFP credentials).
MCP_TRANSPORT=http PORT=3000 pnpm run startNotes:
- Keep
APICORE_API_KEYset in the server environment (.envor runtime env). - If you expose the server remotely, use HTTPS.
Docker
pnpm run build
docker build -t afpnews-mcp .
docker run -e APICORE_API_KEY=your-api-key -p 3000:3000 afpnews-mcpAs a library (without MCP server dependency)
You can import pure definitions (tools, prompts, resources) and wire them into your own runtime:
import { AFP_DEFINITIONS } from 'afpnews-mcp-server/definitions';
const { tools, prompts, resources } = AFP_DEFINITIONS;Or import each collection directly:
import {
TOOL_DEFINITIONS,
PROMPT_DEFINITIONS,
RESOURCE_DEFINITIONS,
} from 'afpnews-mcp-server/definitions';Each definition is framework-agnostic:
tools:name,title,description,inputSchema,handler(apicore, args)prompts:name,title,description,argsSchema,handler(args)resources:name,uri,description,mimeType,handler()
Tools
| Tool | Description |
|------|-------------|
| afp_search_articles | Search AFP articles with filters, presets, and full-text mode |
| afp_get_article | Get a full article by its UNO identifier |
| afp_find_similar | Find similar articles (More Like This) from a UNO |
| afp_list_facets | List facet values (topics, genres, countries) with frequency counts |
Search presets
The afp_search_articles tool supports presets that apply predefined filters:
a-la-une— Top story (French, last 24h)agenda— Upcoming eventsprevisions— Editorial planning / forecastsmajor-stories— Major articles
List preset
trending-topics— Trending topics from the last 24h
Full text
By default, afp_search_articles returns excerpts (first 4 paragraphs). Set fullText: true to get the complete article body. Presets default to full text.
Prompts
| Prompt | Description |
|--------|-------------|
| daily-briefing | Generate a daily news briefing |
| comprehensive-analysis | In-depth analysis on a topic |
| factcheck | Verify facts using AFP factchecks |
| country-news | News summary for a specific country |
Resources
| Resource | Description |
|----------|-------------|
| afp://topics | AFP Stories topic catalog by language |
Development
pnpm install
pnpm run build
pnpm testInternal Architecture
src/tools/*.ts,src/prompts/*.ts,src/resources/*.tscontain pure definitions.src/tools/index.ts,src/prompts/index.ts,src/resources/index.tscontain MCP registration glue.src/definitions.tsexports aggregated, server-agnostic definitions:AFP_DEFINITIONSTOOL_DEFINITIONSPROMPT_DEFINITIONSRESOURCE_DEFINITIONS
License
ISC
