refactor: transition from MCP to REST API for portfolio data

- Removed MCP server integration and related components from index.vue and contact.json.
- Updated project documentation to reflect the new ArtAPI server, including changes to project metadata and descriptions.
- Eliminated MCP toolkit dependencies from nuxt.config.ts and package.json.
- Introduced new REST API endpoints for chat prompts, replacing previous MCP prompts.
- Deleted obsolete MCP resources and prompts, streamlining the codebase for a more focused API approach.
This commit is contained in:
2025-12-19 16:48:42 +01:00
parent 30dedc2768
commit 33651945b8
27 changed files with 79 additions and 947 deletions

View File

@@ -0,0 +1,71 @@
interface Prompt {
title: string
description: string
text: string
}
export default defineCachedEventHandler(async () => {
const prompts: Prompt[] = [
{
title: 'Real-time Activity Status',
description: 'Generates a prompt to retrieve Arthur Danjou\'s current real-time activity status, including what he is currently working on.',
text: `Provide me the realtime activity of Arthur Danjou.`
},
{
title: 'Contact Information and Social Links',
description: 'Generates a prompt to retrieve Arthur Danjou\'s contact information and social media links, including email, LinkedIn, GitHub, Twitter, Discord, and personal websites.',
text: `How can I contact Arthur Danjou? Provide all contact methods and social links.`
},
{
title: 'Hobbies and Interests',
description: 'Generates a prompt to retrieve information about Arthur Danjou\'s personal hobbies, interests, and passions outside of professional work.',
text: `What are the hobbies, interests and passions of Arthur Danjou?`
},
{
title: 'Languages and Proficiency Levels',
description: 'Generates a prompt to retrieve the languages spoken by Arthur Danjou along with detailed proficiency levels for each language.',
text: `What languages does Arthur Danjou speak and at what proficiency level?`
},
{
title: 'Comprehensive Professional Profile',
description: 'Generates a prompt to retrieve comprehensive professional profile information about Arthur Danjou, including biography, location, availability status, career goals, and work preferences.',
text: `Provide me comprehensive profile information about Arthur Danjou including his bio, location, availability, career goals, and work preferences.`
},
{
description: 'Generates a prompt to retrieve a comprehensive list of personal and professional projects developed by Arthur Danjou, showcasing his technical skills and achievements.',
title: 'Projects',
text: `Provide me a list of projects done by Arthur Danjou.`
},
{
description: 'Generates a prompt to request and retrieve Arthur Danjou\'s professional resume in the specified language (English or French).',
title: 'Resume',
text: `Provide me the link to download Arthur Danjou's resume in {lang}.`
},
{
description: 'Generates a prompt to retrieve a comprehensive list of technical skills, programming languages, frameworks, and tools mastered by Arthur Danjou.',
title: 'Skills',
text: `Provide me a list of skills that Arthur Danjou masters.`
},
{
description: 'Generates a prompt to retrieve Arthur Danjou\'s detailed coding statistics and analytics powered by WakaTime, including programming languages, time spent coding, and productivity metrics.',
title: 'Stats',
text: `Provide me the stats of Arthur Danjou powered by Wakatime.`
},
{
description: 'Generates a prompt to retrieve the real-time status page of Arthur Danjou\'s homelab infrastructure, including uptime monitoring and incident reports powered by UptimeKuma.',
title: 'Status Page Activity',
text: `Provide me the status page activity of Arthur Danjou's homelab, including uptime and incidents.`
},
{
description: 'Generates a prompt to retrieve tools, software, and hardware used by Arthur Danjou, filtered by a specific category (homelab, IDE, hardware, or software).',
title: 'Uses by Category',
text: `Provide me the tools, software, and hardware used by Arthur Danjou in the category of {categoryName}.`
}
]
return prompts
},
{
maxAge: 60 * 60 * 24, // 24 hours
name: 'chat-prompts'
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve Arthur Danjou\'s current real-time activity status, including what he is currently working on.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me the realtime activity of Arthur Danjou.`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve Arthur Danjou\'s contact information and social media links, including email, LinkedIn, GitHub, Twitter, Discord, and personal websites.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `How can I contact Arthur Danjou? Provide all contact methods and social links.`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve information about Arthur Danjou\'s personal hobbies, interests, and passions outside of professional work.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `What are the hobbies, interests and passions of Arthur Danjou?`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve the languages spoken by Arthur Danjou along with detailed proficiency levels for each language.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `What languages does Arthur Danjou speak and at what proficiency level?`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve comprehensive professional profile information about Arthur Danjou, including biography, location, availability status, career goals, and work preferences.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me comprehensive profile information about Arthur Danjou including his bio, location, availability, career goals, and work preferences.`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve a comprehensive list of personal and professional projects developed by Arthur Danjou, showcasing his technical skills and achievements.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me a list of projects done by Arthur Danjou.`
}
}]
}
}
})

View File

@@ -1,19 +0,0 @@
import { z } from 'zod'
export default defineMcpPrompt({
description: 'Generates a prompt to request and retrieve Arthur Danjou\'s professional resume in the specified language (English or French).',
inputSchema: {
lang: z.enum(['en', 'fr']).describe('The language for the resume: \'en\' for English or \'fr\' for French.')
},
handler: async ({ lang }) => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me the link to download Arthur Danjou's resume in ${lang === 'en' ? 'English' : 'French'}.`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve a comprehensive list of technical skills, programming languages, frameworks, and tools mastered by Arthur Danjou.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me a list of skills that Arthur Danjou masters.`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve Arthur Danjou\'s detailed coding statistics and analytics powered by WakaTime, including programming languages, time spent coding, and productivity metrics.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me the stats of Arthur Danjou powered by Wakatime.`
}
}]
}
}
})

View File

@@ -1,14 +0,0 @@
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve the real-time status page of Arthur Danjou\'s homelab infrastructure, including uptime monitoring and incident reports powered by UptimeKuma.',
handler: async () => {
return {
messages: [{
role: 'user',
content: {
type: 'text',
text: `Provide me the status page activity of Arthur Danjou's homelab, including uptime and incidents.`
}
}]
}
}
})

View File

@@ -1,20 +0,0 @@
import { z } from 'zod'
export default defineMcpPrompt({
description: 'Generates a prompt to retrieve tools, software, and hardware used by Arthur Danjou, filtered by a specific category (homelab, IDE, hardware, or software).',
inputSchema: {
categoryName: z.enum(['homelab', 'ide', 'hardware', 'software']).describe('The category to filter by: \'homelab\', \'ide\', \'hardware\', or \'software\'.')
},
handler: async ({ categoryName }) => {
return {
messages: [
{
role: 'user',
content: {
type: 'text',
text: `How can I view the setup of Arthur for this category : ${categoryName}?`
}
}
] }
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Contact Information & Social Media Links',
description: 'Contact information and social media links for Arthur Danjou, including email, LinkedIn, GitHub, Twitter, Discord, and personal websites',
uri: 'resource://artmcp/contact',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/contact')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result, null, 2)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Education & Academic Background',
description: 'Arthur Danjou\'s educational background, including degrees, institutions, and academic achievements',
uri: 'resource://artmcp/education',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/education')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Experiences',
description: 'A detailed list of Arthur Danjou\'s professional work experiences, including roles, companies, and responsibilities',
uri: 'resource://artmcp/experiences',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/experiences')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Hobbies & Interests',
description: 'Arthur Danjou\'s personal hobbies, interests, and passions outside of professional work',
uri: 'resource://artmcp/hobbies',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/hobbies')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result, null, 2)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Spoken Languages & Proficiency Levels',
description: 'Languages spoken by Arthur Danjou with detailed proficiency levels for each language',
uri: 'resource://artmcp/languages',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/languages')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result, null, 2)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Professional Profile',
description: 'Comprehensive professional profile of Arthur Danjou, including biography, location, availability status, career goals, and work preferences',
uri: 'resource://artmcp/profile',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/profile')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Projects Portfolio',
description: 'A comprehensive collection of projects developed by Arthur Danjou, showcasing technical skills and achievements',
uri: 'resource://artmcp/projects',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/projects')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Skills',
description: 'A comprehensive list of technical skills, programming languages, frameworks, and tools mastered by Arthur Danjou',
cache: '1 hour',
uri: 'resource://artmcp/skills',
handler: async (uri: URL) => {
const result = await $fetch('/api/skills')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result, null, 2)
}]
}
}
})

View File

@@ -1,17 +0,0 @@
export default defineMcpResource({
title: 'Arthur Danjou - Tech Stack & Tools',
description: 'A curated list of tools, software, and hardware used by Arthur Danjou, organized by categories (homelab, IDE, hardware, software)',
uri: 'resource://artmcp/uses',
cache: '1 hour',
handler: async (uri: URL) => {
const result = await $fetch('/api/uses')
return {
contents: [{
uri: uri.toString(),
mimeType: 'text/json',
text: JSON.stringify(result, null, 2)
}]
}
}
})