github-repos-manager-mcp
Version:
Model Context Protocol (MCP) server that enables your MCP client (e.g., Claude Desktop, Cline, Roo Code, Cursor, Windsurf, etc.) to interact with GitHub repositories using your GitHub personal access token.
68 lines (60 loc) • 1.83 kB
JavaScript
// Import the refactored server from the src directory
const GitHubMCPServer = require("./src/index.cjs");
// Parse command line arguments for config
const args = process.argv.slice(2);
const config = {};
// Support command line arguments for default repository
for (let i = 0; i < args.length; i++) {
if (args[i] === "--default-owner" && args[i + 1]) {
config.defaultOwner = args[i + 1];
i++;
} else if (args[i] === "--default-repo" && args[i + 1]) {
config.defaultRepo = args[i + 1];
i++;
} else if (args[i] === "--disabled-tools" && args[i + 1]) {
config.disabledTools = args[i + 1]
.split(",")
.map((tool) => tool.trim())
.filter((tool) => tool);
i++;
} else if (args[i] === "--allowed-tools" && args[i + 1]) {
config.allowedTools = args[i + 1]
.split(",")
.map((tool) => tool.trim())
.filter((tool) => tool);
i++;
} else if (args[i] === "--allowed-repos" && args[i + 1]) {
config.allowedRepos = args[i + 1]
.split(",")
.map((repo) => repo.trim())
.filter((repo) => repo);
i++;
}
}
// Start the server with config
async function main() {
try {
const { Server } = await import(
"@modelcontextprotocol/sdk/server/index.js"
);
const { StdioServerTransport } = await import(
"@modelcontextprotocol/sdk/server/stdio.js"
);
const { CallToolRequestSchema, ListToolsRequestSchema } = await import(
"@modelcontextprotocol/sdk/types.js"
);
const sdkModules = {
Server,
StdioServerTransport,
CallToolRequestSchema,
ListToolsRequestSchema,
};
const server = new GitHubMCPServer(config, sdkModules);
await server.run();
} catch (error) {
console.error("Server error:", error);
process.exit(1);
}
}
main();