afpnews-mcp-server

afpnews-mcp-server

MCP server exposing AFP news content as tools for AI assistants, enabling article search, retrieval, and analysis via natural language.

Category
Visit Server

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

  • Bun 1.3+
  • An AFP API account (API key + username/password)

Setup

git clone https://github.com/julesbonnard/afpnews-mcp-server.git
cd afpnews-mcp-server
bun install

Create a .env file:

APICORE_API_KEY=your-api-key
APICORE_USERNAME=your-username
APICORE_PASSWORD=your-password

Usage

Stdio transport (default)

For local MCP clients like Claude Code or Claude Desktop:

{
  "mcpServers": {
    "afpnews": {
      "command": "bun",
      "args": ["src/index.ts"],
      "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. Users authenticate via OAuth2 PKCE using their AFP credentials.

Required environment variables for HTTP mode:

APICORE_API_KEY=your-api-key
APICORE_BASE_URL=https://api.afp.com
MCP_SERVER_URL=https://news-mcp.example.com
JWT_SECRET=a-random-string-of-at-least-32-characters
MCP_TRANSPORT=http
PORT=3000

Optional:

  • MCP_SESSION_TTL — session duration in milliseconds (default: 3600000 = 1h)
  • MCP_ALLOWED_REDIRECT_URIS — comma-separated list of allowed OAuth redirect URIs
bun src/index.ts

If you expose the server remotely, use HTTPS.

Docker

docker build -t afpnews-mcp .
docker run \
  -e APICORE_API_KEY=your-api-key \
  -e APICORE_BASE_URL=https://api.afp.com \
  -e MCP_SERVER_URL=https://news-mcp.example.com \
  -e JWT_SECRET=your-secret-32-chars-minimum \
  -e MCP_TRANSPORT=http \
  -p 3000:3000 \
  afpnews-mcp

As 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
afp_search_media Search AFP media documents (photos, videos, graphics)
afp_get_media Get a full media document by UNO, with optional base64 image embed

Search presets

The afp_search_articles tool supports presets that apply predefined filters:

  • a-la-une — Top story (French, last 24h)
  • agenda — Upcoming events
  • previsions — Editorial planning / forecasts
  • major-stories — Major articles

List preset

  • trending-topics — Trending topics from the last 24h

Full text

By default, afp_search_articles returns excerpts (first 2 paragraphs). Set fullText: true to get the complete article body. Presets default to full text.

Pagination

Use offset to paginate through results (e.g. offset: 10 to skip the first 10). For large chronological scans, prefer narrowing dateFrom/dateTo ranges in facets over high offsets. Keep size small (10–20) for best performance.

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

bun install
bun test

Internal Architecture

  • src/tools/*.ts, src/prompts/*.ts, src/resources/*.ts contain pure definitions.
  • src/tools/index.ts, src/prompts/index.ts, src/resources/index.ts contain MCP registration glue.
  • src/definitions.ts exports aggregated, server-agnostic definitions:
    • AFP_DEFINITIONS
    • TOOL_DEFINITIONS
    • PROMPT_DEFINITIONS
    • RESOURCE_DEFINITIONS

License

ISC

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured