alioss-mcp
Version:
为AI编码工具提供阿里云OSS访问能力的Model Context Protocol服务器
114 lines • 3.49 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AliOssServer = void 0;
const ali_oss_1 = __importDefault(require("ali-oss"));
const path_1 = __importDefault(require("path"));
class AliOssServer {
accessKeyId;
accessKeySecret;
bucket;
region;
ossClient;
constructor(accessKeyId, accessKeySecret, bucket, region = "oss-cn-beijing") {
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
this.bucket = bucket;
this.region = region;
this.ossClient = new ali_oss_1.default({
accessKeyId: this.accessKeyId,
accessKeySecret: this.accessKeySecret,
bucket: this.bucket,
region: this.region,
});
}
async uploadFile(fileName, file) {
const result = await this.ossClient.put(fileName, path_1.default.normalize(file));
if (result.res.status === 200) {
return result.url;
}
return null;
}
async downloadFile(fileName) {
const result = await this.ossClient.get(fileName);
if (result.res.status === 200) {
return result.content;
}
return null;
}
async listObjects(prefix = "", maxKeys = 100) {
const result = await this.ossClient.list({
prefix,
"max-keys": maxKeys,
}, {});
if (result.res.status === 200) {
return {
objects: result.objects,
prefixes: result.prefixes,
nextMarker: result.nextMarker,
isTruncated: result.isTruncated,
};
}
return null;
}
async deleteObject(fileName) {
const result = await this.ossClient.delete(fileName);
if (result.res.status === 204) {
return true;
}
return false;
}
async deleteMultipleObjects(fileNames) {
const result = await this.ossClient.deleteMulti(fileNames);
if (result.res.status === 200) {
return {
deleted: result.deleted,
};
}
return null;
}
async getObjectUrl(fileName, expires = 3600) {
return this.ossClient.signatureUrl(fileName, { expires });
}
async getObjectMeta(fileName) {
const result = await this.ossClient.head(fileName);
if (result.res.status === 200) {
return {
meta: result.meta,
headers: result.res.headers,
};
}
return null;
}
async copyObject(source, target) {
const result = await this.ossClient.copy(target, source);
if (result.res.status === 200) {
return {
data: result.data,
};
}
return null;
}
async putObjectACL(fileName, acl) {
try {
await this.ossClient.putACL(fileName, acl);
return true;
}
catch {
return false;
}
}
async getObjectACL(fileName) {
const result = await this.ossClient.getACL(fileName);
if (result.res && result.res.status === 200) {
return {
acl: result.acl,
};
}
return null;
}
}
exports.AliOssServer = AliOssServer;
//# sourceMappingURL=alioss.js.map