Skip to main content
Glama
prathamesh-git9

mcp-servers (Six production-minded MCP servers)

Six production-minded MCP servers

CI Python 3.11–3.13 MCP SDK 2.0

60-second quickstart

git clone https://github.com/prathamesh-git9/mcp-servers.git
cd mcp-servers
uv sync --all-packages --dev
uv run grounded-cv-eval
uv run pytest -q

That runs a real BM25 + dense + reciprocal-rank-fusion evaluation and the entire socket-restricted test suite. Each server is directly runnable with uv run grounded-cv, uv run repo-intel, uv run web-research, uv run ats-jobs, uv run outcome-ledger, or uv run coding-workflows.

Related MCP server: open-computer-use

claude_desktop_config.json

Copy this complete block. uvx installs the two required workspace packages from the public repository and caches the environment locally.

{
  "mcpServers": {
    "grounded-cv": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/grounded-cv",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "grounded-cv"
      ]
    },
    "repo-intel": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/repo-intel",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "repo-intel"
      ]
    },
    "web-research": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/web-research",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "web-research"
      ]
    },
    "ats-jobs": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/ats-jobs",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "ats-jobs"
      ]
    },
    "outcome-ledger": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/outcome-ledger",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "outcome-ledger"
      ]
    },
    "coding-workflows": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/coding-workflows",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "coding-workflows"
      ]
    }
  }
}

.mcp.json

{
  "mcpServers": {
    "grounded-cv": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/grounded-cv",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "grounded-cv"
      ]
    },
    "repo-intel": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/repo-intel",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "repo-intel"
      ]
    },
    "web-research": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/web-research",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "web-research"
      ]
    },
    "ats-jobs": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/ats-jobs",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "ats-jobs"
      ]
    },
    "outcome-ledger": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/outcome-ledger",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "outcome-ledger"
      ]
    },
    "coding-workflows": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/coding-workflows",
        "--with",
        "git+https://github.com/prathamesh-git9/mcp-servers.git#subdirectory=packages/common",
        "coding-workflows"
      ]
    }
  }
}

Architecture

flowchart LR
    C[Claude Desktop / MCP client] -->|JSON-RPC over stdio| G[grounded-cv]
    C --> R[repo-intel]
    C --> W[web-research]
    C --> A[ats-jobs]
    C --> O[outcome-ledger]
    C --> CW[coding-workflows]

    G --> H[BM25 + 384-D dense vectors + RRF]
    G --> P[(Committed structured profile)]
    R --> GH[Public GitHub REST API]
    W --> RB[URL policy + robots.txt + extractor]
    A --> ATS[Six public ATS APIs]
    O --> SQ[(SQLite WAL / FULL sync)]
    CW --> RC[Local repo structure + configured quality gates]

    G & R & W & A & O & CW --> CORE["Shared typed failures, deadlines, redaction,<br/>rate limiting and cache"]

The repository is a seven-package workspace: one small shared core and one independently installable package for each server. Every server exposes tools, resources, and at least one prompt over the official MCP Python SDK's stdio transport.

What a hiring manager can verify quickly

Server

One-line proof of work

grounded-cv

Structured profile resources, genuine hybrid RAG, exact-span citations, and conservative claim verification.

repo-intel

Read-only repository, language, topic, README, CI, commit, issue, and code-search intelligence through public GitHub APIs.

web-research

Search plus main-content extraction with fail-closed robots checks, SSRF protection, redirect/size limits, and per-host pacing.

ats-jobs

One typed model across public Greenhouse, Lever, Ashby, Workable, SmartRecruiters, and Recruitee boards.

outcome-ledger

Durable deterministic idempotency keys and an honest outcome_unknown state after a simulated process crash.

coding-workflows

Unified-diff review, dependency-aware planning, bounded repo gates, traceback-to-file triage, and conventional commit synthesis.

The complete machine-readable catalog is pinned at docs/manifest.json, and the detailed protocol contract is in docs/API.md.

Grounded CV: demonstrable hybrid RAG

The corpus uses atomic evidence chunking: one independently verifiable fact per chunk, headings retained as metadata, no chunk crossing a section boundary. This makes every returned span independently citable and prevents a partially relevant paragraph from laundering an unsupported claim.

Two independent rankings run for every query:

  1. Okapi BM25 over normalized terms and documented synonym expansion.

  2. Cosine similarity over deterministic 384-dimensional dense feature-hash vectors built from words and character trigrams.

Reciprocal rank fusion combines both lists with RRF(k=60). The verifier then checks claim-token coverage and numeric consistency against the retrieved spans. Supported claims receive exact quotes; unsupported claims receive no citations.

Committed offline fixture, 10 queries, k=5:

Metric

Result

recall@5

1.0000

MRR

1.0000

nDCG@5

0.9920

Reproduce it with uv run grounded-cv-eval. The fixture is committed beside the profile, and CI executes the same harness assertions without downloading a model or calling a network service.

Trust and failure contract

  • Every tool has generated input and structured output JSON Schemas backed by Pydantic v2.

  • Every call has both an MCP-level deadline and an upstream HTTP timeout.

  • Public upstream failures become typed values (timeout, blocked, not_found, rate_limited, upstream_error, parse_error, and others); low-level exceptions never cross a tool boundary.

  • GitHub, web, and ATS text is explicitly marked content_is_untrusted; prompts instruct clients not to execute instructions found inside it.

  • Coding diffs, tracebacks, repository text, and gate output are untrusted. Quality gates use shell-free argv execution, credential-reduced environments, and hard deadlines; configured package-manager scripts should run only in repositories the caller trusts.

  • URL credentials, private networks, authenticated scraping, mutation APIs, and secret-shaped ledger fields are rejected. Optional GITHUB_TOKEN improves GitHub rate limits but is never returned or logged.

  • Tests run with outbound sockets disabled except loopback, require no keys, and use protocol clients plus committed provider fixtures.

  • The contract suite drives servers from docs/manifest.json, and a discovery test derives the server list from packages/ on disk and fails when the two disagree. A server added without being declared would otherwise be skipped by every guard above while the suite still reported success.

Development

uv sync --all-packages --dev
uv run ruff check .
uv run ruff format --check .
uv run pytest

CI runs those three gates on Python 3.11, 3.12, and 3.13. Licensed under MIT.

Available Tools

2 tools
lookupC

Retrieve CV evidence with BM25+dense reciprocal-rank fusion.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsNo
queryYes
statusYes
failureNo
sourcesNo
retrievalNo
duration_msYes
content_is_untrustedNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the retrieval method (BM25+dense reciprocal-rank fusion) but does not state whether the operation is read-only, what side effects or requirements exist (e.g., permissions, rate limits), or the nature of the output. The word 'Retrieve' implies read-only, but this is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core action. It avoids unnecessary filler, and each word contributes to conveying the purpose, though the technical detail might be considered slightly niche.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters) and presence of an output schema, the description technically covers the basic retrieval action. However, it lacks crucial context such as usage guidance relative to the sibling tool and explicit safety disclosure (since no annotations exist), making it incomplete for an agent to fully understand the tool's role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no explanation of the parameters ('topic' and 'limit'). While the schema defines types and constraints, the description does not clarify what 'topic' means in the context of CV evidence or how 'limit' affects results, failing to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Retrieve CV evidence') and identifies the resource (evidence). It distinguishes from the sibling tool 'verify_claim' by focusing on retrieval rather than verification, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus 'verify_claim' or any other alternative. It does not state prerequisites, exclusions, or typical use cases beyond the basic action of retrieval, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_claimC

Verify claims and attach exact spans to each supported one.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
textYes
statusYes
failureNo
sourcesNo
assessmentsNo
duration_msYes
content_is_untrustedNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'attach exact spans', hinting at an output behavior, but does not disclose whether the operation is read-only, whether external systems are involved, or what happens when claims are unsupported (e.g., are they ignored or flagged?). This is insufficient for a tool that likely performs an analysis task.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler words. It is front-loaded with the main verb and noun. However, its brevity contributes to under-specification; while structurally clean, it omits crucial detail that would make the content value-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return value structure is covered, but the description still lacks operational context. It does not explain what 'supported' means, how claims are identified, whether multiple claims are handled, or the relationship with 'lookup'. Given the tool's potential complexity (verification and span attachment), the description is incomplete for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'text' only by type and length constraints, and schema description coverage is 0%. The description does not mention the parameter at all, leaving the meaning of 'text' completely ambiguous. The description should explain what kind of text is expected (e.g., a document, a sentence, a claim list) and how it is used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('verify') and a specific target ('claims') with a distinctive outcome ('attach exact spans'). It distinguishes from the sibling 'lookup' by focusing on verification rather than retrieval, though 'claims' and 'supported one' remain somewhat vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus the sibling 'lookup'. There is no mention of prerequisites, typical input cases, or exclusions. The description implies a verification/annotation use-case but does not explicitly state it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedlookup
    • First observedverify_claim

TDQS

B3.1/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: lookup retrieves evidence, while verify_claim checks claims against that evidence. There is no ambiguity or overlap in their roles.

Naming Consistency4/5

Both tool names are imperative verbs, but 'lookup' is a single word while 'verify_claim' follows a verb_noun pattern. This is a minor deviation, and the names are still predictable and readable.

Tool Count3/5

With only two tools, the set feels slightly thin for a production-oriented server. However, the narrow scope of evidence retrieval and verification may justify the small number, making it borderline appropriate.

Completeness4/5

The two tools form a logical pipeline: retrieve evidence first, then verify claims against it. Minor gaps might exist, such as a way to browse or filter evidence sources, but the core workflow appears covered.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/prathamesh-git9/mcp-servers'

If you have feedback or need assistance with the MCP directory API, please join our Discord server