Python Docs Server
by AnuragRai017
Verified
- src
#!/usr/bin/env node
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ErrorCode,
ListToolsRequestSchema,
McpError,
} from '@modelcontextprotocol/sdk/types.js';
const server = new Server(
{
name: 'python-docs-server',
version: '0.1.0',
},
{
capabilities: {
resources: {},
tools: {},
},
}
);
const isValidGetPythonDocsArgs = (args: any): args is { query: string } =>
typeof args === 'object' && args !== null && typeof args.query === 'string';
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'get_python_docs',
description: 'Get Python documentation for a given query',
inputSchema: {
type: 'object',
properties: {
query: {
type: 'string',
description: 'The search query for Python documentation',
},
},
required: ['query'],
},
},
],
}));
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name !== 'get_python_docs') {
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`);
}
if (!isValidGetPythonDocsArgs(request.params.arguments)) {
throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments');
}
const query = request.params.arguments.query;
try {
const searchResult = await (server as any).callMcpTool({
serverName: 'brave-search',
toolName: 'search_web',
arguments: {
query: `python documentation ${query}`,
count: 3,
},
});
if (searchResult.isError) {
return {
content: [{
type: 'text',
text: `Error searching for documentation: ${searchResult.content[0].text}`
}],
isError: true,
}
}
const results = searchResult.content[0].text;
return {
content: [
{
type: 'text',
text: `Search results for "${query}":\n${results}`,
},
],
};
} catch (error: any) {
return {
content: [{
type: 'text',
text: `Error: ${error.message}`
}],
isError: true,
}
}
});
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('Python docs MCP server running on stdio');
}
main().catch(console.error);