#
tokens: 1356/50000 4/4 files
lines: off (toggle) GitHub
raw markdown copy
# Directory Structure

```
├── .env.example
├── .gitignore
├── chatmcp.yaml
├── docker-compose.yml
├── Dockerfile
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
├── src
│   ├── index.ts
│   ├── text_eval.ts
│   └── utils.ts
└── tsconfig.json
```

# Files

--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------

```yaml
services:
  mcp-server:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "${MCP_PORT}:${MCP_PORT}"
    environment:
      - NODE_ENV=production
      - PORT=${MCP_PORT}
      - TRANSLATION_API_KEY=${TRANSLATION_API_KEY}
      - TRANSLATION_MODEL=${TRANSLATION_MODEL}
      - TRANSLATION_BASE_URL=${TRANSLATION_BASE_URL}
    restart: always

```

--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------

```json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "esModuleInterop": true,
    "strict": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist",
    "declaration": true,
    "sourceMap": true,
    "resolveJsonModule": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "dist"
  ]
} 
```

--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------

```json
{
  "name": "airylark-mcp-server",
  "version": "0.1.0",
  "main": "dist/index.js",
  "description": "AiryLark的ModelContextProtocol(MCP)服务器,提供高精度翻译API",
  "license": "SEE LICENSE IN ../LICENSE",
  "author": "AiryLark Team",
  "repository": {
    "type": "git",
    "url": "https://github.com/wizd/airylark.git",
    "directory": "mcp-server"
  },
  "keywords": [
    "mcp",
    "translation",
    "openai",
    "api",
    "airylark"
  ],
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js",
    "dev": "node --loader ts-node/esm src/index.ts",
    "lint": "eslint src/**/*.ts",
    "test": "jest",
    "clean": "rimraf dist",
    "prebuild": "npm run clean"
  },
  "dependencies": {
    "@chatmcp/sdk": "^1.0.5",
    "@modelcontextprotocol/sdk": "^1.8.0",
    "dotenv": "^16.4.7",
    "express": "^5.1.0",
    "node-fetch": "^3.3.2",
    "zod": "^3.24.2"
  },
  "devDependencies": {
    "@types/express": "^5.0.1",
    "@types/node": "^20",
    "eslint": "^9",
    "jest": "^29.7.0",
    "rimraf": "^5.0.5",
    "ts-jest": "^29.1.2",
    "ts-node": "^10.9.2",
    "typescript": "^5"
  },
  "engines": {
    "node": ">=18.0.0"
  },
  "type": "module"
}

```

--------------------------------------------------------------------------------
/chatmcp.yaml:
--------------------------------------------------------------------------------

```yaml
params:
  type: object
  properties:
    TRANSLATION_API_KEY:
      type: string
      description: API密钥,用于翻译服务
    TRANSLATION_BASE_URL:
      type: string
      description: 翻译API基础URL
      default: "https://api.openai.com/v1"
    TRANSLATION_MODEL:
      type: string
      description: 翻译使用的模型名称
      default: "gpt-4o"
  required:
    - TRANSLATION_API_KEY

rest:
  name: translation-server
  port: 3031
  endpoint: /api

npx:
  command:
    | TRANSLATION_API_KEY={TRANSLATION_API_KEY} TRANSLATION_BASE_URL={TRANSLATION_BASE_URL} TRANSLATION_MODEL={TRANSLATION_MODEL} npx -y server-translation-mcp --mode=rest
  config:
    | {
        "mcpServers": {
          "translation-server": {
            "command": "npx",
            "args": [
              "-y",
              "server-translation-mcp",
              "--mode=rest"
            ],
            "env": {
              "TRANSLATION_API_KEY": "YOUR_API_KEY_HERE",
              "TRANSLATION_BASE_URL": "https://api.openai.com/v1",
              "TRANSLATION_MODEL": "gpt-4o"
            }
          }
        }
      }

docker:
  command:
    | docker run -i --rm -e TRANSLATION_API_KEY={TRANSLATION_API_KEY} -e TRANSLATION_BASE_URL={TRANSLATION_BASE_URL} -e TRANSLATION_MODEL={TRANSLATION_MODEL} -p 3031:3031 mcp/translation-server
  config:
    | {
        "mcpServers": {
          "translation-server": {
            "command": "docker",
            "args": [
              "run",
              "-i",
              "--rm",
              "-e",
              "TRANSLATION_API_KEY",
              "-e",
              "TRANSLATION_BASE_URL",
              "-e",
              "TRANSLATION_MODEL",
              "-p",
              "3031:3031",
              "mcp/translation-server"
            ],
            "env": {
              "TRANSLATION_API_KEY": "YOUR_API_KEY_HERE",
              "TRANSLATION_BASE_URL": "https://api.openai.com/v1",
              "TRANSLATION_MODEL": "gpt-4o"
            }
          }
        }
      } 
```