awesome-copilot-mcp 0.0.1-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +95 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +590 -0
- package/dist/cli.js.map +1 -0
- package/dist/github-adapter.d.ts +33 -0
- package/dist/github-adapter.d.ts.map +1 -0
- package/dist/github-adapter.js +226 -0
- package/dist/github-adapter.js.map +1 -0
- package/dist/http-server.d.ts +55 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +270 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +25 -0
- package/dist/logger.js.map +1 -0
- package/dist/mcp-prompts.d.ts +18 -0
- package/dist/mcp-prompts.d.ts.map +1 -0
- package/dist/mcp-prompts.js +81 -0
- package/dist/mcp-prompts.js.map +1 -0
- package/dist/mcp-resources.d.ts +37 -0
- package/dist/mcp-resources.d.ts.map +1 -0
- package/dist/mcp-resources.js +394 -0
- package/dist/mcp-resources.js.map +1 -0
- package/dist/mcp-server.d.ts +11 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +49 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp-shared.d.ts +10 -0
- package/dist/mcp-shared.d.ts.map +1 -0
- package/dist/mcp-shared.js +160 -0
- package/dist/mcp-shared.js.map +1 -0
- package/dist/mcp-tools.d.ts +41 -0
- package/dist/mcp-tools.d.ts.map +1 -0
- package/dist/mcp-tools.js +249 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/sse.d.ts +15 -0
- package/dist/sse.d.ts.map +1 -0
- package/dist/sse.js +11 -0
- package/dist/sse.js.map +1 -0
- package/dist/types.d.ts +94 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/metadata.json +5767 -0
- package/package.json +85 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.GitHubAdapter = void 0;
|
|
40
|
+
const axios_1 = __importDefault(require("axios"));
|
|
41
|
+
const fs = __importStar(require("fs-extra"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const logger_1 = require("./logger");
|
|
44
|
+
class GitHubAdapter {
|
|
45
|
+
client;
|
|
46
|
+
memoryCache = new Map();
|
|
47
|
+
repoConfig;
|
|
48
|
+
constructor(config) {
|
|
49
|
+
this.repoConfig = config;
|
|
50
|
+
const headers = {
|
|
51
|
+
'User-Agent': 'awesome-copilot-mcp/1.0.0'
|
|
52
|
+
};
|
|
53
|
+
this.client = axios_1.default.create({
|
|
54
|
+
headers,
|
|
55
|
+
timeout: 30000
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
getCached(key) {
|
|
59
|
+
const entry = this.memoryCache.get(key);
|
|
60
|
+
if (!entry)
|
|
61
|
+
return null;
|
|
62
|
+
const now = Date.now();
|
|
63
|
+
if (now - entry.timestamp > entry.ttl * 1000) {
|
|
64
|
+
this.memoryCache.delete(key);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return entry.data;
|
|
68
|
+
}
|
|
69
|
+
setCached(key, data, ttl = 3600) {
|
|
70
|
+
this.memoryCache.set(key, {
|
|
71
|
+
data,
|
|
72
|
+
timestamp: Date.now(),
|
|
73
|
+
ttl
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async fetchFile(filePath) {
|
|
77
|
+
const cacheKey = `file_${filePath.replace(/\//g, '_')}`;
|
|
78
|
+
const cached = this.getCached(cacheKey);
|
|
79
|
+
if (cached) {
|
|
80
|
+
return cached;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const url = `https://raw.githubusercontent.com/${this.repoConfig.owner}/${this.repoConfig.repo}/${this.repoConfig.branch || 'main'}/${filePath}`;
|
|
84
|
+
const response = await this.client.get(url);
|
|
85
|
+
const content = typeof response.data === 'string' ? response.data : JSON.stringify(response.data);
|
|
86
|
+
this.setCached(cacheKey, content);
|
|
87
|
+
return content;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
logger_1.logger.error(`Failed to fetch file ${filePath}: ${error}`);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Public wrapper to fetch raw file content from the repository.
|
|
96
|
+
*/
|
|
97
|
+
async fetchRawFile(filePath) {
|
|
98
|
+
return this.fetchFile(filePath);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Load all files from a skill directory.
|
|
102
|
+
*/
|
|
103
|
+
async loadSkillDirectory(skillName) {
|
|
104
|
+
const index = await this.fetchIndex();
|
|
105
|
+
const skill = index.skills.find(s => s.name === skillName);
|
|
106
|
+
if (!skill) {
|
|
107
|
+
throw new Error(`Skill not found: ${skillName}`);
|
|
108
|
+
}
|
|
109
|
+
const skillDir = skill.path.replace(/\/SKILL\.md$/, '').replace(/SKILL\.md$/, '');
|
|
110
|
+
const fileList = skill.files || ['SKILL.md'];
|
|
111
|
+
const files = await Promise.all(fileList.map(async (relativePath) => {
|
|
112
|
+
const fullPath = `${skillDir}/${relativePath}`;
|
|
113
|
+
try {
|
|
114
|
+
const content = await this.fetchRawFile(fullPath);
|
|
115
|
+
return { path: relativePath, content };
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
logger_1.logger.warn(`Failed to fetch skill file ${fullPath}: ${error}`);
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}));
|
|
122
|
+
return {
|
|
123
|
+
name: skillName,
|
|
124
|
+
files: files.filter((f) => f !== null)
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
async loadBundledMetadata() {
|
|
128
|
+
try {
|
|
129
|
+
const bundledPath = path.resolve(__dirname, '..', 'metadata.json');
|
|
130
|
+
if (await fs.pathExists(bundledPath)) {
|
|
131
|
+
logger_1.logger.info(`Loading bundled metadata from ${bundledPath}`);
|
|
132
|
+
const metadata = await fs.readJson(bundledPath);
|
|
133
|
+
if (metadata.version && Array.isArray(metadata.agents)) {
|
|
134
|
+
return {
|
|
135
|
+
agents: metadata.agents || [],
|
|
136
|
+
prompts: metadata.prompts || [],
|
|
137
|
+
instructions: metadata.instructions || [],
|
|
138
|
+
skills: metadata.skills || [],
|
|
139
|
+
collections: metadata.collections || [],
|
|
140
|
+
lastUpdated: metadata.generatedAt || new Date().toISOString()
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
logger_1.logger.warn(`Failed to load bundled metadata: ${error}`);
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
async fetchRemoteIndex() {
|
|
151
|
+
logger_1.logger.info('Attempting to download lean metadata index...');
|
|
152
|
+
if (this.repoConfig.metadataUrl) {
|
|
153
|
+
try {
|
|
154
|
+
logger_1.logger.info(`Fetching metadata from hosted URL: ${this.repoConfig.metadataUrl}`);
|
|
155
|
+
const response = await this.client.get(this.repoConfig.metadataUrl);
|
|
156
|
+
const metadata = response.data;
|
|
157
|
+
if (metadata.version && Array.isArray(metadata.agents)) {
|
|
158
|
+
logger_1.logger.info(`✓ Hosted metadata index loaded (v${metadata.version})`);
|
|
159
|
+
return {
|
|
160
|
+
agents: metadata.agents || [],
|
|
161
|
+
prompts: metadata.prompts || [],
|
|
162
|
+
instructions: metadata.instructions || [],
|
|
163
|
+
skills: metadata.skills || [],
|
|
164
|
+
collections: metadata.collections || [],
|
|
165
|
+
lastUpdated: metadata.generatedAt || new Date().toISOString()
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (err) {
|
|
170
|
+
logger_1.logger.warn(`Failed to fetch hosted metadata: ${err}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
const content = await this.fetchFile('metadata.json');
|
|
175
|
+
const metadata = JSON.parse(content);
|
|
176
|
+
if (metadata.version && Array.isArray(metadata.agents)) {
|
|
177
|
+
logger_1.logger.info(`✓ Remote metadata index loaded (v${metadata.version})`);
|
|
178
|
+
return {
|
|
179
|
+
agents: metadata.agents || [],
|
|
180
|
+
prompts: metadata.prompts || [],
|
|
181
|
+
instructions: metadata.instructions || [],
|
|
182
|
+
skills: metadata.skills || [],
|
|
183
|
+
collections: metadata.collections || [],
|
|
184
|
+
lastUpdated: metadata.generatedAt || new Date().toISOString()
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
throw new Error('Invalid metadata format');
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
logger_1.logger.error(`Failed to fetch remote index: ${err}`);
|
|
191
|
+
return {
|
|
192
|
+
agents: [], prompts: [], instructions: [], skills: [], collections: [],
|
|
193
|
+
lastUpdated: new Date().toISOString()
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Main entry point for data loading.
|
|
199
|
+
*/
|
|
200
|
+
async fetchIndex(forceRemote = false) {
|
|
201
|
+
const cacheKey = 'index_v2';
|
|
202
|
+
if (!forceRemote) {
|
|
203
|
+
const cached = this.getCached(cacheKey);
|
|
204
|
+
if (cached) {
|
|
205
|
+
return cached;
|
|
206
|
+
}
|
|
207
|
+
const bundledMetadata = await this.loadBundledMetadata();
|
|
208
|
+
if (bundledMetadata) {
|
|
209
|
+
this.setCached(cacheKey, bundledMetadata);
|
|
210
|
+
return bundledMetadata;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const remoteMetadata = await this.fetchRemoteIndex();
|
|
214
|
+
this.setCached(cacheKey, remoteMetadata);
|
|
215
|
+
return remoteMetadata;
|
|
216
|
+
}
|
|
217
|
+
async refresh() {
|
|
218
|
+
this.memoryCache.clear();
|
|
219
|
+
return this.fetchIndex(true);
|
|
220
|
+
}
|
|
221
|
+
clearCache() {
|
|
222
|
+
this.memoryCache.clear();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.GitHubAdapter = GitHubAdapter;
|
|
226
|
+
//# sourceMappingURL=github-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-adapter.js","sourceRoot":"","sources":["../src/github-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Express } from 'express';
|
|
2
|
+
import { IndexData } from './types';
|
|
3
|
+
interface HttpServerOptions {
|
|
4
|
+
port?: number;
|
|
5
|
+
host?: string;
|
|
6
|
+
authToken?: string;
|
|
7
|
+
allowedOrigins?: string[];
|
|
8
|
+
allowedHosts?: string[];
|
|
9
|
+
bodyLimit?: string;
|
|
10
|
+
rateLimit?: {
|
|
11
|
+
windowMs: number;
|
|
12
|
+
max: number;
|
|
13
|
+
};
|
|
14
|
+
tls?: {
|
|
15
|
+
key: string | Buffer;
|
|
16
|
+
cert: string | Buffer;
|
|
17
|
+
ca?: string | Buffer;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
interface AdapterLike {
|
|
21
|
+
fetchIndex: () => Promise<IndexData>;
|
|
22
|
+
refresh: () => Promise<IndexData>;
|
|
23
|
+
loadSkillDirectory: (name: string) => Promise<{
|
|
24
|
+
name: string;
|
|
25
|
+
files: Array<{
|
|
26
|
+
path: string;
|
|
27
|
+
content: string;
|
|
28
|
+
}>;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export declare class HttpServer {
|
|
32
|
+
private app;
|
|
33
|
+
private server?;
|
|
34
|
+
private adapter;
|
|
35
|
+
private options;
|
|
36
|
+
private tools;
|
|
37
|
+
private prompts;
|
|
38
|
+
private resources;
|
|
39
|
+
private mcpServer;
|
|
40
|
+
private transport;
|
|
41
|
+
private activeRequests;
|
|
42
|
+
private connected;
|
|
43
|
+
private connectPromise?;
|
|
44
|
+
constructor(adapter: AdapterLike, options?: HttpServerOptions);
|
|
45
|
+
private attachErrorHandlers;
|
|
46
|
+
private configureSecurity;
|
|
47
|
+
getApp(): Express;
|
|
48
|
+
private setupRoutes;
|
|
49
|
+
addActiveRequestForTest(id: string, controller: AbortController): void;
|
|
50
|
+
start(): Promise<void>;
|
|
51
|
+
stop(): Promise<void>;
|
|
52
|
+
private ensureConnected;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAQxE,OAAO,EAAE,SAAS,EAAiD,MAAM,SAAS,CAAC;AAQnF,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC7E;AAOD,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAClH;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAAC,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgC;IAEjD,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAC,CAAgB;gBAE3B,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB;IA+DjE,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,iBAAiB;IAiEzB,MAAM;IAIN,OAAO,CAAC,WAAW;IA8CnB,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe;IAIzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAmBb,eAAe;CAS9B"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HttpServer = void 0;
|
|
7
|
+
const http_1 = __importDefault(require("http"));
|
|
8
|
+
const https_1 = __importDefault(require("https"));
|
|
9
|
+
const express_js_1 = require("@modelcontextprotocol/sdk/server/express.js");
|
|
10
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
11
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
12
|
+
const logger_1 = require("./logger");
|
|
13
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
14
|
+
const mcp_tools_1 = require("./mcp-tools");
|
|
15
|
+
const mcp_prompts_1 = require("./mcp-prompts");
|
|
16
|
+
const mcp_resources_1 = require("./mcp-resources");
|
|
17
|
+
const mcp_shared_1 = require("./mcp-shared");
|
|
18
|
+
class HttpServer {
|
|
19
|
+
app;
|
|
20
|
+
server;
|
|
21
|
+
adapter;
|
|
22
|
+
options;
|
|
23
|
+
tools;
|
|
24
|
+
prompts;
|
|
25
|
+
resources;
|
|
26
|
+
mcpServer;
|
|
27
|
+
transport;
|
|
28
|
+
// Promote activeRequests to a class member so tests can validate cancel logic
|
|
29
|
+
activeRequests = new Map();
|
|
30
|
+
connected = false;
|
|
31
|
+
connectPromise;
|
|
32
|
+
constructor(adapter, options = {}) {
|
|
33
|
+
this.adapter = adapter;
|
|
34
|
+
this.options = {
|
|
35
|
+
port: options.port ?? 8080,
|
|
36
|
+
host: options.host ?? '127.0.0.1',
|
|
37
|
+
authToken: options.authToken,
|
|
38
|
+
allowedOrigins: options.allowedOrigins,
|
|
39
|
+
allowedHosts: options.allowedHosts,
|
|
40
|
+
bodyLimit: options.bodyLimit ?? '1mb',
|
|
41
|
+
rateLimit: options.rateLimit,
|
|
42
|
+
tls: options.tls,
|
|
43
|
+
};
|
|
44
|
+
// Use createMcpExpressApp directly as the main application
|
|
45
|
+
this.app = (0, express_js_1.createMcpExpressApp)({
|
|
46
|
+
host: this.options.host ?? '127.0.0.1',
|
|
47
|
+
allowedHosts: this.options.allowedHosts
|
|
48
|
+
});
|
|
49
|
+
// Apply security/custom middlewares
|
|
50
|
+
// Note: createMcpExpressApp already includes express.json() and host validation.
|
|
51
|
+
this.configureSecurity();
|
|
52
|
+
// Initialize MCP helpers
|
|
53
|
+
this.tools = new mcp_tools_1.MCPTools(this.adapter);
|
|
54
|
+
this.prompts = new mcp_prompts_1.MCPPrompts();
|
|
55
|
+
this.resources = new mcp_resources_1.MCPResources(this.adapter);
|
|
56
|
+
// Shared MCP server + transport (stateless mode)
|
|
57
|
+
this.mcpServer = new index_js_1.Server({
|
|
58
|
+
name: 'awesome-copilot-mcp',
|
|
59
|
+
version: package_json_1.default.version,
|
|
60
|
+
}, {
|
|
61
|
+
capabilities: {
|
|
62
|
+
tools: {},
|
|
63
|
+
prompts: {},
|
|
64
|
+
resources: {},
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
(0, mcp_shared_1.registerMcpHandlers)(this.mcpServer, this.tools, this.prompts, this.resources, {
|
|
68
|
+
onCallStart: (requestId, controller) => {
|
|
69
|
+
if (requestId)
|
|
70
|
+
this.activeRequests.set(requestId, { controller });
|
|
71
|
+
},
|
|
72
|
+
onCallEnd: (requestId) => {
|
|
73
|
+
if (!requestId)
|
|
74
|
+
return;
|
|
75
|
+
this.activeRequests.delete(requestId);
|
|
76
|
+
// Ensure any lingering SSE streams for this request are closed
|
|
77
|
+
this.transport.closeSSEStream(requestId);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
this.transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
81
|
+
// Stateless mode to simplify client usage; callers must still send both JSON and SSE accept headers
|
|
82
|
+
sessionIdGenerator: undefined,
|
|
83
|
+
});
|
|
84
|
+
// Register routes
|
|
85
|
+
this.setupRoutes(this.app);
|
|
86
|
+
// Attach error handlers
|
|
87
|
+
this.attachErrorHandlers(this.app);
|
|
88
|
+
}
|
|
89
|
+
attachErrorHandlers(app = this.app) {
|
|
90
|
+
app.use((err, _req, res, next) => {
|
|
91
|
+
if (err?.type === 'entity.too.large') {
|
|
92
|
+
return res.status(413).json({ error: 'Request entity too large' });
|
|
93
|
+
}
|
|
94
|
+
if (err)
|
|
95
|
+
return res.status(400).json({ error: err.message || 'Bad Request' });
|
|
96
|
+
next();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
configureSecurity() {
|
|
100
|
+
// Note: createMcpExpressApp handles:
|
|
101
|
+
// 1. Host header validation
|
|
102
|
+
// 2. Global JSON parsing (via express.json)
|
|
103
|
+
// We explicitly avoid adding urlencoded parser to encourage strict JSON-RPC usage.
|
|
104
|
+
// Optional origin validation for CORS-like checks on GET requests if explicit config is present
|
|
105
|
+
// Optional origin validation (useful when frontends fetch metadata)
|
|
106
|
+
if (this.options.allowedOrigins?.length) {
|
|
107
|
+
this.app.use((req, res, next) => {
|
|
108
|
+
const rawOrigin = req.headers.origin || req.headers.referer;
|
|
109
|
+
if (!rawOrigin)
|
|
110
|
+
return res.status(403).json({ error: 'Missing Origin header' });
|
|
111
|
+
let normalizedOrigin = rawOrigin;
|
|
112
|
+
try {
|
|
113
|
+
normalizedOrigin = new URL(rawOrigin).origin;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// keep raw origin if parsing fails
|
|
117
|
+
}
|
|
118
|
+
if (!this.options.allowedOrigins.includes(normalizedOrigin)) {
|
|
119
|
+
return res.status(403).json({ error: 'Origin not allowed' });
|
|
120
|
+
}
|
|
121
|
+
next();
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Optional bearer auth / API key validation
|
|
125
|
+
if (this.options.authToken) {
|
|
126
|
+
this.app.use((req, res, next) => {
|
|
127
|
+
if (req.path === '/health')
|
|
128
|
+
return next();
|
|
129
|
+
const header = req.headers.authorization || '';
|
|
130
|
+
const apiKey = req.headers['x-api-key'];
|
|
131
|
+
const token = header.startsWith('Bearer ') ? header.substring(7) : header;
|
|
132
|
+
if (token === this.options.authToken || apiKey === this.options.authToken) {
|
|
133
|
+
return next();
|
|
134
|
+
}
|
|
135
|
+
res.status(401).json({ error: 'Unauthorized' });
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
// Simple in-memory rate limiting per IP
|
|
139
|
+
if (this.options.rateLimit) {
|
|
140
|
+
const hits = new Map();
|
|
141
|
+
const { windowMs, max } = this.options.rateLimit;
|
|
142
|
+
this.app.use((req, res, next) => {
|
|
143
|
+
const now = Date.now();
|
|
144
|
+
const key = req.ip || req.headers['x-forwarded-for']?.toString() || 'unknown';
|
|
145
|
+
const windowStart = now - windowMs;
|
|
146
|
+
const recent = (hits.get(key) || []).filter((t) => t > windowStart);
|
|
147
|
+
if (recent.length >= max) {
|
|
148
|
+
return res.status(429).json({ error: 'Too Many Requests' });
|
|
149
|
+
}
|
|
150
|
+
recent.push(now);
|
|
151
|
+
hits.set(key, recent);
|
|
152
|
+
next();
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
getApp() {
|
|
157
|
+
return this.app;
|
|
158
|
+
}
|
|
159
|
+
setupRoutes(app) {
|
|
160
|
+
// Helper to handle MCP request via Transport
|
|
161
|
+
const handleMcpRequest = async (req, res) => {
|
|
162
|
+
try {
|
|
163
|
+
await this.ensureConnected();
|
|
164
|
+
// createMcpExpressApp includes body-parser, so we must pass the parsed body
|
|
165
|
+
// to the transport if available.
|
|
166
|
+
await this.transport.handleRequest(req, res, req.body);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
logger_1.logger.error(`HTTP MCP request failed: ${error}`);
|
|
170
|
+
if (!res.headersSent) {
|
|
171
|
+
res.status(500).json({ error: 'Failed to handle MCP request' });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
// Primary MCP Endpoints
|
|
176
|
+
// POST /mcp (JSON-RPC)
|
|
177
|
+
app.post('/mcp', handleMcpRequest);
|
|
178
|
+
// GET /mcp (SSE)
|
|
179
|
+
app.get('/mcp', handleMcpRequest);
|
|
180
|
+
// DELETE /mcp (Session Close)
|
|
181
|
+
app.delete('/mcp', handleMcpRequest);
|
|
182
|
+
// Standard Aliases
|
|
183
|
+
// GET /sse -> /mcp (SSE)
|
|
184
|
+
app.get('/sse', handleMcpRequest);
|
|
185
|
+
// POST /messages -> /mcp (RPC)
|
|
186
|
+
app.post('/messages', handleMcpRequest);
|
|
187
|
+
// Cancel endpoint to abort ongoing requests
|
|
188
|
+
// Body is already JSON-parsed by global middleware
|
|
189
|
+
app.post('/mcp/cancel', (req, res) => {
|
|
190
|
+
const { id } = req.body || {};
|
|
191
|
+
if (!id)
|
|
192
|
+
return res.status(400).json({ error: 'Missing id' });
|
|
193
|
+
const active = this.activeRequests.get(id);
|
|
194
|
+
if (!active)
|
|
195
|
+
return res.status(404).json({ error: 'Request not found or already completed' });
|
|
196
|
+
active.controller.abort();
|
|
197
|
+
this.transport.closeSSEStream(id);
|
|
198
|
+
this.activeRequests.delete(id);
|
|
199
|
+
return res.json({ id, status: 'cancelled' });
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// Test helper: register an active request to validate /mcp/cancel success path
|
|
203
|
+
// Not intended for production usage.
|
|
204
|
+
addActiveRequestForTest(id, controller) {
|
|
205
|
+
this.activeRequests.set(id, { controller });
|
|
206
|
+
}
|
|
207
|
+
async start() {
|
|
208
|
+
if (this.server)
|
|
209
|
+
return;
|
|
210
|
+
await this.ensureConnected();
|
|
211
|
+
return new Promise((resolve, reject) => {
|
|
212
|
+
try {
|
|
213
|
+
const create = () => {
|
|
214
|
+
if (this.options.tls) {
|
|
215
|
+
return https_1.default.createServer(this.options.tls, this.app);
|
|
216
|
+
}
|
|
217
|
+
return http_1.default.createServer(this.app);
|
|
218
|
+
};
|
|
219
|
+
this.server = create();
|
|
220
|
+
this.server.listen(this.options.port, this.options.host, () => {
|
|
221
|
+
const protocol = this.options.tls ? 'https' : 'http';
|
|
222
|
+
logger_1.logger.info(`HTTP server listening on ${protocol}://${this.options.host}:${this.options.port}`);
|
|
223
|
+
this.server.on('error', (err) => {
|
|
224
|
+
logger_1.logger.error(`Server error: ${err}`);
|
|
225
|
+
});
|
|
226
|
+
resolve();
|
|
227
|
+
});
|
|
228
|
+
this.server.on('error', (err) => {
|
|
229
|
+
logger_1.logger.error(`Failed to start server: ${err}`);
|
|
230
|
+
reject(err);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
logger_1.logger.error(`Exception during start: ${err}`);
|
|
235
|
+
reject(err);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
async stop() {
|
|
240
|
+
if (this.server) {
|
|
241
|
+
await new Promise((resolve, reject) => {
|
|
242
|
+
this.server.close((err) => {
|
|
243
|
+
if (err)
|
|
244
|
+
reject(err);
|
|
245
|
+
else
|
|
246
|
+
resolve();
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
this.server = undefined;
|
|
250
|
+
}
|
|
251
|
+
if (this.connected) {
|
|
252
|
+
await this.transport.close();
|
|
253
|
+
await this.mcpServer.close();
|
|
254
|
+
this.connected = false;
|
|
255
|
+
this.connectPromise = undefined;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
async ensureConnected() {
|
|
259
|
+
if (this.connected)
|
|
260
|
+
return;
|
|
261
|
+
if (!this.connectPromise) {
|
|
262
|
+
this.connectPromise = this.mcpServer.connect(this.transport).then(() => {
|
|
263
|
+
this.connected = true;
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return this.connectPromise;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
exports.HttpServer = HttpServer;
|
|
270
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.logger = exports.GitHubAdapter = exports.MCPTools = exports.MCPServer = void 0;
|
|
18
|
+
var mcp_server_1 = require("./mcp-server");
|
|
19
|
+
Object.defineProperty(exports, "MCPServer", { enumerable: true, get: function () { return mcp_server_1.MCPServer; } });
|
|
20
|
+
var mcp_tools_1 = require("./mcp-tools");
|
|
21
|
+
Object.defineProperty(exports, "MCPTools", { enumerable: true, get: function () { return mcp_tools_1.MCPTools; } });
|
|
22
|
+
var github_adapter_1 = require("./github-adapter");
|
|
23
|
+
Object.defineProperty(exports, "GitHubAdapter", { enumerable: true, get: function () { return github_adapter_1.GitHubAdapter; } });
|
|
24
|
+
__exportStar(require("./types"), exports);
|
|
25
|
+
var logger_1 = require("./logger");
|
|
26
|
+
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,eAAO,MAAM,MAAM,gBAiBjB,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
const winston_1 = __importDefault(require("winston"));
|
|
8
|
+
exports.logger = winston_1.default.createLogger({
|
|
9
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
10
|
+
format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()),
|
|
11
|
+
defaultMeta: { service: 'awesome-copilot-mcp' },
|
|
12
|
+
transports: [
|
|
13
|
+
new winston_1.default.transports.Console({
|
|
14
|
+
stderrLevels: ['error', 'warn', 'info', 'http', 'verbose', 'debug', 'silly'],
|
|
15
|
+
consoleWarnLevels: ['warn'],
|
|
16
|
+
format: winston_1.default.format.combine(winston_1.default.format.simple())
|
|
17
|
+
})
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
// Add file transport in production
|
|
21
|
+
if (process.env.NODE_ENV === 'production') {
|
|
22
|
+
exports.logger.add(new winston_1.default.transports.File({ filename: 'error.log', level: 'error' }));
|
|
23
|
+
exports.logger.add(new winston_1.default.transports.File({ filename: 'combined.log' }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=logger.js.map
|