About Spring AI MCP Proof of Concept
Spring AI MCP Proof of Concept is a Docker-based local GitHub MCP server setup for Spring AI developers. It combines GitHub API access with REST endpoints, health checks, and an optional web UI.
Key features
- 01Containerized GitHub MCP server
- 02REST endpoints for GitHub operations
- 03Docker Compose deployment
- 04Health checks and monitoring
- 05Optional web UI
Use cases
- 01Connect Spring AI applications to GitHub data
- 02Retrieve repositories, issues, and pull requests
- 03Run a local GitHub MCP server for development
MCP support
It runs a GitHub MCP server that provides GitHub API access to MCP clients. Its setup includes HTTP endpoints and example Spring AI configuration.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMESpring AI MCP Proof of Concept
This repository contains a Docker-based setup for running a GitHub Model Context Protocol (MCP) server locally. It's designed to work with Spring AI applications and provides a standardized way to interact with GitHub APIs through the MCP protocol.
Features
- GitHub MCP Server: A containerized MCP server that provides GitHub API access
- RESTful API: HTTP endpoints for easy integration with Spring AI applications
- Docker Compose: Simple local deployment with Docker
- Health Monitoring: Built-in health checks and monitoring
- Development Ready: Hot-reload and development-friendly configuration
Prerequisites
- Docker and Docker Compose installed
- GitHub Personal Access Token with appropriate scopes
- Node.js 18+ (for local development)
Quick Start
1. Clone the Repository
git clone https://github.com/shesadri/spring-ai-mcp-poc.git
cd spring-ai-mcp-poc
2. Set Up Environment Variables
cp .env.example .env
Edit the .env file and add your GitHub Personal Access Token:
GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here
MCP_SERVER_PORT=3000
NODE_ENV=development
3. Generate GitHub Token
- Go to GitHub Settings > Developer settings > Personal access tokens
- Click "Generate new token (classic)"
- Select the following scopes:
repo(Full control of private repositories)read:user(Read user profile data)read:org(Read organization data)
- Copy the generated token to your
.envfile
4. Start the Services
docker-compose up -d
This will start:
- GitHub MCP Server on port 3000
- Web UI (optional) on port 8080
5. Verify the Setup
Check if the server is running:
curl http://localhost:3000/health
You should see:
{
"status": "healthy",
"timestamp": "2025-06-01T04:22:00.000Z"
}
API Endpoints
The GitHub MCP server exposes the following REST API endpoints:
Repository Operations
- Get Repository:
GET /api/repos/{owner}/{repo} - List User Repositories:
GET /api/users/{username}/repos?type={all|owner|member}
Issues Operations
- List Issues:
GET /api/repos/{owner}/{repo}/issues?state={open|closed|all} - Create Issue:
POST /api/repos/{owner}/{repo}/issues
Pull Request Operations
- List Pull Requests:
GET /api/repos/{owner}/{repo}/pulls?state={open|closed|all}
Example API Calls
# Get repository information
curl http://localhost:3000/api/repos/octocat/Hello-World
# List user repositories
curl http://localhost:3000/api/users/octocat/repos
# List open issues
curl http://localhost:3000/api/repos/octocat/Hello-World/issues?state=open
# Create a new issue
curl -X POST http://localhost:3000/api/repos/octocat/Hello-World/issues \
-H "Content-Type: application/json" \
-d '{
"title": "Test issue",
"body": "This is a test issue created via MCP server",
"labels": ["bug", "help wanted"]
}'
# List pull requests
curl http://localhost:3000/api/repos/octocat/Hello-World/pulls
Integration with Spring AI
This MCP server can be integrated with Spring AI applications. Here's an example configuration:
Spring Boot Configuration
# application.yml
spring:
ai:
mcp:
servers:
github:
url: http://localhost:3000
enabled: true
timeout: 30s
Java Integration Example
@Service
public class GitHubMCPService {
@Value("${mcp.github.base-url:http://localhost:3000}")
private String baseUrl;
private final RestTemplate restTemplate;
public GitHubMCPService(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public Repository getRepository(String owner, String repo) {
String url = baseUrl + "/api/repos/" + owner + "/" + repo;
return restTemplate.getForObject(url, Repository.class);
}
public List<Issue> getIssues(String owner, String repo, String state) {
String url = baseUrl + "/api/repos/" + owner + "/" + repo + "/issues?state=" + state;
return Arrays.asList(restTemplate.getForObject(url, Issue[].class));
}
public Issue createIssue(String owner, String repo, CreateIssueRequest request) {
String url = baseUrl + "/api/repos/" + owner + "/" + repo + "/issues";
return restTemplate.postForObject(url, request, Issue.class);
}
}
Development
Local Development Without Docker
- Create the server directory:
mkdir mcp-github-server
cd mcp-github-server
- Initialize the Node.js project:
npm init -y
npm install @modelcontextprotocol/sdk-nodejs @octokit/rest express cors dotenv
- Copy the server implementation from the docker-compose.yml
- Run locally:
npm start
Monitoring and Logs
View server logs:
docker-compose logs -f github-mcp-server
Check container status:
docker-compose ps
Configuration
Environment Variables
| Variable | Description | Default |
|---|---|---|
GITHUB_PERSONAL_ACCESS_TOKEN | GitHub PAT for API access | Required |
MCP_SERVER_PORT | Port for the MCP server | 3000 |
NODE_ENV | Node.js environment | development |
Docker Compose Services
- github-mcp-server: Main MCP server container
- mcp-web-ui: Optional web interface for testing
Troubleshooting
Common Issues
- Authentication Error: Make sure your GitHub token has the required scopes
- Port Conflicts: Change the
MCP_SERVER_PORTin.envif port 3000 is in use - Permission Denied: Ensure Docker has permission to bind to the specified ports
Debug Mode
Enable debug logging:
NODE_ENV=development docker-compose up
Security Considerations
- Never commit your
.envfile with real tokens - Use minimal required scopes for your GitHub token
- Consider using GitHub Apps for production deployments
- Implement rate limiting for production use
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test with
docker-compose up - Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Related Projects
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.