spring-ai-mcp-poc
Spring AI Model Context Protocol (MCP) Proof of Concept with GitHub MCP Server
Documentation
Spring 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-poc2. Set Up Environment Variables
cp .env.example .envEdit the `.env` file and add your GitHub Personal Access Token:
GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token_here
MCP_SERVER_PORT=3000
NODE_ENV=development3. Generate GitHub Token
1. Go to GitHub Settings > Developer settings > Personal access tokens
2. Click "Generate new token (classic)"
3. Select the following scopes:
4. Copy the generated token to your `.env` file
4. Start the Services
docker-compose up -dThis 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/healthYou 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/pullsIntegration 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: 30sJava 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 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
1. Create the server directory:
mkdir mcp-github-server
cd mcp-github-server2. Initialize the Node.js project:
npm init -y
npm install @modelcontextprotocol/sdk-nodejs @octokit/rest express cors dotenv3. Copy the server implementation from the docker-compose.yml
4. Run locally:
npm startMonitoring and Logs
View server logs:
docker-compose logs -f github-mcp-serverCheck container status:
docker-compose psConfiguration
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
1. Authentication Error: Make sure your GitHub token has the required scopes
2. Port Conflicts: Change the `MCP_SERVER_PORT` in `.env` if port 3000 is in use
3. Permission Denied: Ensure Docker has permission to bind to the specified ports
Debug Mode
Enable debug logging:
NODE_ENV=development docker-compose upSecurity Considerations
- Never commit your `.env` file 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
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Test with `docker-compose up`
5. Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Related Projects
Frequently asked questions
What is spring-ai-mcp-poc?
spring-ai-mcp-poc is Spring AI Model Context Protocol (MCP) Proof of Concept with GitHub MCP Server
How do I install spring-ai-mcp-poc?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is spring-ai-mcp-poc open source?
Yes — it is hosted on GitHub at https://github.com/shesadri/spring-ai-mcp-poc.
Related MCP tools
🙌 OpenHands: Code Less, Make More for the Model Context Protocol. Enhance AI assistants with powerful integrations. Python-based implementation.
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
Universal memory layer for AI Agents; Announcing OpenMemory MCP - local and secure memory management. Python-based implementation.
基于大模型搭建的聊天机器人,同时支持 微信公众号、企业微信应用、飞书、钉钉 等接入,可选择ChatGPT/Claude/DeepSeek/文心一言/讯飞星火/通义千问/ Gemini/GLM-4/Kimi/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。
:robot: The free, Open Source alternative to OpenAI, Claude and others. Self-hosted and local-first. Drop-in replacement for OpenAI, running on consumer-gra...
🍒 Cherry Studio is a desktop client that supports for multiple LLM providers. Built for the Model Context Protocol to enhance AI capabilities.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP