index.ts•1.7 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { getAllBookRecods, formatBookRecord } from "./apiClient.js";
const server = new McpServer({
name: "book management",
version: "1.0.0",
capabilities: {
resources: {},
tools: {},
},
});
server.tool(
"get-book-information",
"Get book information in the Information Systems Department",
{
type: "object",
properties: {},
required: [],
},
async () => {
try {
const booksInfo = await getAllBookRecods();
// booksInfoがnullや未定義の場合のチェック
if (!booksInfo || !Array.isArray(booksInfo)) {
throw new Error("書籍データの取得に失敗しました");
}
const formattedBooksInfo = booksInfo.map(formatBookRecord).join("\n");
return {
content: [
{
type: "text",
text: formattedBooksInfo,
},
],
};
} catch (error) {
console.error("書籍情報の取得中にエラーが発生しました:", error);
return {
content: [
{
type: "text",
text: "申し訳ございませんが、書籍情報の取得中にエラーが発生しました。しばらく時間をおいて再度お試しください。",
},
],
};
}
}
);
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Books MCP Server running on stdio");
}
main().catch((error) => {
console.error("Fatal error in main():", error);
process.exit(1);
});