mirror of
https://github.com/ArthurDanjou/artapi.git
synced 2026-02-02 18:37:50 +01:00
Merge pull request #2 from ArthurDanjou/copilot/improve-user-profile-information
Add profile completeness: languages, certifications, availability, and enhanced contact
This commit is contained in:
196
README.md
196
README.md
@@ -1,35 +1,89 @@
|
|||||||
# Hello Edge
|
# ArtMCP - Arthur Danjou's MCP Server
|
||||||
|
|
||||||
A minimal [Nuxt](https://nuxt.com) starter deployed on the Edge using [NuxtHub](https://hub.nuxt.com).
|
A comprehensive [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server exposing professional profile information about Arthur Danjou. Built with [Nuxt](https://nuxt.com) and deployed on [NuxtHub](https://hub.nuxt.com) at the Edge.
|
||||||
|
|
||||||
https://hello.nuxt.dev
|
🔗 **Live Server**: https://mcp.arthurdanjou.fr
|
||||||
|
|
||||||
<a href="https://hello.nuxt.dev">
|
## 🎯 Features
|
||||||
<img src="https://github.com/nuxt-hub/hello-edge/assets/904724/99d1bd54-ef7e-4ac9-83ad-0a290f85edcf" alt="Hello World template for NuxtHub" />
|
|
||||||
</a>
|
|
||||||
|
|
||||||
## Features
|
### MCP Resources
|
||||||
|
|
||||||
- Server-Side rendering on Cloudflare Workers
|
The server exposes the following resources through the Model Context Protocol:
|
||||||
- ESLint setup
|
|
||||||
- Ready to add a database, blob and KV storage
|
|
||||||
- One click deploy on 275+ locations for free
|
|
||||||
|
|
||||||
## Setup
|
- **📊 Skills** (`resource://artmcp/skills`) - Complete list of technical skills (programming languages, frameworks, tools)
|
||||||
|
- **💼 Experiences** (`resource://artmcp/experiences`) - Professional work experience and projects
|
||||||
|
- **🚀 Projects** (`resource://artmcp/projects`) - Portfolio of personal and professional projects
|
||||||
|
- **🎓 Education** (`resource://artmcp/education`) - Academic background and degrees
|
||||||
|
- **🌐 Languages** (`resource://artmcp/languages`) - Spoken languages with proficiency levels
|
||||||
|
- **🏆 Certifications** (`resource://artmcp/certifications`) - Professional certifications and achievements
|
||||||
|
- **👤 Profile** (`resource://artmcp/profile`) - Comprehensive profile with bio, location, availability, career goals, and work preferences
|
||||||
|
- **🎨 Hobbies** (`resource://artmcp/hobbies`) - Personal interests and activities
|
||||||
|
- **📞 Contact** (`resource://artmcp/contact`) - Professional contact information and social links
|
||||||
|
- **🛠️ Uses** (`resource://artmcp/uses`) - Tools, hardware, and software setup
|
||||||
|
- **📈 Activity** (`resource://artmcp/activity`) - Real-time coding activity (Discord integration)
|
||||||
|
- **⏱️ Wakatime** (`resource://artmcp/wakatime`) - Coding statistics powered by Wakatime
|
||||||
|
- **🏠 Status Page** (`resource://artmcp/status_page`) - Homelab services uptime and incidents
|
||||||
|
|
||||||
Make sure to install the dependencies with [pnpm](https://pnpm.io/installation#using-corepack):
|
### MCP Tools
|
||||||
|
|
||||||
|
- **`get_resume_link`** - Get download link for resume in English or French
|
||||||
|
- **`get_uses_by_category`** - Filter uses by category (homelab, ide, hardware, software)
|
||||||
|
|
||||||
|
### MCP Prompts
|
||||||
|
|
||||||
|
Pre-configured prompts for common queries about:
|
||||||
|
- Resume generation
|
||||||
|
- Skills and expertise
|
||||||
|
- Projects showcase
|
||||||
|
- Real-time activity
|
||||||
|
- Contact information
|
||||||
|
- And more...
|
||||||
|
|
||||||
|
## 🏗️ Architecture
|
||||||
|
|
||||||
|
This project uses:
|
||||||
|
- **Nuxt 4** with Nitro for server-side rendering
|
||||||
|
- **@nuxt/content** for content management
|
||||||
|
- **@modelcontextprotocol/sdk** for MCP server implementation
|
||||||
|
- **NuxtHub** for edge deployment on Cloudflare Workers
|
||||||
|
- **Zod** for schema validation
|
||||||
|
|
||||||
|
## 🚀 Getting Started
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- Node.js 18+ or Bun
|
||||||
|
- pnpm 10.12.1+
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Install dependencies
|
||||||
pnpm install
|
pnpm install
|
||||||
```
|
```
|
||||||
|
|
||||||
You can update the main text displayed by creating a `.env`:
|
### Environment Variables
|
||||||
|
|
||||||
|
Create a `.env` file (optional):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
NUXT_PUBLIC_HELLO_TEXT="Hello my world!"
|
# Discord integration (optional)
|
||||||
|
NUXT_DISCORD_USER_ID=""
|
||||||
|
NUXT_DISCORD_ID=""
|
||||||
|
NUXT_DISCORD_TOKEN=""
|
||||||
|
|
||||||
|
# Wakatime integration (optional)
|
||||||
|
NUXT_WAKATIME_USER_ID=""
|
||||||
|
NUXT_WAKATIME_CODING=""
|
||||||
|
NUXT_WAKATIME_EDITORS=""
|
||||||
|
NUXT_WAKATIME_LANGUAGES=""
|
||||||
|
NUXT_WAKATIME_OS=""
|
||||||
|
|
||||||
|
# Status page (optional)
|
||||||
|
NUXT_STATUS_PAGE=""
|
||||||
```
|
```
|
||||||
|
|
||||||
## Development Server
|
### Development
|
||||||
|
|
||||||
Start the development server on `http://localhost:3000`:
|
Start the development server on `http://localhost:3000`:
|
||||||
|
|
||||||
@@ -37,7 +91,7 @@ Start the development server on `http://localhost:3000`:
|
|||||||
pnpm dev
|
pnpm dev
|
||||||
```
|
```
|
||||||
|
|
||||||
## Production
|
### Production
|
||||||
|
|
||||||
Build the application for production:
|
Build the application for production:
|
||||||
|
|
||||||
@@ -45,16 +99,112 @@ Build the application for production:
|
|||||||
pnpm build
|
pnpm build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Deploy
|
### Deployment
|
||||||
|
|
||||||
|
Deploy to NuxtHub/Cloudflare:
|
||||||
Deploy the application on the Edge with [NuxtHub](https://hub.nuxt.com) on your Cloudflare account:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx nuxthub deploy
|
pnpm deploy
|
||||||
```
|
```
|
||||||
|
|
||||||
Then checkout your server logs, analaytics and more in the [NuxtHub Admin](https://admin.hub.nuxt.com).
|
## 📚 API Endpoints
|
||||||
|
|
||||||
You can also deploy using [Cloudflare Pages CI](https://hub.nuxt.com/docs/getting-started/deploy#cloudflare-pages-ci).
|
All resources are also available as REST API endpoints:
|
||||||
|
|
||||||
|
- `GET /api/skills`
|
||||||
|
- `GET /api/experiences`
|
||||||
|
- `GET /api/projects`
|
||||||
|
- `GET /api/educations`
|
||||||
|
- `GET /api/languages`
|
||||||
|
- `GET /api/certifications`
|
||||||
|
- `GET /api/mathematics`
|
||||||
|
- `GET /api/profile`
|
||||||
|
- `GET /api/hobbies`
|
||||||
|
- `GET /api/contact`
|
||||||
|
- `GET /api/uses`
|
||||||
|
- `GET /api/uses_by_category?categoryName={category}`
|
||||||
|
- `GET /api/activity`
|
||||||
|
- `GET /api/wakatime`
|
||||||
|
- `GET /api/status_page`
|
||||||
|
- `GET /api/resumes/{en|fr}` - Download resume
|
||||||
|
|
||||||
|
## 🧪 Development
|
||||||
|
|
||||||
|
### Linting
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pnpm lint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Type Checking
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx tsc --noEmit --skipLibCheck
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📂 Content Structure
|
||||||
|
|
||||||
|
Content is managed in the `content/` directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
content/
|
||||||
|
├── skills.json # Technical skills
|
||||||
|
├── languages.json # Spoken languages
|
||||||
|
├── certifications.json # Professional certifications
|
||||||
|
├── mathematics.json # Mathematics background
|
||||||
|
├── profile.json # Comprehensive profile info
|
||||||
|
├── contact.json # Contact information
|
||||||
|
├── hobbies.md # Personal interests
|
||||||
|
├── experiences/*.md # Work experiences
|
||||||
|
├── projects/*.md # Project portfolio
|
||||||
|
├── education/*.md # Academic background
|
||||||
|
└── uses/*.md # Tools and setup
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Technologies
|
||||||
|
|
||||||
|
- **Frontend/Backend**: Nuxt 4, Vue 3, Nitro
|
||||||
|
- **MCP**: Model Context Protocol SDK
|
||||||
|
- **Content**: Nuxt Content with better-sqlite3
|
||||||
|
- **Deployment**: Cloudflare Workers via NuxtHub
|
||||||
|
- **Validation**: Zod schemas
|
||||||
|
|
||||||
|
## 📖 MCP Integration
|
||||||
|
|
||||||
|
To use this server with an MCP client:
|
||||||
|
|
||||||
|
1. Configure your MCP client to connect to `https://mcp.arthurdanjou.fr/mcp`
|
||||||
|
2. Or use the API directly via REST endpoints
|
||||||
|
|
||||||
|
Example MCP client configuration:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"artmcp": {
|
||||||
|
"url": "https://mcp.arthurdanjou.fr/mcp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤝 Contributing
|
||||||
|
|
||||||
|
This is a personal portfolio project. Feel free to use it as inspiration for your own MCP server!
|
||||||
|
|
||||||
|
## 📝 License
|
||||||
|
|
||||||
|
Private project - All rights reserved
|
||||||
|
|
||||||
|
## 👤 About
|
||||||
|
|
||||||
|
**Arthur Danjou**
|
||||||
|
- Software Engineer & Mathematics Student
|
||||||
|
- 📍 Paris, France
|
||||||
|
- 🔗 [LinkedIn](https://go.arthurdanjou.fr/linkedin)
|
||||||
|
- 🐙 [GitHub](https://go.arthurdanjou.fr/github)
|
||||||
|
- 📧 [Email](https://go.arthurdanjou.fr/mail-pro)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Built with ❤️ using Nuxt and the Model Context Protocol
|
||||||
|
|
||||||
|
|||||||
@@ -79,13 +79,46 @@ export default defineContentConfig({
|
|||||||
schema: z.object({
|
schema: z.object({
|
||||||
body: z.array(z.object({
|
body: z.array(z.object({
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
url: z.string().url()
|
icon: z.string().optional(),
|
||||||
|
value: z.string().url(),
|
||||||
|
username: z.string().optional()
|
||||||
}))
|
}))
|
||||||
})
|
})
|
||||||
}),
|
}),
|
||||||
hobbies: defineCollection({
|
hobbies: defineCollection({
|
||||||
type: 'page',
|
type: 'page',
|
||||||
source: 'hobbies.md'
|
source: 'hobbies.md'
|
||||||
|
}),
|
||||||
|
languages: defineCollection({
|
||||||
|
type: 'page',
|
||||||
|
source: 'languages.json',
|
||||||
|
schema: z.object({
|
||||||
|
body: z.array(z.object({
|
||||||
|
name: z.string(),
|
||||||
|
level: z.string(),
|
||||||
|
proficiency: z.string()
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
certifications: defineCollection({
|
||||||
|
type: 'page',
|
||||||
|
source: 'certifications.json',
|
||||||
|
schema: z.object({
|
||||||
|
body: z.array(z.object({
|
||||||
|
name: z.string(),
|
||||||
|
issuer: z.string(),
|
||||||
|
date: z.string(),
|
||||||
|
url: z.string().url().optional()
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
mathematics: defineCollection({
|
||||||
|
type: 'page',
|
||||||
|
source: 'mathematics.md'
|
||||||
|
}),
|
||||||
|
profile: defineCollection({
|
||||||
|
type: 'page',
|
||||||
|
source: 'profile.md'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
22
content/certifications.json
Normal file
22
content/certifications.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
TODO: complete
|
||||||
|
|
||||||
|
{
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"name": "Git & GitHub",
|
||||||
|
"issuer": "GitHub Learning Lab",
|
||||||
|
"date": "2021-06",
|
||||||
|
"url": "https://github.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Docker Essentials",
|
||||||
|
"issuer": "Self-taught through practical experience",
|
||||||
|
"date": "2021-09"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Machine Learning Specialization",
|
||||||
|
"issuer": "Various academic courses",
|
||||||
|
"date": "2024-09"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -18,7 +18,8 @@
|
|||||||
{
|
{
|
||||||
"name": "GitHub",
|
"name": "GitHub",
|
||||||
"icon": "i-ph:github-logo-duotone",
|
"icon": "i-ph:github-logo-duotone",
|
||||||
"value": "https://go.arthurdanjou.fr/github"
|
"value": "https://go.arthurdanjou.fr/github",
|
||||||
|
"username": "ArthurDanjou"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Twitter",
|
"name": "Twitter",
|
||||||
@@ -29,6 +30,21 @@
|
|||||||
"name": "Discord",
|
"name": "Discord",
|
||||||
"icon": "i-ph:discord-logo-duotone",
|
"icon": "i-ph:discord-logo-duotone",
|
||||||
"value": "https://go.arthurdanjou.fr/discord"
|
"value": "https://go.arthurdanjou.fr/discord"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Personal Website",
|
||||||
|
"icon": "i-ph:globe-duotone",
|
||||||
|
"value": "https://arthurdanjou.fr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MCP Server",
|
||||||
|
"icon": "i-ph:globe-duotone",
|
||||||
|
"value": "https://mcp.arthurdanjou.fr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Status Page",
|
||||||
|
"icon": "i-ph:fire-duotone",
|
||||||
|
"value": "https://go.arthurdanjou.fr/status"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
19
content/languages.json
Normal file
19
content/languages.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"name": "French",
|
||||||
|
"level": "Native",
|
||||||
|
"proficiency": "C2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "English",
|
||||||
|
"level": "Fluent",
|
||||||
|
"proficiency": "C1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Spanish",
|
||||||
|
"level": "Intermediate",
|
||||||
|
"proficiency": "A2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1
content/mathematics.md
Normal file
1
content/mathematics.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
TODO: complete
|
||||||
34
content/profile.md
Normal file
34
content/profile.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
TODO: complete and convert
|
||||||
|
|
||||||
|
{
|
||||||
|
"shortBio": "Software Engineer & Mathematics Student passionate about AI, Data Science, and Infrastructure. Building scalable solutions at the intersection of theory and practice.",
|
||||||
|
"location": {
|
||||||
|
"current": "Paris, France",
|
||||||
|
"timezone": "Europe/Paris (CET/CEST)",
|
||||||
|
"remote": true
|
||||||
|
},
|
||||||
|
"availability": {
|
||||||
|
"status": "open_to_opportunities",
|
||||||
|
"types": ["internship", "full-time", "part-time", "freelance"],
|
||||||
|
"preferences": ["remote", "hybrid"],
|
||||||
|
"startDate": "2025-06"
|
||||||
|
},
|
||||||
|
"careerGoals": [
|
||||||
|
"Become an expert in Machine Learning Engineering and MLOps",
|
||||||
|
"Contribute to open-source AI/ML projects",
|
||||||
|
"Build scalable data infrastructure for real-world applications",
|
||||||
|
"Combine mathematical rigor with practical engineering solutions"
|
||||||
|
],
|
||||||
|
"workPreferences": {
|
||||||
|
"workStyle": ["remote", "hybrid"],
|
||||||
|
"companySize": ["startup", "scale-up", "enterprise"],
|
||||||
|
"industries": ["AI/ML", "Data Science", "FinTech", "SaaS", "DevOps"],
|
||||||
|
"roles": ["Machine Learning Engineer", "Data Engineer", "Software Engineer", "MLOps Engineer"]
|
||||||
|
},
|
||||||
|
"achievements": [
|
||||||
|
"Built and maintained personal homelab with 10+ self-hosted services",
|
||||||
|
"Developed mini-games for Erisium, one of the largest French-speaking Minecraft servers",
|
||||||
|
"Created multiple full-stack applications using modern web technologies",
|
||||||
|
"Active contributor to various technical projects and communities"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -41,7 +41,6 @@ export default defineNuxtConfig({
|
|||||||
database: true,
|
database: true,
|
||||||
ai: true,
|
ai: true,
|
||||||
analytics: true,
|
analytics: true,
|
||||||
kv: true,
|
|
||||||
cache: true
|
cache: true
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
10
server/api/certifications.get.ts
Normal file
10
server/api/certifications.get.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { queryCollection } from '@nuxt/content/server'
|
||||||
|
|
||||||
|
export default defineCachedEventHandler(async (event) => {
|
||||||
|
return await queryCollection(event, 'certifications')
|
||||||
|
.where('extension', '=', 'json')
|
||||||
|
.first()
|
||||||
|
}, {
|
||||||
|
name: 'certifications-list',
|
||||||
|
maxAge: 3600 // 1 hour
|
||||||
|
})
|
||||||
10
server/api/languages.get.ts
Normal file
10
server/api/languages.get.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { queryCollection } from '@nuxt/content/server'
|
||||||
|
|
||||||
|
export default defineCachedEventHandler(async (event) => {
|
||||||
|
return await queryCollection(event, 'languages')
|
||||||
|
.where('extension', '=', 'json')
|
||||||
|
.first()
|
||||||
|
}, {
|
||||||
|
name: 'languages-list',
|
||||||
|
maxAge: 3600 // 1 hour
|
||||||
|
})
|
||||||
10
server/api/mathematics.get.ts
Normal file
10
server/api/mathematics.get.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { queryCollection } from '@nuxt/content/server'
|
||||||
|
|
||||||
|
export default defineCachedEventHandler(async (event) => {
|
||||||
|
return await queryCollection(event, 'mathematics')
|
||||||
|
.where('extension', '=', 'md')
|
||||||
|
.first()
|
||||||
|
}, {
|
||||||
|
name: 'mathematics-list',
|
||||||
|
maxAge: 3600 // 1 hour
|
||||||
|
})
|
||||||
10
server/api/profile.get.ts
Normal file
10
server/api/profile.get.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { queryCollection } from '@nuxt/content/server'
|
||||||
|
|
||||||
|
export default defineCachedEventHandler(async (event) => {
|
||||||
|
return await queryCollection(event, 'profile')
|
||||||
|
.where('extension', '=', 'md')
|
||||||
|
.first()
|
||||||
|
}, {
|
||||||
|
name: 'profile-info',
|
||||||
|
maxAge: 3600 // 1 hour
|
||||||
|
})
|
||||||
@@ -146,8 +146,8 @@ function createServer() {
|
|||||||
'artmcp-contact',
|
'artmcp-contact',
|
||||||
'resource://artmcp/contact',
|
'resource://artmcp/contact',
|
||||||
{
|
{
|
||||||
title: 'Arthur Danjou - Contact Information',
|
title: 'ArtMCP Contact',
|
||||||
description: 'Contact details for Arthur Danjou, including email, social media profiles, and other communication channels'
|
description: 'Get Contact Information and Social Links of Arthur Danjou including email, LinkedIn, GitHub, Twitter, Discord, and websites'
|
||||||
},
|
},
|
||||||
async (uri) => {
|
async (uri) => {
|
||||||
const result = await $fetch('/api/contact')
|
const result = await $fetch('/api/contact')
|
||||||
@@ -199,6 +199,82 @@ function createServer() {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
server.registerResource(
|
||||||
|
'artmcp-languages',
|
||||||
|
'resource://artmcp/languages',
|
||||||
|
{
|
||||||
|
title: 'Arthur Danjou - Languages',
|
||||||
|
description: 'Get Languages spoken by Arthur Danjou with proficiency levels'
|
||||||
|
},
|
||||||
|
async (uri) => {
|
||||||
|
const result = await $fetch('/api/languages')
|
||||||
|
return {
|
||||||
|
contents: [{
|
||||||
|
uri: uri.href,
|
||||||
|
mimeType: 'application/json',
|
||||||
|
text: JSON.stringify(result, null, 2)
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
server.registerResource(
|
||||||
|
'artmcp-certifications',
|
||||||
|
'resource://artmcp/certifications',
|
||||||
|
{
|
||||||
|
title: 'Arthur Danjou - Certifications',
|
||||||
|
description: 'Get Certifications and achievements of Arthur Danjou'
|
||||||
|
},
|
||||||
|
async (uri) => {
|
||||||
|
const result = await $fetch('/api/certifications')
|
||||||
|
return {
|
||||||
|
contents: [{
|
||||||
|
uri: uri.href,
|
||||||
|
mimeType: 'application/json',
|
||||||
|
text: JSON.stringify(result, null, 2)
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
server.registerResource(
|
||||||
|
'artmcp-mathematics',
|
||||||
|
'resource://artmcp/mathematics',
|
||||||
|
{
|
||||||
|
title: 'Arthur Danjou - Mathematics',
|
||||||
|
description: 'Get information about Arthur Danjou\'s background and knowledge in mathematics, including areas of expertise and academic achievements'
|
||||||
|
},
|
||||||
|
async (uri) => {
|
||||||
|
const result = await $fetch('/api/mathematics')
|
||||||
|
return {
|
||||||
|
contents: [{
|
||||||
|
uri: uri.href,
|
||||||
|
mimeType: 'application/json',
|
||||||
|
text: JSON.stringify(result, null, 2)
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
server.registerResource(
|
||||||
|
'artmcp-profile',
|
||||||
|
'resource://artmcp/profile',
|
||||||
|
{
|
||||||
|
title: 'Arthur Danjou - Profile',
|
||||||
|
description: 'Get comprehensive profile information of Arthur Danjou including bio, location, availability, career goals, and work preferences'
|
||||||
|
},
|
||||||
|
async (uri) => {
|
||||||
|
const result = await $fetch('/api/profile')
|
||||||
|
return {
|
||||||
|
contents: [{
|
||||||
|
uri: uri.href,
|
||||||
|
mimeType: 'application/json',
|
||||||
|
text: JSON.stringify(result, null, 2)
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// Tools
|
// Tools
|
||||||
server.registerTool(
|
server.registerTool(
|
||||||
'get_resume_link',
|
'get_resume_link',
|
||||||
@@ -303,8 +379,8 @@ function createServer() {
|
|||||||
server.registerPrompt(
|
server.registerPrompt(
|
||||||
'artmcp-contact',
|
'artmcp-contact',
|
||||||
{
|
{
|
||||||
title: 'Request Contact Information',
|
title: 'Get Contact Information and Social Links of Arthur Danjou',
|
||||||
description: 'Generate a prompt to retrieve Arthur Danjou\'s contact details and communication channels.'
|
description: 'Get Contact Information and Social Links of Arthur Danjou including email, social media, and websites'
|
||||||
},
|
},
|
||||||
async () => {
|
async () => {
|
||||||
return {
|
return {
|
||||||
@@ -312,7 +388,7 @@ function createServer() {
|
|||||||
role: 'user',
|
role: 'user',
|
||||||
content: {
|
content: {
|
||||||
type: 'text',
|
type: 'text',
|
||||||
text: `How can I contact Arthur Danjou?`
|
text: `How can I contact Arthur Danjou? Provide all contact methods and social links.`
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
@@ -420,6 +496,82 @@ function createServer() {
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
server.registerPrompt(
|
||||||
|
'artmcp-languages',
|
||||||
|
{
|
||||||
|
title: 'Get Languages of Arthur Danjou',
|
||||||
|
description: 'Get Languages spoken by Arthur Danjou with proficiency levels'
|
||||||
|
},
|
||||||
|
async () => {
|
||||||
|
return {
|
||||||
|
messages: [{
|
||||||
|
role: 'user',
|
||||||
|
content: {
|
||||||
|
type: 'text',
|
||||||
|
text: `What languages does Arthur Danjou speak and at what proficiency level?`
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
server.registerPrompt(
|
||||||
|
'artmcp-certifications',
|
||||||
|
{
|
||||||
|
title: 'Get Certifications of Arthur Danjou',
|
||||||
|
description: 'Get Certifications and achievements of Arthur Danjou'
|
||||||
|
},
|
||||||
|
async () => {
|
||||||
|
return {
|
||||||
|
messages: [{
|
||||||
|
role: 'user',
|
||||||
|
content: {
|
||||||
|
type: 'text',
|
||||||
|
text: `What certifications and professional achievements does Arthur Danjou have?`
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
server.registerPrompt(
|
||||||
|
'artmcp-mathematics',
|
||||||
|
{
|
||||||
|
title: 'Get Mathematical Background Knowledge of Arthur Danjou',
|
||||||
|
description: 'Get information about Arthur Danjou\'s background and knowledge in mathematics, including areas of expertise and academic achievements'
|
||||||
|
},
|
||||||
|
async () => {
|
||||||
|
return {
|
||||||
|
messages: [{
|
||||||
|
role: 'user',
|
||||||
|
content: {
|
||||||
|
type: 'text',
|
||||||
|
text: `Provide me information about Arthur Danjou's background and knowledge in mathematics, including areas of expertise and academic achievements.`
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
server.registerPrompt(
|
||||||
|
'artmcp-profile',
|
||||||
|
{
|
||||||
|
title: 'Get Profile Information of Arthur Danjou',
|
||||||
|
description: 'Get comprehensive profile information including bio, location, availability, and career goals'
|
||||||
|
},
|
||||||
|
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.`
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return server
|
return server
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user