AI组合服务

一个双协议的AI组合服务器,提供结构化工具访问和对话式发现功能,用于展示经验、技能、项目和服务。

  • by MarioAderman
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MarioAderman/ai-portfolio-server

使用说明

马里奥AI投资组合

双协议AI组合服务器 MCP服务器 用于结构化工具访问和 A2A代理 (“你见过马里奥吗?”)用于对话发现。两者都提供了关于我的经验、技能、项目和服务的相同数据。

为什么存在

传统的投资组合是静态的。这个让潜在客户使用他们自己的人工智能工具与我的投资组合进行交互——提出具体问题,获得结构化答案,并发现我能为他们做些什么。该媒介展示了所销售的技能。

建筑

mario-ai-portfolio/
├── src/
│   ├── mcp_server.py        # FastMCP server — 7 tools (port 8000)
│   ├── a2a_server.py        # A2A agent — (port 9000)
│   └── data/                # Shared content modules
│       ├── about.py
│       ├── skills.py
│       ├── services.py
│       ├── projects.py
│       ├── experience.py
│       └── contact.py
├── Dockerfile.mcp           # MCP server container
├── Dockerfile.a2a           # A2A agent container
└── pyproject.toml

MCP服务器

通过Streamable HTTP公开的7个工具:

工具 说明
get_about_me() 专业简介、背景、时区、可用性
get_skills(category?) 按类别划分的技术技能(人工智能、自动化、后端、前端)
get_services() 服务产品和定价方法
get_projects() 投资组合项目汇总表
get_project_detail(name) 深入了解特定项目
get_experience() 专业时间表和教育
get_contact_info() 联系方式以及如何招聘

连接到MCP服务器

将以下配置添加到您选择的MCP客户端:

克劳德代码 --在您的终端中运行:

claude mcp add mario-portfolio --transport http https://mcp.fintegra.solutions/mcp

克劳德桌面版 --添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "mario-portfolio": {
      "url": "https://mcp.fintegra.solutions/mcp"
    }
  }
}

光标/VS代码 --添加到 .cursor/mcp.json 或 .vscode/mcp.json:

{
  "servers": {
    "mario-portfolio": {
      "url": "https://mcp.fintegra.solutions/mcp"
    }
  }
}

然后,只需向你的人工智能助手询问有关马里奥的任何信息——技能、项目、服务、可用性。

A2A特工:“你见过马里奥吗?”

由Llama 3.1 8B通过HF推理API提供的会话代理到代理接口。支持通过以下方式发现代理 A2A协议.

  • 代理卡: https://agent.fintegra.solutions/.well-known/agent-card.json
  • 技能: 投资组合查询、服务查询、可用性检查

与A2A代理交互

发现代理 --取代理卡:

curl https://agent.fintegra.solutions/.well-known/agent-card.json

发送消息 --通过JSON-RPC 2.0:

curl https://agent.fintegra.solutions/ \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "message/send",
    "params": {
      "message": {
        "role": "user",
        "parts": [{"kind": "text", "text": "What projects has Mario built?"}],
        "messageId": "msg-001"
      }
    }
  }'

来自Python --使用a2a-sdk客户端:

from a2a.client import A2AClient

async with A2AClient(url="https://agent.fintegra.solutions/") as client:
    card = await client.get_card()
    print(card.name)  # "Have You Met Mario? — AI Automation Engineer"

    response = await client.send_message(
        message={"role": "user", "parts": [{"kind": "text", "text": "What services do you offer?"}], "messageId": "msg-001"}
    )
    print(response)

任何与A2A兼容的代理或编排器都可以通过代理卡端点自动发现此代理并与之交互。

技术栈

  • MCP: FastMCP v2——Python,流式HTTP
  • A2A: a2a-sdk --官方SDK,JSON-RPC 2.0
  • LLM Llama 3.1 8B通过HF推理API进行指导
  • 部署: Docker、EasyPanel、Hostinger虚拟专用服务器
  • 域名: fintegra.solutions (子域: mcp.*, agent.*)

在本地运行

# MCP server (port 8000)
uv run python -m src.mcp_server

# A2A agent (port 9000) — requires HF_TOKEN in .env
uv run python -m src.a2a_server

部署

通过EasyPanel在Hostinger VPS上部署的两个Docker服务:

服务 Dockerfile 端口 域
MCP服务器 Dockerfile.mcp 8000 mcp.fintegra.solutions
A2A代理 Dockerfile.a2a 9000 agent.fintegra.solutions

通过Let's Encrypt实现HTTPS(由EasyPanel/Traefik管理)。

许可证

麻省理工学院