import axios from "axios";
import dotenv from "dotenv";
dotenv.config();
const config = {
wordpressUrl: process.env.WORDPRESS_URL || "https://fluentboards.local",
username: process.env.WORDPRESS_USERNAME || "aiagent",
appPassword:
process.env.WORDPRESS_APP_PASSWORD || "E3a3 3Hw5 tVlb HDDm QcUR WYoC",
};
const api = axios.create({
baseURL: `${config.wordpressUrl}/wp-json/fluent-boards/v2`,
auth: {
username: config.username,
password: config.appPassword,
},
// For local development with self-signed certificates
httpsAgent: new (await import("https")).Agent({
rejectUnauthorized: false,
}),
});
async function testConnection() {
console.log("Testing FluentBoards API connection...\n");
try {
// Test 1: List boards
console.log("1. Listing boards...");
const boardsResponse = await api.get("/projects");
const boards = boardsResponse.data.boards.data;
console.log(`Found ${boards.length} board(s):`);
boards.forEach((board) => {
console.log(` - ${board.title} (ID: ${board.id})`);
});
if (boards.length > 0) {
const boardId = boards[0].id;
// Test 2: Get board details
console.log(`\n2. Getting details for board ${boardId}...`);
const boardResponse = await api.get(`/projects/${boardId}`);
console.log(` Title: ${boardResponse.data.board.title}`);
console.log(` Type: ${boardResponse.data.board.type}`);
console.log(` Stages: ${boardResponse.data.board.stages.length}`);
// Test 3: List tasks
console.log(`\n3. Listing tasks in board ${boardId}...`);
const tasksResponse = await api.get(`/projects/${boardId}/tasks`);
const tasks = tasksResponse.data.tasks;
console.log(`Found ${tasks.length} task(s)`);
// Test 4: Create a test task
console.log(`\n4. Creating a test task...`);
const stages = boardResponse.data.board.stages;
const firstStage = stages[0];
const newTask = await api.post(`/projects/${boardId}/tasks`, {
task: {
title: "Test Task from MCP Server",
description: "This is a test task created by the MCP server",
board_id: boardId,
stage_id: firstStage.id,
},
});
console.log(
`Created task: ${newTask.data.task.title} (ID: ${newTask.data.task.id})`
);
}
console.log(
"\n✅ All tests passed! The MCP server can connect to FluentBoards."
);
} catch (error) {
console.error("❌ Error:", error.response?.data || error.message);
}
}
testConnection();