@noushad999/github-mcp-server 1.0.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/LICENSE +21 -0
- package/README.md +659 -0
- package/dist/github-client.d.ts +5 -0
- package/dist/github-client.d.ts.map +1 -0
- package/dist/github-client.js +53 -0
- package/dist/github-client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/tokenGuard.d.ts +2 -0
- package/dist/middleware/tokenGuard.d.ts.map +1 -0
- package/dist/middleware/tokenGuard.js +75 -0
- package/dist/middleware/tokenGuard.js.map +1 -0
- package/dist/tools/add_comment.d.ts +21 -0
- package/dist/tools/add_comment.d.ts.map +1 -0
- package/dist/tools/add_comment.js +24 -0
- package/dist/tools/add_comment.js.map +1 -0
- package/dist/tools/assign_issue.d.ts +24 -0
- package/dist/tools/assign_issue.d.ts.map +1 -0
- package/dist/tools/assign_issue.js +32 -0
- package/dist/tools/assign_issue.js.map +1 -0
- package/dist/tools/create_branch.d.ts +21 -0
- package/dist/tools/create_branch.d.ts.map +1 -0
- package/dist/tools/create_branch.js +28 -0
- package/dist/tools/create_branch.js.map +1 -0
- package/dist/tools/create_issue.d.ts +24 -0
- package/dist/tools/create_issue.d.ts.map +1 -0
- package/dist/tools/create_issue.js +29 -0
- package/dist/tools/create_issue.js.map +1 -0
- package/dist/tools/create_pr.d.ts +27 -0
- package/dist/tools/create_pr.d.ts.map +1 -0
- package/dist/tools/create_pr.js +31 -0
- package/dist/tools/create_pr.js.map +1 -0
- package/dist/tools/create_release.d.ts +33 -0
- package/dist/tools/create_release.d.ts.map +1 -0
- package/dist/tools/create_release.js +41 -0
- package/dist/tools/create_release.js.map +1 -0
- package/dist/tools/delete_branch.d.ts +21 -0
- package/dist/tools/delete_branch.d.ts.map +1 -0
- package/dist/tools/delete_branch.js +17 -0
- package/dist/tools/delete_branch.js.map +1 -0
- package/dist/tools/get_file.d.ts +21 -0
- package/dist/tools/get_file.d.ts.map +1 -0
- package/dist/tools/get_file.js +33 -0
- package/dist/tools/get_file.js.map +1 -0
- package/dist/tools/get_pr_diff.d.ts +18 -0
- package/dist/tools/get_pr_diff.d.ts.map +1 -0
- package/dist/tools/get_pr_diff.js +32 -0
- package/dist/tools/get_pr_diff.js.map +1 -0
- package/dist/tools/get_release.d.ts +18 -0
- package/dist/tools/get_release.d.ts.map +1 -0
- package/dist/tools/get_release.js +42 -0
- package/dist/tools/get_release.js.map +1 -0
- package/dist/tools/get_repo.d.ts +15 -0
- package/dist/tools/get_repo.d.ts.map +1 -0
- package/dist/tools/get_repo.js +35 -0
- package/dist/tools/get_repo.js.map +1 -0
- package/dist/tools/list_commits.d.ts +21 -0
- package/dist/tools/list_commits.d.ts.map +1 -0
- package/dist/tools/list_commits.js +31 -0
- package/dist/tools/list_commits.js.map +1 -0
- package/dist/tools/list_issues.d.ts +18 -0
- package/dist/tools/list_issues.d.ts.map +1 -0
- package/dist/tools/list_issues.js +34 -0
- package/dist/tools/list_issues.js.map +1 -0
- package/dist/tools/list_prs.d.ts +18 -0
- package/dist/tools/list_prs.d.ts.map +1 -0
- package/dist/tools/list_prs.js +31 -0
- package/dist/tools/list_prs.js.map +1 -0
- package/dist/tools/list_repos.d.ts +15 -0
- package/dist/tools/list_repos.d.ts.map +1 -0
- package/dist/tools/list_repos.js +33 -0
- package/dist/tools/list_repos.js.map +1 -0
- package/dist/tools/list_workflows.d.ts +15 -0
- package/dist/tools/list_workflows.d.ts.map +1 -0
- package/dist/tools/list_workflows.js +30 -0
- package/dist/tools/list_workflows.js.map +1 -0
- package/dist/tools/merge_pr.d.ts +24 -0
- package/dist/tools/merge_pr.d.ts.map +1 -0
- package/dist/tools/merge_pr.js +30 -0
- package/dist/tools/merge_pr.js.map +1 -0
- package/dist/tools/search_code.d.ts +15 -0
- package/dist/tools/search_code.d.ts.map +1 -0
- package/dist/tools/search_code.js +30 -0
- package/dist/tools/search_code.js.map +1 -0
- package/dist/tools/trigger_workflow.d.ts +28 -0
- package/dist/tools/trigger_workflow.d.ts.map +1 -0
- package/dist/tools/trigger_workflow.js +24 -0
- package/dist/tools/trigger_workflow.js.map +1 -0
- package/dist/utils/cache.d.ts +5 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +36 -0
- package/dist/utils/cache.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const name = "merge_pr";
|
|
3
|
+
export declare const description = "Merge a pull request with squash, merge, or rebase strategy";
|
|
4
|
+
export declare const schema: z.ZodObject<{
|
|
5
|
+
owner: z.ZodString;
|
|
6
|
+
repo: z.ZodString;
|
|
7
|
+
pull_number: z.ZodNumber;
|
|
8
|
+
method: z.ZodDefault<z.ZodOptional<z.ZodEnum<["merge", "squash", "rebase"]>>>;
|
|
9
|
+
commit_title: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
method: "merge" | "squash" | "rebase";
|
|
12
|
+
owner: string;
|
|
13
|
+
repo: string;
|
|
14
|
+
pull_number: number;
|
|
15
|
+
commit_title?: string | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
owner: string;
|
|
18
|
+
repo: string;
|
|
19
|
+
pull_number: number;
|
|
20
|
+
method?: "merge" | "squash" | "rebase" | undefined;
|
|
21
|
+
commit_title?: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function handler(args: z.infer<typeof schema>): Promise<unknown>;
|
|
24
|
+
//# sourceMappingURL=merge_pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge_pr.d.ts","sourceRoot":"","sources":["../../src/tools/merge_pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,eAAO,MAAM,WAAW,gEAAgE,CAAC;AAEzF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;EAMjB,CAAC;AAEH,wBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,oBAqBzD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getGitHubClient } from "../github-client.js";
|
|
3
|
+
import { cacheDelete } from "../utils/cache.js";
|
|
4
|
+
import { tokenGuard } from "../middleware/tokenGuard.js";
|
|
5
|
+
export const name = "merge_pr";
|
|
6
|
+
export const description = "Merge a pull request with squash, merge, or rebase strategy";
|
|
7
|
+
export const schema = z.object({
|
|
8
|
+
owner: z.string().describe("Repository owner"),
|
|
9
|
+
repo: z.string().describe("Repository name"),
|
|
10
|
+
pull_number: z.number().int().describe("Pull request number"),
|
|
11
|
+
method: z.enum(["merge", "squash", "rebase"]).optional().default("merge").describe("Merge strategy"),
|
|
12
|
+
commit_title: z.string().optional().describe("Custom merge commit title"),
|
|
13
|
+
});
|
|
14
|
+
export async function handler(args) {
|
|
15
|
+
const client = getGitHubClient();
|
|
16
|
+
const res = await client.put(`/repos/${args.owner}/${args.repo}/pulls/${args.pull_number}/merge`, {
|
|
17
|
+
merge_method: args.method,
|
|
18
|
+
commit_title: args.commit_title,
|
|
19
|
+
});
|
|
20
|
+
cacheDelete(`prs:${args.owner}/${args.repo}:open`);
|
|
21
|
+
cacheDelete(`prs:${args.owner}/${args.repo}:closed`);
|
|
22
|
+
cacheDelete(`prs:${args.owner}/${args.repo}:all`);
|
|
23
|
+
const result = tokenGuard({
|
|
24
|
+
merged: res.data.merged,
|
|
25
|
+
message: res.data.message,
|
|
26
|
+
sha: res.data.sha?.substring(0, 7),
|
|
27
|
+
});
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=merge_pr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge_pr.js","sourceRoot":"","sources":["../../src/tools/merge_pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,6DAA6D,CAAC;AAEzF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACpG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAA4B;IACxD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAC1B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,WAAW,QAAQ,EACnE;QACE,YAAY,EAAE,IAAI,CAAC,MAAM;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;KAChC,CACF,CAAC;IAEF,WAAW,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC;IACnD,WAAW,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;IACrD,WAAW,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;QACvB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO;QACzB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const name = "search_code";
|
|
3
|
+
export declare const description = "Search code across GitHub repositories by keyword";
|
|
4
|
+
export declare const schema: z.ZodObject<{
|
|
5
|
+
query: z.ZodString;
|
|
6
|
+
per_page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
query: string;
|
|
9
|
+
per_page: number;
|
|
10
|
+
}, {
|
|
11
|
+
query: string;
|
|
12
|
+
per_page?: number | undefined;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function handler(args: z.infer<typeof schema>): Promise<unknown>;
|
|
15
|
+
//# sourceMappingURL=search_code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search_code.d.ts","sourceRoot":"","sources":["../../src/tools/search_code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,IAAI,gBAAgB,CAAC;AAClC,eAAO,MAAM,WAAW,sDAAsD,CAAC;AAE/E,eAAO,MAAM,MAAM;;;;;;;;;EAGjB,CAAC;AAEH,wBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,oBAoBzD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getGitHubClient } from "../github-client.js";
|
|
3
|
+
import { cacheGet, cacheSet } from "../utils/cache.js";
|
|
4
|
+
import { tokenGuard } from "../middleware/tokenGuard.js";
|
|
5
|
+
export const name = "search_code";
|
|
6
|
+
export const description = "Search code across GitHub repositories by keyword";
|
|
7
|
+
export const schema = z.object({
|
|
8
|
+
query: z.string().describe("Search query (e.g., 'auth+language:typescript')"),
|
|
9
|
+
per_page: z.number().int().min(1).max(10).optional().default(10).describe("Results per page (1–10)"),
|
|
10
|
+
});
|
|
11
|
+
export async function handler(args) {
|
|
12
|
+
const cacheKey = `search:${args.query}`;
|
|
13
|
+
const cached = cacheGet(cacheKey);
|
|
14
|
+
if (cached)
|
|
15
|
+
return cached;
|
|
16
|
+
const client = getGitHubClient();
|
|
17
|
+
const res = await client.get("/search/code", {
|
|
18
|
+
params: { q: args.query, per_page: args.per_page },
|
|
19
|
+
});
|
|
20
|
+
const results = res.data.items.map((item) => ({
|
|
21
|
+
name: item.name,
|
|
22
|
+
path: item.path,
|
|
23
|
+
repository: item.repository.full_name,
|
|
24
|
+
html_url: item.html_url,
|
|
25
|
+
}));
|
|
26
|
+
const result = tokenGuard(results);
|
|
27
|
+
cacheSet(cacheKey, result);
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=search_code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search_code.js","sourceRoot":"","sources":["../../src/tools/search_code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,mDAAmD,CAAC;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CACrG,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAA4B;IACxD,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QAC3C,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;KACnD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;QACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const name = "trigger_workflow";
|
|
3
|
+
export declare const description = "Trigger a GitHub Actions workflow dispatch event";
|
|
4
|
+
export declare const schema: z.ZodObject<{
|
|
5
|
+
owner: z.ZodString;
|
|
6
|
+
repo: z.ZodString;
|
|
7
|
+
workflow_id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
|
|
8
|
+
ref: z.ZodOptional<z.ZodString>;
|
|
9
|
+
inputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
owner: string;
|
|
12
|
+
repo: string;
|
|
13
|
+
workflow_id: string | number;
|
|
14
|
+
ref?: string | undefined;
|
|
15
|
+
inputs?: Record<string, string> | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
owner: string;
|
|
18
|
+
repo: string;
|
|
19
|
+
workflow_id: string | number;
|
|
20
|
+
ref?: string | undefined;
|
|
21
|
+
inputs?: Record<string, string> | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function handler(args: z.infer<typeof schema>): Promise<{
|
|
24
|
+
triggered: boolean;
|
|
25
|
+
workflow_id: string | number;
|
|
26
|
+
ref: string;
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=trigger_workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger_workflow.d.ts","sourceRoot":"","sources":["../../src/tools/trigger_workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,IAAI,qBAAqB,CAAC;AACvC,eAAO,MAAM,WAAW,qDAAqD,CAAC;AAE9E,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;EAMjB,CAAC;AAEH,wBAAsB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC;;;;GAgBzD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getGitHubClient, getDefaultBranch } from "../github-client.js";
|
|
3
|
+
import { cacheDelete } from "../utils/cache.js";
|
|
4
|
+
export const name = "trigger_workflow";
|
|
5
|
+
export const description = "Trigger a GitHub Actions workflow dispatch event";
|
|
6
|
+
export const schema = z.object({
|
|
7
|
+
owner: z.string().describe("Repository owner"),
|
|
8
|
+
repo: z.string().describe("Repository name"),
|
|
9
|
+
workflow_id: z.union([z.string(), z.number()]).describe("Workflow file name (e.g. 'ci.yml') or numeric ID"),
|
|
10
|
+
ref: z.string().optional().describe("Branch or tag to run the workflow on (defaults to repo's default branch)"),
|
|
11
|
+
inputs: z.record(z.string()).optional().describe("Key-value pairs of workflow inputs"),
|
|
12
|
+
});
|
|
13
|
+
export async function handler(args) {
|
|
14
|
+
const client = getGitHubClient();
|
|
15
|
+
const ref = args.ref ?? await getDefaultBranch(args.owner, args.repo);
|
|
16
|
+
await client.post(`/repos/${args.owner}/${args.repo}/actions/workflows/${args.workflow_id}/dispatches`, { ref, inputs: args.inputs ?? {} });
|
|
17
|
+
cacheDelete(`workflows:${args.owner}/${args.repo}`);
|
|
18
|
+
return {
|
|
19
|
+
triggered: true,
|
|
20
|
+
workflow_id: args.workflow_id,
|
|
21
|
+
ref,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=trigger_workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger_workflow.js","sourceRoot":"","sources":["../../src/tools/trigger_workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG,kDAAkD,CAAC;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC3G,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;IAC/G,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACvF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAA4B;IACxD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEtE,MAAM,MAAM,CAAC,IAAI,CACf,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,sBAAsB,IAAI,CAAC,WAAW,aAAa,EACpF,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CACnC,CAAC;IAEF,WAAW,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEpD,OAAO;QACL,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function cacheGet(key: string): unknown | null;
|
|
2
|
+
export declare function cacheSet(key: string, data: unknown): void;
|
|
3
|
+
export declare function cacheClear(): void;
|
|
4
|
+
export declare function cacheDelete(key: string): void;
|
|
5
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAQpD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAazD;AAED,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7C"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const CACHE_TTL = 120_000; // 120 seconds
|
|
2
|
+
const MAX_CACHE_SIZE = 200;
|
|
3
|
+
const cache = new Map();
|
|
4
|
+
export function cacheGet(key) {
|
|
5
|
+
const entry = cache.get(key);
|
|
6
|
+
if (!entry)
|
|
7
|
+
return null;
|
|
8
|
+
if (Date.now() > entry.expiry) {
|
|
9
|
+
cache.delete(key);
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return entry.data;
|
|
13
|
+
}
|
|
14
|
+
export function cacheSet(key, data) {
|
|
15
|
+
if (cache.size >= MAX_CACHE_SIZE) {
|
|
16
|
+
// Evict expired entries first, then oldest if still over limit
|
|
17
|
+
const now = Date.now();
|
|
18
|
+
for (const [k, v] of cache) {
|
|
19
|
+
if (now > v.expiry)
|
|
20
|
+
cache.delete(k);
|
|
21
|
+
}
|
|
22
|
+
if (cache.size >= MAX_CACHE_SIZE) {
|
|
23
|
+
const oldest = Array.from(cache.keys())[0];
|
|
24
|
+
if (oldest !== undefined)
|
|
25
|
+
cache.delete(oldest);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
cache.set(key, { data, expiry: Date.now() + CACHE_TTL });
|
|
29
|
+
}
|
|
30
|
+
export function cacheClear() {
|
|
31
|
+
cache.clear();
|
|
32
|
+
}
|
|
33
|
+
export function cacheDelete(key) {
|
|
34
|
+
cache.delete(key);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,cAAc;AACzC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6C,CAAC;AAEnE,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAa;IACjD,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;QACjC,+DAA+D;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@noushad999/github-mcp-server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Production-ready MCP server connecting Claude to GitHub — repos, PRs, issues, commits, branches & more",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md",
|
|
11
|
+
"LICENSE"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"dev": "tsx watch src/index.ts",
|
|
17
|
+
"lint": "eslint src/",
|
|
18
|
+
"format": "prettier --write src/"
|
|
19
|
+
},
|
|
20
|
+
"keywords": ["mcp", "github", "claude", "ai", "automation", "model-context-protocol"],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
27
|
+
"axios": "^1.9.0",
|
|
28
|
+
"dotenv": "^16.5.0",
|
|
29
|
+
"zod": "^3.24.4"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^22.15.0",
|
|
33
|
+
"typescript": "^5.8.3",
|
|
34
|
+
"tsx": "^4.19.3",
|
|
35
|
+
"eslint": "^9.26.0",
|
|
36
|
+
"prettier": "^3.5.3"
|
|
37
|
+
}
|
|
38
|
+
}
|