github-rest-mcp 1.0.2
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 +123 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +55 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +133 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/actions.d.ts +25 -0
- package/dist/tools/actions.d.ts.map +1 -0
- package/dist/tools/actions.js +2202 -0
- package/dist/tools/actions.js.map +1 -0
- package/dist/tools/activity.d.ts +8 -0
- package/dist/tools/activity.d.ts.map +1 -0
- package/dist/tools/activity.js +385 -0
- package/dist/tools/activity.js.map +1 -0
- package/dist/tools/agent-tasks.d.ts +38 -0
- package/dist/tools/agent-tasks.d.ts.map +1 -0
- package/dist/tools/agent-tasks.js +78 -0
- package/dist/tools/agent-tasks.js.map +1 -0
- package/dist/tools/apps.d.ts +8 -0
- package/dist/tools/apps.d.ts.map +1 -0
- package/dist/tools/apps.js +402 -0
- package/dist/tools/apps.js.map +1 -0
- package/dist/tools/billing.d.ts +46 -0
- package/dist/tools/billing.d.ts.map +1 -0
- package/dist/tools/billing.js +145 -0
- package/dist/tools/billing.js.map +1 -0
- package/dist/tools/campaigns.d.ts +39 -0
- package/dist/tools/campaigns.d.ts.map +1 -0
- package/dist/tools/campaigns.js +69 -0
- package/dist/tools/campaigns.js.map +1 -0
- package/dist/tools/checks.d.ts +43 -0
- package/dist/tools/checks.d.ts.map +1 -0
- package/dist/tools/checks.js +171 -0
- package/dist/tools/checks.js.map +1 -0
- package/dist/tools/classroom.d.ts +25 -0
- package/dist/tools/classroom.d.ts.map +1 -0
- package/dist/tools/classroom.js +74 -0
- package/dist/tools/classroom.js.map +1 -0
- package/dist/tools/code-scanning.d.ts +35 -0
- package/dist/tools/code-scanning.d.ts.map +1 -0
- package/dist/tools/code-scanning.js +297 -0
- package/dist/tools/code-scanning.js.map +1 -0
- package/dist/tools/code-security.d.ts +25 -0
- package/dist/tools/code-security.d.ts.map +1 -0
- package/dist/tools/code-security.js +245 -0
- package/dist/tools/code-security.js.map +1 -0
- package/dist/tools/codes-of-conduct.d.ts +8 -0
- package/dist/tools/codes-of-conduct.d.ts.map +1 -0
- package/dist/tools/codes-of-conduct.js +27 -0
- package/dist/tools/codes-of-conduct.js.map +1 -0
- package/dist/tools/codespaces.d.ts +8 -0
- package/dist/tools/codespaces.d.ts.map +1 -0
- package/dist/tools/codespaces.js +555 -0
- package/dist/tools/codespaces.js.map +1 -0
- package/dist/tools/copilot.d.ts +17 -0
- package/dist/tools/copilot.d.ts.map +1 -0
- package/dist/tools/copilot.js +284 -0
- package/dist/tools/copilot.js.map +1 -0
- package/dist/tools/credentials.d.ts +10 -0
- package/dist/tools/credentials.d.ts.map +1 -0
- package/dist/tools/credentials.js +19 -0
- package/dist/tools/credentials.js.map +1 -0
- package/dist/tools/dependabot.d.ts +49 -0
- package/dist/tools/dependabot.d.ts.map +1 -0
- package/dist/tools/dependabot.js +311 -0
- package/dist/tools/dependabot.js.map +1 -0
- package/dist/tools/dependency-graph.d.ts +11 -0
- package/dist/tools/dependency-graph.d.ts.map +1 -0
- package/dist/tools/dependency-graph.js +45 -0
- package/dist/tools/dependency-graph.js.map +1 -0
- package/dist/tools/emojis.d.ts +8 -0
- package/dist/tools/emojis.d.ts.map +1 -0
- package/dist/tools/emojis.js +17 -0
- package/dist/tools/emojis.js.map +1 -0
- package/dist/tools/enterprise-team-memberships.d.ts +31 -0
- package/dist/tools/enterprise-team-memberships.d.ts.map +1 -0
- package/dist/tools/enterprise-team-memberships.js +82 -0
- package/dist/tools/enterprise-team-memberships.js.map +1 -0
- package/dist/tools/enterprise-team-organizations.d.ts +31 -0
- package/dist/tools/enterprise-team-organizations.d.ts.map +1 -0
- package/dist/tools/enterprise-team-organizations.js +82 -0
- package/dist/tools/enterprise-team-organizations.js.map +1 -0
- package/dist/tools/enterprise-teams.d.ts +28 -0
- package/dist/tools/enterprise-teams.d.ts.map +1 -0
- package/dist/tools/enterprise-teams.js +66 -0
- package/dist/tools/enterprise-teams.js.map +1 -0
- package/dist/tools/gists.d.ts +26 -0
- package/dist/tools/gists.d.ts.map +1 -0
- package/dist/tools/gists.js +231 -0
- package/dist/tools/gists.js.map +1 -0
- package/dist/tools/git.d.ts +58 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +167 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/gitignore.d.ts +8 -0
- package/dist/tools/gitignore.d.ts.map +1 -0
- package/dist/tools/gitignore.js +27 -0
- package/dist/tools/gitignore.js.map +1 -0
- package/dist/tools/hosted-compute.d.ts +36 -0
- package/dist/tools/hosted-compute.d.ts.map +1 -0
- package/dist/tools/hosted-compute.js +77 -0
- package/dist/tools/hosted-compute.js.map +1 -0
- package/dist/tools/index.d.ts +45 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +93 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/interactions.d.ts +8 -0
- package/dist/tools/interactions.d.ts.map +1 -0
- package/dist/tools/interactions.js +100 -0
- package/dist/tools/interactions.js.map +1 -0
- package/dist/tools/issues.d.ts +126 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +746 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/licenses.d.ts +28 -0
- package/dist/tools/licenses.d.ts.map +1 -0
- package/dist/tools/licenses.js +43 -0
- package/dist/tools/licenses.js.map +1 -0
- package/dist/tools/markdown.d.ts +10 -0
- package/dist/tools/markdown.d.ts.map +1 -0
- package/dist/tools/markdown.js +29 -0
- package/dist/tools/markdown.js.map +1 -0
- package/dist/tools/meta.d.ts +8 -0
- package/dist/tools/meta.d.ts.map +1 -0
- package/dist/tools/meta.js +51 -0
- package/dist/tools/meta.js.map +1 -0
- package/dist/tools/migrations.d.ts +33 -0
- package/dist/tools/migrations.d.ts.map +1 -0
- package/dist/tools/migrations.js +261 -0
- package/dist/tools/migrations.js.map +1 -0
- package/dist/tools/oidc.d.ts +17 -0
- package/dist/tools/oidc.d.ts.map +1 -0
- package/dist/tools/oidc.js +94 -0
- package/dist/tools/oidc.js.map +1 -0
- package/dist/tools/orgs.d.ts +26 -0
- package/dist/tools/orgs.d.ts.map +1 -0
- package/dist/tools/orgs.js +1304 -0
- package/dist/tools/orgs.js.map +1 -0
- package/dist/tools/packages.d.ts +8 -0
- package/dist/tools/packages.d.ts.map +1 -0
- package/dist/tools/packages.js +341 -0
- package/dist/tools/packages.js.map +1 -0
- package/dist/tools/private-registries.d.ts +10 -0
- package/dist/tools/private-registries.d.ts.map +1 -0
- package/dist/tools/private-registries.js +76 -0
- package/dist/tools/private-registries.js.map +1 -0
- package/dist/tools/projects.d.ts +50 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +347 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/pulls.d.ts +77 -0
- package/dist/tools/pulls.d.ts.map +1 -0
- package/dist/tools/pulls.js +374 -0
- package/dist/tools/pulls.js.map +1 -0
- package/dist/tools/rate-limit.d.ts +8 -0
- package/dist/tools/rate-limit.d.ts.map +1 -0
- package/dist/tools/rate-limit.js +17 -0
- package/dist/tools/rate-limit.js.map +1 -0
- package/dist/tools/reactions.d.ts +124 -0
- package/dist/tools/reactions.d.ts.map +1 -0
- package/dist/tools/reactions.js +214 -0
- package/dist/tools/reactions.js.map +1 -0
- package/dist/tools/repos.d.ts +56 -0
- package/dist/tools/repos.d.ts.map +1 -0
- package/dist/tools/repos.js +2514 -0
- package/dist/tools/repos.js.map +1 -0
- package/dist/tools/search.d.ts +12 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +108 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/secret-scanning.d.ts +18 -0
- package/dist/tools/secret-scanning.d.ts.map +1 -0
- package/dist/tools/secret-scanning.js +148 -0
- package/dist/tools/secret-scanning.js.map +1 -0
- package/dist/tools/security-advisories.d.ts +112 -0
- package/dist/tools/security-advisories.d.ts.map +1 -0
- package/dist/tools/security-advisories.js +152 -0
- package/dist/tools/security-advisories.js.map +1 -0
- package/dist/tools/teams.d.ts +34 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +392 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/tools/users.d.ts +8 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +510 -0
- package/dist/tools/users.js.map +1 -0
- package/package.json +50 -0
package/README.md
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# github-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for the GitHub REST API — 1,112 tools covering all 44 API categories.
|
|
4
|
+
|
|
5
|
+
Auto-generated from [GitHub's OpenAPI spec](https://github.com/github/rest-api-description) using a code generator that produces typed tool definitions with Zod validation.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install github-rest-mcp
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or from GitHub Packages:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @eyalm321/github-mcp
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Configuration
|
|
20
|
+
|
|
21
|
+
Set your GitHub Personal Access Token:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
export GITHUB_TOKEN=ghp_your_token_here
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Category Filter
|
|
28
|
+
|
|
29
|
+
By default all 1,112 tools are registered. To enable only specific categories:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
export GITHUB_MCP_CATEGORIES=repos,issues,pulls,actions
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Claude Desktop
|
|
36
|
+
|
|
37
|
+
Add to your `claude_desktop_config.json`:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"github": {
|
|
43
|
+
"command": "npx",
|
|
44
|
+
"args": ["-y", "github-rest-mcp"],
|
|
45
|
+
"env": {
|
|
46
|
+
"GITHUB_TOKEN": "ghp_your_token_here",
|
|
47
|
+
"GITHUB_MCP_CATEGORIES": "repos,issues,pulls,actions,users,orgs,git,search"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## API Categories
|
|
55
|
+
|
|
56
|
+
| Category | Tools | Category | Tools |
|
|
57
|
+
|----------|-------|----------|-------|
|
|
58
|
+
| actions | 184 | activity | 32 |
|
|
59
|
+
| agent-tasks | 5 | apps | 37 |
|
|
60
|
+
| billing | 10 | campaigns | 5 |
|
|
61
|
+
| checks | 12 | classroom | 6 |
|
|
62
|
+
| code-scanning | 21 | code-security | 20 |
|
|
63
|
+
| codes-of-conduct | 2 | codespaces | 48 |
|
|
64
|
+
| copilot | 25 | credentials | 1 |
|
|
65
|
+
| dependabot | 22 | dependency-graph | 3 |
|
|
66
|
+
| emojis | 1 | enterprise-team-memberships | 6 |
|
|
67
|
+
| enterprise-team-organizations | 6 | enterprise-teams | 5 |
|
|
68
|
+
| gists | 20 | git | 13 |
|
|
69
|
+
| gitignore | 2 | hosted-compute | 6 |
|
|
70
|
+
| interactions | 9 | issues | 55 |
|
|
71
|
+
| licenses | 3 | markdown | 2 |
|
|
72
|
+
| meta | 5 | migrations | 22 |
|
|
73
|
+
| oidc | 8 | orgs | 108 |
|
|
74
|
+
| packages | 27 | private-registries | 6 |
|
|
75
|
+
| projects | 26 | pulls | 27 |
|
|
76
|
+
| rate-limit | 1 | reactions | 15 |
|
|
77
|
+
| repos | 201 | search | 7 |
|
|
78
|
+
| secret-scanning | 9 | security-advisories | 10 |
|
|
79
|
+
| teams | 32 | users | 47 |
|
|
80
|
+
|
|
81
|
+
## Tool Naming
|
|
82
|
+
|
|
83
|
+
Tools follow the pattern `github_{category}_{action}`, derived from GitHub's operation IDs:
|
|
84
|
+
|
|
85
|
+
- `github_repos_get` — Get a repository
|
|
86
|
+
- `github_issues_create` — Create an issue
|
|
87
|
+
- `github_pulls_list` — List pull requests
|
|
88
|
+
- `github_actions_list_workflow_runs` — List workflow runs
|
|
89
|
+
|
|
90
|
+
## Development
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Install dependencies
|
|
94
|
+
npm install
|
|
95
|
+
|
|
96
|
+
# Regenerate tools from OpenAPI spec
|
|
97
|
+
npm run generate
|
|
98
|
+
|
|
99
|
+
# Build
|
|
100
|
+
npm run build
|
|
101
|
+
|
|
102
|
+
# Run tests
|
|
103
|
+
npm test
|
|
104
|
+
|
|
105
|
+
# Start the server
|
|
106
|
+
npm start
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Regenerating Tools
|
|
110
|
+
|
|
111
|
+
The tool files in `src/tools/` are auto-generated from GitHub's OpenAPI spec. To update:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Delete cached spec to force re-download
|
|
115
|
+
rm -f api-description.json
|
|
116
|
+
|
|
117
|
+
# Regenerate
|
|
118
|
+
npm run generate
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## License
|
|
122
|
+
|
|
123
|
+
MIT
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,CAAC,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACxE,OAAO,CAAC,CAAC,CAAC,CA6CZ"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.githubRequest = githubRequest;
|
|
4
|
+
const BASE_URL = "https://api.github.com";
|
|
5
|
+
function getToken() {
|
|
6
|
+
const token = process.env.GITHUB_TOKEN;
|
|
7
|
+
if (!token)
|
|
8
|
+
throw new Error("GITHUB_TOKEN environment variable is not set");
|
|
9
|
+
return token;
|
|
10
|
+
}
|
|
11
|
+
async function githubRequest(method, path, body, params) {
|
|
12
|
+
const url = new URL(`${BASE_URL}${path}`);
|
|
13
|
+
if (params) {
|
|
14
|
+
for (const [key, value] of Object.entries(params)) {
|
|
15
|
+
if (value === undefined || value === null || value === "")
|
|
16
|
+
continue;
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
url.searchParams.set(key, value.join(","));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
url.searchParams.set(key, String(value));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const headers = {
|
|
26
|
+
Authorization: `Bearer ${getToken()}`,
|
|
27
|
+
Accept: "application/vnd.github+json",
|
|
28
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
29
|
+
"User-Agent": "github-mcp/1.0.0",
|
|
30
|
+
};
|
|
31
|
+
if (body) {
|
|
32
|
+
headers["Content-Type"] = "application/json";
|
|
33
|
+
}
|
|
34
|
+
const res = await fetch(url.toString(), {
|
|
35
|
+
method,
|
|
36
|
+
headers,
|
|
37
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
38
|
+
});
|
|
39
|
+
if (!res.ok) {
|
|
40
|
+
const text = await res.text().catch(() => "");
|
|
41
|
+
let detail = text;
|
|
42
|
+
try {
|
|
43
|
+
const json = JSON.parse(text);
|
|
44
|
+
detail = json.message || text;
|
|
45
|
+
if (json.errors)
|
|
46
|
+
detail += ` -- ${JSON.stringify(json.errors)}`;
|
|
47
|
+
}
|
|
48
|
+
catch { }
|
|
49
|
+
throw new Error(`GitHub API error ${res.status}: ${detail}`);
|
|
50
|
+
}
|
|
51
|
+
if (res.status === 204)
|
|
52
|
+
return {};
|
|
53
|
+
return res.json();
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;AAQA,sCAkDC;AA1DD,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,IAAY,EACZ,IAA8B,EAC9B,MAAyE;IAEzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC;IAE1C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;gBAAE,SAAS;YACpE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,QAAQ,EAAE,EAAE;QACrC,MAAM,EAAE,6BAA6B;QACrC,sBAAsB,EAAE,YAAY;QACpC,YAAY,EAAE,kBAAkB;KACjC,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QACtC,MAAM;QACN,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,EAAO,CAAC;IAEvC,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
// AUTO-GENERATED by scripts/generate.ts — DO NOT EDIT
|
|
5
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
6
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
7
|
+
const actions_js_1 = require("./tools/actions.js");
|
|
8
|
+
const activity_js_1 = require("./tools/activity.js");
|
|
9
|
+
const agent_tasks_js_1 = require("./tools/agent-tasks.js");
|
|
10
|
+
const apps_js_1 = require("./tools/apps.js");
|
|
11
|
+
const billing_js_1 = require("./tools/billing.js");
|
|
12
|
+
const campaigns_js_1 = require("./tools/campaigns.js");
|
|
13
|
+
const checks_js_1 = require("./tools/checks.js");
|
|
14
|
+
const classroom_js_1 = require("./tools/classroom.js");
|
|
15
|
+
const code_scanning_js_1 = require("./tools/code-scanning.js");
|
|
16
|
+
const code_security_js_1 = require("./tools/code-security.js");
|
|
17
|
+
const codes_of_conduct_js_1 = require("./tools/codes-of-conduct.js");
|
|
18
|
+
const codespaces_js_1 = require("./tools/codespaces.js");
|
|
19
|
+
const copilot_js_1 = require("./tools/copilot.js");
|
|
20
|
+
const credentials_js_1 = require("./tools/credentials.js");
|
|
21
|
+
const dependabot_js_1 = require("./tools/dependabot.js");
|
|
22
|
+
const dependency_graph_js_1 = require("./tools/dependency-graph.js");
|
|
23
|
+
const emojis_js_1 = require("./tools/emojis.js");
|
|
24
|
+
const enterprise_team_memberships_js_1 = require("./tools/enterprise-team-memberships.js");
|
|
25
|
+
const enterprise_team_organizations_js_1 = require("./tools/enterprise-team-organizations.js");
|
|
26
|
+
const enterprise_teams_js_1 = require("./tools/enterprise-teams.js");
|
|
27
|
+
const gists_js_1 = require("./tools/gists.js");
|
|
28
|
+
const git_js_1 = require("./tools/git.js");
|
|
29
|
+
const gitignore_js_1 = require("./tools/gitignore.js");
|
|
30
|
+
const hosted_compute_js_1 = require("./tools/hosted-compute.js");
|
|
31
|
+
const interactions_js_1 = require("./tools/interactions.js");
|
|
32
|
+
const issues_js_1 = require("./tools/issues.js");
|
|
33
|
+
const licenses_js_1 = require("./tools/licenses.js");
|
|
34
|
+
const markdown_js_1 = require("./tools/markdown.js");
|
|
35
|
+
const meta_js_1 = require("./tools/meta.js");
|
|
36
|
+
const migrations_js_1 = require("./tools/migrations.js");
|
|
37
|
+
const oidc_js_1 = require("./tools/oidc.js");
|
|
38
|
+
const orgs_js_1 = require("./tools/orgs.js");
|
|
39
|
+
const packages_js_1 = require("./tools/packages.js");
|
|
40
|
+
const private_registries_js_1 = require("./tools/private-registries.js");
|
|
41
|
+
const projects_js_1 = require("./tools/projects.js");
|
|
42
|
+
const pulls_js_1 = require("./tools/pulls.js");
|
|
43
|
+
const rate_limit_js_1 = require("./tools/rate-limit.js");
|
|
44
|
+
const reactions_js_1 = require("./tools/reactions.js");
|
|
45
|
+
const repos_js_1 = require("./tools/repos.js");
|
|
46
|
+
const search_js_1 = require("./tools/search.js");
|
|
47
|
+
const secret_scanning_js_1 = require("./tools/secret-scanning.js");
|
|
48
|
+
const security_advisories_js_1 = require("./tools/security-advisories.js");
|
|
49
|
+
const teams_js_1 = require("./tools/teams.js");
|
|
50
|
+
const users_js_1 = require("./tools/users.js");
|
|
51
|
+
const server = new mcp_js_1.McpServer({
|
|
52
|
+
name: "github-mcp",
|
|
53
|
+
version: "1.0.2",
|
|
54
|
+
});
|
|
55
|
+
const allToolModules = [
|
|
56
|
+
{ category: "actions", tools: actions_js_1.actionsTools },
|
|
57
|
+
{ category: "activity", tools: activity_js_1.activityTools },
|
|
58
|
+
{ category: "agent-tasks", tools: agent_tasks_js_1.agentTasksTools },
|
|
59
|
+
{ category: "apps", tools: apps_js_1.appsTools },
|
|
60
|
+
{ category: "billing", tools: billing_js_1.billingTools },
|
|
61
|
+
{ category: "campaigns", tools: campaigns_js_1.campaignsTools },
|
|
62
|
+
{ category: "checks", tools: checks_js_1.checksTools },
|
|
63
|
+
{ category: "classroom", tools: classroom_js_1.classroomTools },
|
|
64
|
+
{ category: "code-scanning", tools: code_scanning_js_1.codeScanningTools },
|
|
65
|
+
{ category: "code-security", tools: code_security_js_1.codeSecurityTools },
|
|
66
|
+
{ category: "codes-of-conduct", tools: codes_of_conduct_js_1.codesOfConductTools },
|
|
67
|
+
{ category: "codespaces", tools: codespaces_js_1.codespacesTools },
|
|
68
|
+
{ category: "copilot", tools: copilot_js_1.copilotTools },
|
|
69
|
+
{ category: "credentials", tools: credentials_js_1.credentialsTools },
|
|
70
|
+
{ category: "dependabot", tools: dependabot_js_1.dependabotTools },
|
|
71
|
+
{ category: "dependency-graph", tools: dependency_graph_js_1.dependencyGraphTools },
|
|
72
|
+
{ category: "emojis", tools: emojis_js_1.emojisTools },
|
|
73
|
+
{ category: "enterprise-team-memberships", tools: enterprise_team_memberships_js_1.enterpriseTeamMembershipsTools },
|
|
74
|
+
{ category: "enterprise-team-organizations", tools: enterprise_team_organizations_js_1.enterpriseTeamOrganizationsTools },
|
|
75
|
+
{ category: "enterprise-teams", tools: enterprise_teams_js_1.enterpriseTeamsTools },
|
|
76
|
+
{ category: "gists", tools: gists_js_1.gistsTools },
|
|
77
|
+
{ category: "git", tools: git_js_1.gitTools },
|
|
78
|
+
{ category: "gitignore", tools: gitignore_js_1.gitignoreTools },
|
|
79
|
+
{ category: "hosted-compute", tools: hosted_compute_js_1.hostedComputeTools },
|
|
80
|
+
{ category: "interactions", tools: interactions_js_1.interactionsTools },
|
|
81
|
+
{ category: "issues", tools: issues_js_1.issuesTools },
|
|
82
|
+
{ category: "licenses", tools: licenses_js_1.licensesTools },
|
|
83
|
+
{ category: "markdown", tools: markdown_js_1.markdownTools },
|
|
84
|
+
{ category: "meta", tools: meta_js_1.metaTools },
|
|
85
|
+
{ category: "migrations", tools: migrations_js_1.migrationsTools },
|
|
86
|
+
{ category: "oidc", tools: oidc_js_1.oidcTools },
|
|
87
|
+
{ category: "orgs", tools: orgs_js_1.orgsTools },
|
|
88
|
+
{ category: "packages", tools: packages_js_1.packagesTools },
|
|
89
|
+
{ category: "private-registries", tools: private_registries_js_1.privateRegistriesTools },
|
|
90
|
+
{ category: "projects", tools: projects_js_1.projectsTools },
|
|
91
|
+
{ category: "pulls", tools: pulls_js_1.pullsTools },
|
|
92
|
+
{ category: "rate-limit", tools: rate_limit_js_1.rateLimitTools },
|
|
93
|
+
{ category: "reactions", tools: reactions_js_1.reactionsTools },
|
|
94
|
+
{ category: "repos", tools: repos_js_1.reposTools },
|
|
95
|
+
{ category: "search", tools: search_js_1.searchTools },
|
|
96
|
+
{ category: "secret-scanning", tools: secret_scanning_js_1.secretScanningTools },
|
|
97
|
+
{ category: "security-advisories", tools: security_advisories_js_1.securityAdvisoriesTools },
|
|
98
|
+
{ category: "teams", tools: teams_js_1.teamsTools },
|
|
99
|
+
{ category: "users", tools: users_js_1.usersTools },
|
|
100
|
+
];
|
|
101
|
+
const enabledCategories = process.env.GITHUB_MCP_CATEGORIES
|
|
102
|
+
? new Set(process.env.GITHUB_MCP_CATEGORIES.split(",").map((s) => s.trim()))
|
|
103
|
+
: null;
|
|
104
|
+
const allTools = allToolModules
|
|
105
|
+
.filter((m) => !enabledCategories || enabledCategories.has(m.category))
|
|
106
|
+
.flatMap((m) => m.tools);
|
|
107
|
+
for (const tool of allTools) {
|
|
108
|
+
server.tool(tool.name, tool.description, tool.inputSchema.shape, async (args) => {
|
|
109
|
+
try {
|
|
110
|
+
const result = await tool.handler(args);
|
|
111
|
+
return {
|
|
112
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
117
|
+
return {
|
|
118
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
119
|
+
isError: true,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
async function main() {
|
|
125
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
126
|
+
await server.connect(transport);
|
|
127
|
+
console.error(`GitHub MCP server running (${allTools.length} tools registered)`);
|
|
128
|
+
}
|
|
129
|
+
main().catch((err) => {
|
|
130
|
+
console.error("Fatal error:", err);
|
|
131
|
+
process.exit(1);
|
|
132
|
+
});
|
|
133
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const actionsTools: ({
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
enterprise: z.ZodString;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
handler: (args: Record<string, any>) => Promise<unknown>;
|
|
9
|
+
} | {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
inputSchema: z.ZodObject<{
|
|
13
|
+
org: z.ZodString;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
handler: (args: Record<string, any>) => Promise<unknown>;
|
|
16
|
+
} | {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: z.ZodObject<{
|
|
20
|
+
owner: z.ZodString;
|
|
21
|
+
repo: z.ZodString;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
handler: (args: Record<string, any>) => Promise<unknown>;
|
|
24
|
+
})[];
|
|
25
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;;;;;oBAOC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;oBA0CnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;;;;;oBAihCnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAglC5C,CAAC"}
|