Code Reader MCP Server
Code Reader - MCP Server
An MCP (Model Context Protocol) server that connects to your GitHub repositories, detects API changes, and provides context for Cursor to automatically generate test cases.
Features
š Detect API Changes: Compare branches/commits to find new or modified API endpoints
š Multi-Service Support: Configure multiple services with their automation repos
š GitHub Integration: Fetch file contents, commits, PRs directly from GitHub
š Test Templates: Get starter templates for REST, GraphQL, and gRPC APIs
š¤ Cursor Integration: Provides tools that Cursor can use to understand your API changes
Configured Services
This MCP server is configured for the following Bliklan services:
Service | Repository |
bliklan-campaign-management | gdncomm/bliklan-campaign-management |
bliklan-tracker-aggregator | gdncomm/bliklan-tracker-aggregator |
bliklan-compute-engine | gdncomm/bliklan-compute-engine |
bliklan-credit | gdncomm/bliklan-credit |
bliklan-ads-engine | gdncomm/bliklan-ads-engine |
Prerequisites
Node.js 18+ (we recommend using nvm)
npm (comes with Node.js)
GitHub Fine-Grained Personal Access Token (required for gdncomm org)
Cursor IDE
Check Your Node.js Version
node --version
# Should be v18.x.x or higher (v20.x or v21.x recommended)If you're using an older version, install a newer one via nvm:
nvm install 21
nvm use 21
nvm alias default 21Quick Start
Step 1: Clone the Repository
git clone <repository-url>
cd api-test-mcp-serverStep 2: Install Dependencies
npm installStep 3: Build the Server
npm run buildThis creates the dist/index.js file that Cursor will run.
Step 4: Create a GitHub Fine-Grained Token
ā ļø Important: The gdncomm organization requires a fine-grained personal access token (classic tokens won't work).
Click "Generate new token"
Configure:
Token name:
api-test-mcp-serverExpiration: Choose appropriate duration
Resource owner: Select
gdncommorganizationRepository access: Select "Only select repositories" ā choose the repos you need
Permissions (Repository permissions):
Contents: Read-only
Metadata: Read-only
Pull requests: Read-only
Commit statuses: Read-only
Click Generate token
Copy the token (starts with
github_pat_)
Step 5: Configure Cursor MCP
Create or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"api-test-server": {
"command": "/path/to/your/node",
"args": ["/path/to/api-test-mcp-server/dist/index.js"],
"env": {
"GITHUB_TOKEN": "github_pat_your_token_here",
"DEFAULT_BASE_BRANCH": "master",
"SERVICES_CONFIG": "[{\"name\":\"bliklan-campaign-management\",\"repoOwner\":\"gdncomm\",\"repoName\":\"bliklan-campaign-management\",\"automationRepoPath\":\"/Users/yourname/automation-repos/bliklan-campaign-management\",\"apiPatterns\":[\"**/controllers/**\",\"**/routes/**\",\"**/api/**\",\"**/*Controller*\",\"**/*Router*\"]},{\"name\":\"bliklan-tracker-aggregator\",\"repoOwner\":\"gdncomm\",\"repoName\":\"bliklan-tracker-aggregator\",\"automationRepoPath\":\"/Users/yourname/automation-repos/bliklan-tracker-aggregator\",\"apiPatterns\":[\"**/controllers/**\",\"**/routes/**\",\"**/api/**\",\"**/*Controller*\",\"**/*Router*\"]},{\"name\":\"bliklan-compute-engine\",\"repoOwner\":\"gdncomm\",\"repoName\":\"bliklan-compute-engine\",\"automationRepoPath\":\"/Users/yourname/automation-repos/bliklan-compute-engine\",\"apiPatterns\":[\"**/controllers/**\",\"**/routes/**\",\"**/api/**\",\"**/*Controller*\",\"**/*Router*\"]},{\"name\":\"bliklan-credit\",\"repoOwner\":\"gdncomm\",\"repoName\":\"bliklan-credit\",\"automationRepoPath\":\"/Users/yourname/automation-repos/bliklan-credit\",\"apiPatterns\":[\"**/controllers/**\",\"**/routes/**\",\"**/api/**\",\"**/*Controller*\",\"**/*Router*\"]},{\"name\":\"bliklan-ads-engine\",\"repoOwner\":\"gdncomm\",\"repoName\":\"bliklan-ads-engine\",\"automationRepoPath\":\"/Users/yourname/automation-repos/bliklan-ads-engine\",\"apiPatterns\":[\"**/controllers/**\",\"**/routes/**\",\"**/api/**\",\"**/*Controller*\",\"**/*Router*\"]}]"
}
}
}
}Important: Find Your Node Path
If you're using nvm, you need to use the full path to node:
# Find your node path
which node
# Example output: /Users/yourname/.nvm/versions/node/v21.5.0/bin/nodeUse this full path in the "command" field.
Update Paths
Replace in the config:
/path/to/your/nodeā Your actual node path (fromwhich node)/path/to/api-test-mcp-serverā Where you cloned this repo/Users/yourname/automation-repos/ā Your actual automation repos pathgithub_pat_your_token_hereā Your actual GitHub token
Step 6: Restart Cursor
Completely quit Cursor (Cmd+Q on macOS) and reopen it. The MCP server only loads at startup.
Step 7: Verify Setup
In Cursor, check Settings ā Features ā MCP Servers. You should see api-test-server with a green status.
If you see a red status, check the error message:
"Cannot use import statement outside a module" ā Wrong Node.js version (need 18+)
"Service not found" ā SERVICES_CONFIG not set correctly
"Bad credentials" ā GitHub token is invalid or expired
Available Tools
Once configured, you can ask Cursor to use these tools:
Tool | Description | Example |
| List all configured services | "List all services" |
| Get recent commits for a service | "Get recent commits for bliklan-campaign-management" |
| Get API changes between branches | "Get API changes between master and feature/xyz" |
| Get full content of an API file | "Get the StoreAdsCampaignController.java file" |
| Get PRs for a service | "Show open PRs for bliklan-credit" |
| Extract endpoint definitions from a file | "Analyze endpoints in UserController.java" |
| Get a test template for REST/GraphQL/gRPC | "Get a REST test template" |
| Compare branches and summarize changes | "Compare master and release/SP22" |
Usage Examples
Example 1: List Services and Get Recent Commits
Use the api-test-server to list services, then get recent commits for bliklan-campaign-managementExample 2: Find API Logic
Use the api-test-server to find the logic for storeads/save-campaign API in bliklan-campaign-managementExample 3: Check Recent Changes
Get the recent commits for bliklan-credit service and show me any API-related changesExample 4: Analyze API File
Use the MCP server to get the content of src/main/java/com/gdn/bliklan/campaignmanagement/controller/StoreAdsCampaignController.java from bliklan-campaign-managementExample 5: Compare Branches
Compare master and release/SP22_RELEASE_01 branches in bliklan-campaign-management to find API changesTesting the MCP Server
Simply ask Cursor to use the tools (this is the normal workflow).
MCP Server Shows Red Status
Check Cursor Developer Tools: Help ā Toggle Developer Tools ā Console
Look for error messages related to "mcp" or "api-test-server"
Verify the node path is correct (use full path from
which node)Make sure the dist/index.js file exists (run
npm run build)
No API Changes Detected
Verify
apiPatternsmatch your file structureCheck if the branches you're comparing exist
Try broader patterns like
**/*.javafor testing
Adding New Services
To add a new service, update the SERVICES_CONFIG in ~/.cursor/mcp.json:
or copy the file cp /Users/ruthsan/api-test-mcp-server/cursor-mcp-config.json ~/.cursor/mcp.json
{
"name": "new-service-name",
"repoOwner": "gdncomm",
"repoName": "new-service-repo",
"automationRepoPath": "/path/to/automation/new-service",
"apiPatterns": [
"**/controllers/**",
"**/routes/**",
"**/api/**",
"**/*Controller*"
]
}Then restart Cursor.
API Patterns
Configure apiPatterns to match your codebase structure:
For Spring Boot (Java):
"apiPatterns": [
"**/controller/**",
"**/rest/**",
"**/*Controller.java",
"**/*Resource.java"
]Development
Run in Development Mode
npm run devWatch for Changes
npm run watchBuild
npm run buildProject Structure
api-test-mcp-server/
āāā src/
ā āāā index.ts # Main MCP server implementation
āāā dist/ # Compiled JavaScript (generated)
āāā package.json # Dependencies and scripts
āāā tsconfig.json # TypeScript configuration
āāā cursor-mcp-config.json # Example Cursor MCP configuration
āāā config.example.json # Example service configuration
āāā README.md # This fileLatest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gdncomm-ruthsan-r/code-read-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server