Token导航 LogoToken导航TokenDH.com
poro MCP logo
运维云端stdio官方级别未说明来源级核验

poro MCP

MCP Server

一个基于Quarkus和vLLM的芬兰文本生成服务,提供高质量的芬兰文本生成功能,支持OpenAI兼容API。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
Java云端部署Docker

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

earvonen

提供方

earvonen

最后核验

2026/5/17 20:19

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -e VLLM_BASE_URL=http://vllm:8000 \

详细介绍

Quarkus MCP服务器

模型上下文协议(MCP)服务器的Java+Quarkus实现,通过与OpenAI兼容的API,使用vLLM服务的LumiOpen/Lama-Poro-2-70B-Instruction模型提供高质量的芬兰文本生成。

特性

  • MCP协议:完整的JSON-RPC 2.0实现,支持SSE流
  • 工具: draft_finnish -从结构化笔记中撰写高质量的芬兰语文本
  • Quarkus命令模式:不需要HTTP服务器,纯stdio通信
  • OpenAI兼容的API:适用于vLLM和任何与OpenAI兼容的端点

先决条件

  • Java 21
  • Maven 3.9+
  • 使用与OpenAI兼容的API(或任何兼容的端点)运行的vLLM服务器

环境变量

必修的:

  • VLLM_BASE_URLvLLM服务器的基本URL(例如。, http://vllm:8000)
  • PORO2_MODEL_NAME:型号名称(例如。, LumiOpen/Llama-Poro-2-70B-Instruct)

可选:

  • VLLM_API_KEY:用于身份验证的API密钥(如果需要)
  • DEFAULT_TEMPERATURE:文本生成温度(默认值: 0.7)
  • DEFAULT_MAX_TOKENS:要生成的最大令牌数(默认值: 800)

本地运行

发展模式

export VLLM_BASE_URL=http://localhost:8000
export PORO2_MODEL_NAME="LumiOpen/Llama-Poro-2-70B-Instruct"
./mvnw quarkus:dev

构建并运行

# Build
./mvnw clean package

# Run
export VLLM_BASE_URL=http://localhost:8000
export PORO2_MODEL_NAME="LumiOpen/Llama-Poro-2-70B-Instruct"
java -jar target/quarkus-mcp-1.0.0-SNAPSHOT.jar

测试

单元测试

./mvnw test

HTTP端点

该应用程序公开了HTTP端点,以便从容器外部更容易访问:

  • GET /mcp/health -健康检查端点
  • POST /mcp/initialize?id= -初始化MCP连接
  • POST /mcp/tools/list?id= -列出可用工具
  • POST /mcp/tools/call?id= -调用工具(需要JSON正文)
  • POST /mcp/ping?id= -Ping端点

HTTP请求示例:

# Health check
curl http://localhost:8080/mcp/health

# Initialize
curl -X POST http://localhost:8080/mcp/initialize?id=1 \
  -H "Content-Type: application/json"

# List tools
curl -X POST http://localhost:8080/mcp/tools/list?id=2 \
  -H "Content-Type: application/json"

# Call tool
curl -X POST http://localhost:8080/mcp/tools/call?id=3 \
  -H "Content-Type: application/json" \
  -d '{
    "name": "draft_finnish",
    "arguments": {
      "brief": "Test task",
      "key_points": ["Point 1", "Point 2"]
    }
  }'

SSE流媒体接口

应用程序通过服务器发送事件(SSE)实现MCP协议:

# Terminal 1: connect to the SSE stream
curl -N http://localhost:8080/mcp/stream?clientId=demo

# Terminal 2: send an MCP request
curl -X POST http://localhost:8080/mcp/request?clientId=demo \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "req-1",
    "method": "tools/list",
    "params": {}
  }'

# The response appears in Terminal 1 as a streamed SSE event

您可以通过以下方式发送额外的JSON-RPC请求(初始化、工具/调用、ping) /mcp/request 端点,并通过SSE流实时接收响应。

echo '{"jsonrpc":"2.0","id":4,"method":"ping","params":{}}' | java -jar target/quarkus-mcp-1.0.0-SNAPSHOT.jar

工具:draft_finnish

描述

根据给定的笔记撰写高质量的芬兰语文本。

输入架构

{
  "type": "object",
  "properties": {
    "brief": {
      "type": "string",
      "description": "Short task summary in English or Finnish"
    },
    "key_points": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Bullet points to cover"
    },
    "tone": {
      "type": "string",
      "enum": ["neutral", "friendly", "professional", "persuasive", "concise"],
      "default": "professional"
    },
    "length": {
      "type": "string",
      "enum": ["short", "medium", "long"],
      "default": "medium"
    },
    "audience": {
      "type": "string",
      "description": "Intended audience (e.g., executives, developers, general)"
    }
  },
  "required": ["brief", "key_points"],
  "additionalProperties": false
}

响应格式

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": ""
      }
    ],
    "isError": false
  }
}

码头工人

JVM映像

docker build -t quarkus-mcp:latest .
docker run -e VLLM_BASE_URL=http://vllm:8000 \
           -e PORO2_MODEL_NAME="LumiOpen/Llama-Poro-2-70B-Instruct" \
           -i quarkus-mcp:latest

本机映像

docker build -f Dockerfile.native -t quarkus-mcp:native .
docker run -e VLLM_BASE_URL=http://vllm:8000 \
           -e PORO2_MODEL_NAME="LumiOpen/Llama-Poro-2-70B-Instruct" \
           -i quarkus-mcp:native

OpenShift/Kubernetes

部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: quarkus-mcp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: quarkus-mcp
  template:
    metadata:
      labels:
        app: quarkus-mcp
    spec:
      containers:
      - name: quarkus-mcp
        image: quarkus-mcp:latest
        env:
        - name: VLLM_BASE_URL
          valueFrom:
            configMapKeyRef:
              name: quarkus-mcp-config
              key: vllm-base-url
        - name: PORO2_MODEL_NAME
          valueFrom:
            configMapKeyRef:
              name: quarkus-mcp-config
              key: poro2-model-name
        - name: VLLM_API_KEY
          valueFrom:
            secretKeyRef:
              name: quarkus-mcp-secret
              key: api-key
        stdin: true
        tty: true

康福特地图

apiVersion: v1
kind: ConfigMap
metadata:
  name: quarkus-mcp-config
data:
  vllm-base-url: "http://vllm:8000"
  poro2-model-name: "LumiOpen/Llama-Poro-2-70B-Instruct"

秘密

apiVersion: v1
kind: Secret
metadata:
  name: quarkus-mcp-secret
type: Opaque
stringData:
  api-key: "your-api-key-here"

建筑

  • 主指挥部:从stdin读取JSON-RPC并写入stdout的入口点
  • McpService:处理MCP协议方法(初始化、工具/列表、工具/调用、ping)
  • DraftFinnishTool:构建提示并调用vLLM API的工具实现
  • OpenAiClientService:OpenAI兼容REST客户端的服务包装器
  • OpenAIClient:vLLM API的Quarkus REST客户端接口

日志记录

所有日志都写入stderr,以避免损坏stdout上的JSON-RPC流。配置登录 application.properties 或通过系统属性。

错误处理

服务器实现了正确的JSON-RPC 2.0错误代码:

  • -32700:分析错误
  • -32600:无效请求
  • -32601:未找到方法
  • -32602:无效参数
  • -32603:内部错误

许可证

Apache许可证2.0

目录标签

目录标签

Java云端部署Docker文本生成本地部署芬兰语处理OpenAI兼容JSON-RPCQuarkus

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP