@ayatec/ai-gateway-mcp-server 0.1.0 → 0.2.0
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/README.md +22 -0
- package/package.json +1 -1
- package/dist/providers/anthropic.d.ts +0 -2
- package/dist/providers/anthropic.d.ts.map +0 -1
- package/dist/providers/anthropic.js +0 -7
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/google.d.ts +0 -2
- package/dist/providers/google.d.ts.map +0 -1
- package/dist/providers/google.js +0 -9
- package/dist/providers/google.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -2
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -7
- package/dist/providers/openai.js.map +0 -1
- package/dist/providers/perplexity.d.ts +0 -2
- package/dist/providers/perplexity.d.ts.map +0 -1
- package/dist/providers/perplexity.js +0 -9
- package/dist/providers/perplexity.js.map +0 -1
- package/dist/utils/cost.d.ts +0 -10
- package/dist/utils/cost.d.ts.map +0 -1
- package/dist/utils/cost.js +0 -18
- package/dist/utils/cost.js.map +0 -1
- package/dist/utils/format.d.ts +0 -5
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js +0 -18
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -12
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -20
- package/dist/utils/logger.js.map +0 -1
package/README.md
CHANGED
|
@@ -133,17 +133,39 @@ claude mcp add ai-gateway npx @ayatec/ai-gateway-mcp-server -e AI_GATEWAY_API_KE
|
|
|
133
133
|
|
|
134
134
|
#### ローカルビルドで使う場合
|
|
135
135
|
|
|
136
|
+
開発中のバージョンを使いたい場合や、ソースを修正して使いたい場合はこちら。
|
|
137
|
+
|
|
136
138
|
```bash
|
|
137
139
|
git clone https://github.com/ayatec/ai-gateway-mcp-server.git
|
|
138
140
|
cd ai-gateway-mcp-server
|
|
141
|
+
cp .env.example .env
|
|
142
|
+
# .env を編集して API キーを設定
|
|
139
143
|
pnpm install
|
|
140
144
|
pnpm build
|
|
141
145
|
```
|
|
142
146
|
|
|
147
|
+
##### Claude Code
|
|
148
|
+
|
|
143
149
|
```bash
|
|
144
150
|
claude mcp add ai-gateway node /path/to/ai-gateway-mcp-server/dist/index.js -e AI_GATEWAY_API_KEY=your-key
|
|
145
151
|
```
|
|
146
152
|
|
|
153
|
+
##### Claude Desktop / その他の MCP クライアント
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"mcpServers": {
|
|
158
|
+
"ai-gateway": {
|
|
159
|
+
"command": "node",
|
|
160
|
+
"args": ["/path/to/ai-gateway-mcp-server/dist/index.js"],
|
|
161
|
+
"env": {
|
|
162
|
+
"AI_GATEWAY_API_KEY": "your-key"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
147
169
|
## 開発
|
|
148
170
|
|
|
149
171
|
### コマンド
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,+CAGpB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;CAC/B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,yCAIjB,CAAC"}
|
package/dist/providers/google.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createOpenAI } from '@ai-sdk/openai';
|
|
2
|
-
import { config } from '../config.js';
|
|
3
|
-
// Google は独自API形式のため Gateway の OpenAI互換エンドポイント経由で接続
|
|
4
|
-
export const google = createOpenAI({
|
|
5
|
-
apiKey: config.gatewayApiKey,
|
|
6
|
-
baseURL: config.gatewayBaseUrl,
|
|
7
|
-
name: 'google',
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=google.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,oDAAoD;AACpD,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;IAC9B,IAAI,EAAE,QAAQ;CACf,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,yCAGjB,CAAC"}
|
package/dist/providers/openai.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;CAC/B,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perplexity.d.ts","sourceRoot":"","sources":["../../src/providers/perplexity.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,yCAIrB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createOpenAI } from '@ai-sdk/openai';
|
|
2
|
-
import { config } from '../config.js';
|
|
3
|
-
// Perplexity は OpenAI互換APIとして Gateway 経由で接続
|
|
4
|
-
export const perplexity = createOpenAI({
|
|
5
|
-
apiKey: config.gatewayApiKey,
|
|
6
|
-
baseURL: config.gatewayBaseUrl,
|
|
7
|
-
name: 'perplexity',
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=perplexity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perplexity.js","sourceRoot":"","sources":["../../src/providers/perplexity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,cAAc;IAC9B,IAAI,EAAE,YAAY;CACnB,CAAC,CAAC"}
|
package/dist/utils/cost.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { ModelDefinition } from '../types/index.js';
|
|
2
|
-
/** 推定コストを計算(入力・出力トークン数ベース) */
|
|
3
|
-
export declare function estimateCost(model: ModelDefinition, inputTokens: number, outputTokens: number): {
|
|
4
|
-
inputCost: number;
|
|
5
|
-
outputCost: number;
|
|
6
|
-
total: number;
|
|
7
|
-
};
|
|
8
|
-
/** 価格をフォーマット */
|
|
9
|
-
export declare function formatCost(dollars: number): string;
|
|
10
|
-
//# sourceMappingURL=cost.d.ts.map
|
package/dist/utils/cost.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/utils/cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,8BAA8B;AAC9B,wBAAgB,YAAY,CAC1B,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ1D;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKlD"}
|
package/dist/utils/cost.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/** 推定コストを計算(入力・出力トークン数ベース) */
|
|
2
|
-
export function estimateCost(model, inputTokens, outputTokens) {
|
|
3
|
-
const inputCost = (inputTokens / 1_000_000) * model.pricing.input;
|
|
4
|
-
const outputCost = (outputTokens / 1_000_000) * model.pricing.output;
|
|
5
|
-
return {
|
|
6
|
-
inputCost,
|
|
7
|
-
outputCost,
|
|
8
|
-
total: inputCost + outputCost,
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
/** 価格をフォーマット */
|
|
12
|
-
export function formatCost(dollars) {
|
|
13
|
-
if (dollars < 0.01) {
|
|
14
|
-
return `$${dollars.toFixed(4)}`;
|
|
15
|
-
}
|
|
16
|
-
return `$${dollars.toFixed(2)}`;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=cost.js.map
|
package/dist/utils/cost.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/utils/cost.ts"],"names":[],"mappings":"AAEA,8BAA8B;AAC9B,MAAM,UAAU,YAAY,CAC1B,KAAsB,EACtB,WAAmB,EACnB,YAAoB;IAEpB,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClE,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACrE,OAAO;QACL,SAAS;QACT,UAAU;QACV,KAAK,EAAE,SAAS,GAAG,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,OAAO,GAAG,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/utils/format.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,4BAA4B;AAC5B,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKhD"}
|
package/dist/utils/format.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/** 数値を読みやすいトークン数にフォーマット */
|
|
2
|
-
export function formatTokenCount(tokens) {
|
|
3
|
-
if (tokens >= 1_000_000) {
|
|
4
|
-
return `${(tokens / 1_000_000).toFixed(1)}M`;
|
|
5
|
-
}
|
|
6
|
-
if (tokens >= 1_000) {
|
|
7
|
-
return `${(tokens / 1_000).toFixed(0)}K`;
|
|
8
|
-
}
|
|
9
|
-
return tokens.toString();
|
|
10
|
-
}
|
|
11
|
-
/** ミリ秒を読みやすいレイテンシにフォーマット */
|
|
12
|
-
export function formatLatency(ms) {
|
|
13
|
-
if (ms >= 1000) {
|
|
14
|
-
return `${(ms / 1000).toFixed(1)}s`;
|
|
15
|
-
}
|
|
16
|
-
return `${ms}ms`;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=format.js.map
|
package/dist/utils/format.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,EAAE,IAAI,CAAC;AACnB,CAAC"}
|
package/dist/utils/logger.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
interface LogEntry {
|
|
2
|
-
timestamp: string;
|
|
3
|
-
tool: string;
|
|
4
|
-
modelId: string;
|
|
5
|
-
durationMs: number;
|
|
6
|
-
input: Record<string, unknown>;
|
|
7
|
-
error?: string;
|
|
8
|
-
}
|
|
9
|
-
/** ツール呼び出しをログファイルに記録 */
|
|
10
|
-
export declare function logToolCall(entry: LogEntry): Promise<void>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAIA,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAwB;AACxB,wBAAsB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAehE"}
|
package/dist/utils/logger.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { config } from '../config.js';
|
|
4
|
-
/** ツール呼び出しをログファイルに記録 */
|
|
5
|
-
export async function logToolCall(entry) {
|
|
6
|
-
try {
|
|
7
|
-
const logDir = config.logDir;
|
|
8
|
-
if (!fs.existsSync(logDir)) {
|
|
9
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
10
|
-
}
|
|
11
|
-
const date = new Date().toISOString().split('T')[0];
|
|
12
|
-
const logFile = path.join(logDir, `${date}.jsonl`);
|
|
13
|
-
fs.appendFileSync(logFile, JSON.stringify(entry) + '\n');
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
// ログ記録の失敗はサーバー動作に影響させない
|
|
17
|
-
console.error('[logger] ログ記録失敗:', error);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAWtC,wBAAwB;AACxB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAe;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;QAEnD,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wBAAwB;QACxB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|