A Python-based Model Context Protocol (MCP) server that exposes tools for multiple integrations — GitHub, Jira, REST API, Oracle, and MongoDB — for use by AI assistants.
- Python 3.10+
- Credentials for the integrations you want to use (see Configuration)
pip install -e .Start the server in SSE mode and open the browser UI to explore and test all tools interactively:
python -m mcp_server --sseThen open: http://localhost:8000/ui
Tools are grouped by integration in the sidebar. Select a tool, fill in the parameters, and click Run.
Each integration is activated by setting its environment variables. Integrations without credentials are gracefully skipped at startup.
export GITHUB_TOKEN="ghp_your_token_here"export JIRA_URL="https://your-org.atlassian.net"
export JIRA_USERNAME="you@example.com"
export JIRA_API_TOKEN="your_api_token"export REST_API_BASE_URL="https://api.example.com"
export REST_API_TOKEN="your_token" # optional
export REST_API_TOKEN_HEADER="Authorization" # optional, default: Authorization
export REST_API_TOKEN_PREFIX="Bearer" # optional, default: Bearerexport ORACLE_USER="your_user"
export ORACLE_PASSWORD="your_password"
export ORACLE_DSN="host:port/service_name"export MONGODB_URI="mongodb://localhost:27017"
export MONGODB_DATABASE="your_database"On Windows (PowerShell), use $env:VAR = "value" syntax.
mcp-server-hubmcp-server-hub --sse
# or
python -m mcp_server --sseAdd to your .vscode/mcp.json:
{
"servers": {
"hub": {
"type": "stdio",
"command": "python",
"args": ["-m", "mcp_server"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"JIRA_URL": "https://your-org.atlassian.net",
"JIRA_USERNAME": "you@example.com",
"JIRA_API_TOKEN": "your_api_token",
"MONGODB_URI": "mongodb://localhost:27017",
"MONGODB_DATABASE": "your_database"
}
}
}
}Add to your claude_desktop_config.json:
{
"mcpServers": {
"hub": {
"command": "python",
"args": ["-m", "mcp_server"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}| Tool | Description |
|---|---|
github_search_repositories |
Search for GitHub repositories |
github_get_repository |
Get detailed info about a repository |
github_list_issues |
List issues in a repository |
github_get_issue |
Get details of a specific issue |
github_create_issue |
Create a new issue |
github_list_pull_requests |
List pull requests in a repository |
github_get_pull_request |
Get details of a specific pull request |
github_get_file_contents |
Get file or directory contents from a repo |
github_list_branches |
List branches in a repository |
github_list_commits |
List commits in a repository |
github_search_code |
Search for code across GitHub |
| Tool | Description |
|---|---|
jira_list_projects |
List all accessible Jira projects |
jira_search_issues |
Search issues using JQL |
jira_get_issue |
Get full details of an issue |
jira_create_issue |
Create a new issue |
jira_update_issue |
Update fields of an existing issue |
jira_add_comment |
Add a comment to an issue |
jira_list_transitions |
List available workflow transitions |
jira_transition_issue |
Transition an issue to a new status |
| Tool | Description |
|---|---|
rest_get |
Make an HTTP GET request |
rest_post |
Make an HTTP POST request |
rest_put |
Make an HTTP PUT request |
rest_patch |
Make an HTTP PATCH request |
rest_delete |
Make an HTTP DELETE request |
| Tool | Description |
|---|---|
oracle_execute_query |
Execute a SELECT query and return results as JSON |
oracle_execute_statement |
Execute an INSERT, UPDATE, or DELETE statement |
oracle_list_tables |
List tables in the database |
oracle_describe_table |
Describe columns of a table |
oracle_call_procedure |
Call a stored procedure |
| Tool | Description |
|---|---|
mongo_list_collections |
List all collections in the database |
mongo_find |
Find documents with a filter |
mongo_find_one |
Find a single document |
mongo_insert_document |
Insert one document |
mongo_insert_many |
Insert multiple documents |
mongo_update_document |
Update a document |
mongo_delete_document |
Delete a document |
mongo_count |
Count documents matching a filter |
mongo_aggregate |
Run an aggregation pipeline |
- Create
mcp_server/tools/<name>/withclient.pyandtools.py - Decorate each tool function with
@tool("Category Name")frommcp_server.registry - Add the module import to
mcp_server/tools/__init__.py
The tool will automatically appear in the browser UI and be available to MCP clients.